about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-02-09T19·48+0000
committerWilliam Carroll <wpcarro@gmail.com>2020-02-10T10·06+0000
commit323aa41e0fe251189b68d6eaa13de2d58900d838 (patch)
tree44d6d342cd0bf014b0b469efecbf09ceba34bde5
parentc83594fb5a30f0a9cdcf9cb0b58a8e1040d7fa78 (diff)
Sketch Monzo client
None of this code is functional at the moment. I'm just writing some ideas of
how I'd like to work.
-rw-r--r--monzo_ynab/monzo/client.go52
1 files changed, 52 insertions, 0 deletions
diff --git a/monzo_ynab/monzo/client.go b/monzo_ynab/monzo/client.go
new file mode 100644
index 000000000000..8c6c41e29f40
--- /dev/null
+++ b/monzo_ynab/monzo/client.go
@@ -0,0 +1,52 @@
+package monzoClient
+
+import (
+	"fmt"
+	"log"
+	"monzoSerde"
+	"net/http"
+	"net/url"
+	"strings"
+	"time"
+	"tokens"
+	"utils"
+)
+
+const (
+	accountID = "pizza"
+)
+
+type Client struct{}
+
+// Ensure that the token server is running and return a new instance of a Client
+// struct.
+func Create() *Client {
+	tokens.StartServer()
+	time.Sleep(time.Second * 1)
+	return &Client{}
+}
+
+// Returns a slice of transactions from the last 24 hours.
+func (c *Client) Transactions24Hours() []monzoSerde.Transaction {
+	token := tokens.AccessToken()
+	form := url.Values{"account_id": {accountID}}
+	client := http.Client{}
+	req, _ := http.NewRequest("POST", "https://api.monzo.com/transactions",
+		strings.NewReader(form.Encode()))
+	req.Header.Add("Authorization", fmt.Sprintf("Bearer %s", token))
+	req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
+	req.Header.Add("User-Agent", "monzo-ynab")
+	res, err := client.Do(req)
+
+	utils.DebugRequest(req)
+	utils.DebugResponse(res)
+
+	if err != nil {
+		utils.DebugRequest(req)
+		utils.DebugResponse(res)
+		log.Fatal(err)
+	}
+	defer res.Body.Close()
+
+	return []monzoSerde.Transaction{}
+}