subtree(users/wpcarro): docking briefcase at '24f5a642'
git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15cgit-subtree-split:24f5a642afChange-Id: I6105b3762b79126b3488359c95978cadb3efa789
This commit is contained in:
commit
019f8fd211
766 changed files with 175420 additions and 0 deletions
24
users/wpcarro/tools/monzo_ynab/ynab/client.go
Normal file
24
users/wpcarro/tools/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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
52
users/wpcarro/tools/monzo_ynab/ynab/serde.go
Normal file
52
users/wpcarro/tools/monzo_ynab/ynab/serde.go
Normal file
|
|
@ -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)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue