diff options
Diffstat (limited to 'users/wpcarro/tools/monzo_ynab/ynab')
-rw-r--r-- | users/wpcarro/tools/monzo_ynab/ynab/client.go | 24 | ||||
-rw-r--r-- | users/wpcarro/tools/monzo_ynab/ynab/serde.go | 52 |
2 files changed, 76 insertions, 0 deletions
diff --git a/users/wpcarro/tools/monzo_ynab/ynab/client.go b/users/wpcarro/tools/monzo_ynab/ynab/client.go new file mode 100644 index 000000000000..b3e9930f621d --- /dev/null +++ b/users/wpcarro/tools/monzo_ynab/ynab/client.go @@ -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" +// } +// ] +// } +// } diff --git a/users/wpcarro/tools/monzo_ynab/ynab/serde.go b/users/wpcarro/tools/monzo_ynab/ynab/serde.go new file mode 100644 index 000000000000..53dd33e83637 --- /dev/null +++ b/users/wpcarro/tools/monzo_ynab/ynab/serde.go @@ -0,0 +1,52 @@ +// This package hosts the serialization and deserialization logic for all of the +// data types with which our application interacts from the YNAB API. +package main + +import ( + "encoding/json" + "fmt" + "time" +) + +type Transaction struct { + Id string `json:"id"` + Date time.Time `json:"date"` + Amount int `json:"amount"` + Memo string `json:"memo"` + Cleared string `json:"cleared"` + Approved bool `json:"approved"` + FlagColor string `json:"flag_color"` + AccountId string `json:"account_id"` + AccountName string `json:"account_name"` + PayeeId string `json:"payeed_id"` + PayeeName string `json:"payee_name"` + CategoryId string `json:"category_id"` + CategoryName string `json:"category_name"` + Deleted bool `json:"deleted"` + // TransferAccountId interface{} `json:"transfer_account_id"` + // TransferTransactionId interface{} `json:"transfer_transaction_id"` + // MatchedTransactionId interface{} `json:"matched_transaction_id"` + // ImportId interface{} `json:"import_id"` + // Subtransactions interface{} `json:"subtransactions"` +} + +// Attempts to encode a YNAB transaction into a string. +func serializeTx(tx *Transaction) (string, error) { + x, err := json.Marshal(tx) + return string(x), err +} + +// Attempts to parse a string encoding a transaction presumably sent from a +// YNAB server. +func deserializeTx(x string) (*Transaction, error) { + target := &Transaction{} + err := json.Unmarshal([]byte(x), target) + return target, err +} + +func main() { + target, _ := deserializeTx(tx) + out, _ := serializeTx(target) + fmt.Println(out) + fmt.Println(ynabOut) +} |