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…
	
	Add table
		Add a link
		
	
		Reference in a new issue