Begin work on YNAB client
After reading these docs https://api.youneedabudget.com/v1#/Transactions/createTransaction I successfully made a request to post a transaction to my YNAB account. Hastily created a client.go that doesn't contain much at the moment.
This commit is contained in:
parent
2e719d1174
commit
e223adfec5
4 changed files with 71 additions and 2 deletions
|
@ -8,4 +8,6 @@ source_up
|
|||
export monzo_client_id="$(pass show finance/monzo/client-id)"
|
||||
export monzo_client_secret="$(pass show finance/monzo/client-secret)"
|
||||
export ynab_personal_access_token="$(pass show finance/youneedabudget.com/personal-access-token)"
|
||||
export ynab_account_id="$(pass show finance/youneedabudget.com/personal-access-token)"
|
||||
export ynab_budget_id="$(pass show finance/youneedabudget.com/budget-id)"
|
||||
eval "$(lorri direnv)"
|
||||
|
|
|
@ -13,10 +13,31 @@ import (
|
|||
"fmt"
|
||||
)
|
||||
|
||||
var (
|
||||
ynabAccountID = os.Getenv("ynab_account_id")
|
||||
)
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Business Logic
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
func main() {
|
||||
fmt.Println("To be implemented...")
|
||||
// Convert a Monzo transaction struct, `tx`, into a YNAB transaction struct.
|
||||
func toYnab(tx monzoSerde.Transaction) ynabSerde.Transaction {
|
||||
return ynabSerde.Transaction{
|
||||
Id: tx.Id,
|
||||
Date: tx.Created,
|
||||
Amount: tx.Amount,
|
||||
Memo: tx.Notes,
|
||||
AccountId: ynabAccountID,
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
txs := monzo.TransactionsLast24Hours()
|
||||
var ynabTxs []ynabSerde.Transaction{}
|
||||
for tx := range txs {
|
||||
append(ynabTxs, toYnab(tx))
|
||||
}
|
||||
ynab.PostTransactions(ynabTxs)
|
||||
os.Exit(0)
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
:ynab = https://api.youneedabudget.com/v1
|
||||
:ynab-access-token := (getenv "ynab_personal_access_token")
|
||||
:ynab-budget-id := (getenv "ynab_budget_id")
|
||||
:ynab-account-id := (getenv "ynab_account_id")
|
||||
|
||||
# Test
|
||||
GET :ynab/budgets
|
||||
|
@ -11,6 +12,27 @@ Authorization: Bearer :ynab-access-token
|
|||
|
||||
# List transactions
|
||||
GET :ynab/budgets/:ynab-budget-id/transactions
|
||||
Authorization: Bearer :ynab-access-token
|
||||
|
||||
# Post transactions
|
||||
POST :ynab/budgets/:ynab-budget-id/transactions
|
||||
Authorization: Bearer :ynab-access-token
|
||||
Content-Type: application/json
|
||||
{
|
||||
"transactions": [
|
||||
{
|
||||
"account_id": ":ynab-account-id",
|
||||
"date": "2019-12-30",
|
||||
"amount": 10000,
|
||||
"payee_name": "Richard Stallman",
|
||||
"memo": "Not so free software after all...",
|
||||
"cleared": "cleared",
|
||||
"approved": true,
|
||||
"flag_color": "red",
|
||||
"import_id": "xyz-123"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# Monzo
|
||||
|
|
24
monzo_ynab/ynab/client.go
Normal file
24
monzo_ynab/ynab/client.go
Normal file
|
@ -0,0 +1,24 @@
|
|||
package client
|
||||
|
||||
import (
|
||||
"serde"
|
||||
)
|
||||
|
||||
// See requests.txt for more details.
|
||||
func PostTransactions(accountID string, txs []serde.Transaction{}) error {
|
||||
return map[string]string{
|
||||
"transactions": [
|
||||
{
|
||||
"account_id": accountID,
|
||||
"date": "2019-12-30",
|
||||
"amount": 10000,
|
||||
"payee_name": "Richard Stallman",
|
||||
"memo": "Not so free software after all...",
|
||||
"cleared": "cleared",
|
||||
"approved": true,
|
||||
"flag_color": "red",
|
||||
"import_id": "xyz-123"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue