From 64654d1d6d1f36a20e00ee6cdc3866ff009c3a0a Mon Sep 17 00:00:00 2001 From: William Carroll Date: Sun, 9 Feb 2020 13:47:48 +0000 Subject: Create gopkgs directory for golang libs - Created a gopkgs directory and registered it with default.nix's readTree - Moved monzo_ynab/utils -> gopkgs - Consumed utils.go in main.go - Renamed monzo_ynab -> job --- default.nix | 2 ++ gopkgs/utils/default.nix | 11 ++++++++++ gopkgs/utils/utils.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++ monzo_ynab/default.nix | 10 --------- monzo_ynab/job.nix | 16 ++++++++++++++ monzo_ynab/main.go | 10 +++------ monzo_ynab/utils.go | 49 ------------------------------------------ 7 files changed, 88 insertions(+), 66 deletions(-) create mode 100644 gopkgs/utils/default.nix create mode 100644 gopkgs/utils/utils.go delete mode 100644 monzo_ynab/default.nix create mode 100644 monzo_ynab/job.nix delete mode 100644 monzo_ynab/utils.go diff --git a/default.nix b/default.nix index ff4f40d8f943..74268c803961 100644 --- a/default.nix +++ b/default.nix @@ -20,6 +20,8 @@ let localPkgs = readTree: { blog = readTree ./blog; lisp = readTree ./lisp; + gopkgs = readTree ./gopkgs; + monzo_ynab = readTree ./monzo_ynab; third_party = readTree ./third_party; }; in fix(self: { diff --git a/gopkgs/utils/default.nix b/gopkgs/utils/default.nix new file mode 100644 index 000000000000..d92b82ca4d03 --- /dev/null +++ b/gopkgs/utils/default.nix @@ -0,0 +1,11 @@ +{ + depot ? import {}, + ... +}: + +depot.buildGo.package { + name = "utils"; + srcs = [ + ./utils.go + ]; +} diff --git a/gopkgs/utils/utils.go b/gopkgs/utils/utils.go new file mode 100644 index 000000000000..24a01cea9d1d --- /dev/null +++ b/gopkgs/utils/utils.go @@ -0,0 +1,56 @@ +// Some utility functions to tidy up my Golang. +package utils + +import ( + "log" + "io/ioutil" + "net/http" + "net/http/httputil" +) + +// Call log.Fatal with `err` when it's not nil. +func FailOn(err error) { + if err != nil { + log.Fatal(err) + } +} + +// Make a simple GET request to `url`. Fail if anything returns an error. I'd +// like to accumulate a library of these, so that I can write scrappy Go +// quickly. For now, this function just returns the body of the response back as +// a string. +func SimpleGet(url string, headers map[string]string, debug bool) string { + client := &http.Client{} + req, err := http.NewRequest("GET", url, nil) + if err != nil { + log.Fatal(err) + } + for k, v := range headers { + req.Header.Add(k, v) + } + + res, err := client.Do(req) + if err != nil { + log.Fatal(err) + } + defer res.Body.Close() + + if debug { + bytes, _ := httputil.DumpRequest(req, true) + log.Println(string(bytes)) + bytes, _ = httputil.DumpResponse(res, true) + log.Println(string(bytes)) + } + + if res.StatusCode == http.StatusOK { + bytes, err := ioutil.ReadAll(res.Body) + if err != nil { + log.Fatal(err) + } + return string(bytes) + } else { + log.Println(res) + log.Fatalf("HTTP status code of response not OK: %v\n", res.StatusCode) + return "" + } +} diff --git a/monzo_ynab/default.nix b/monzo_ynab/default.nix deleted file mode 100644 index 735029bb1808..000000000000 --- a/monzo_ynab/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ depot ? import {}, ... }: - -depot.buildGo.program { - name = "monzo_ynab"; - srcs = [ - ./utils.go - ./main.go - ./monzo.go - ]; -} diff --git a/monzo_ynab/job.nix b/monzo_ynab/job.nix new file mode 100644 index 000000000000..f6cb78789000 --- /dev/null +++ b/monzo_ynab/job.nix @@ -0,0 +1,16 @@ +{ + depot ? import {}, + briefcase ? import {}, + ... +}: + +depot.buildGo.program { + name = "job"; + srcs = [ + ./main.go + ]; + deps = with briefcase.gopkgs; [ + kv + utils + ]; +} diff --git a/monzo_ynab/main.go b/monzo_ynab/main.go index 1709ffda786e..10dc9f3effe5 100644 --- a/monzo_ynab/main.go +++ b/monzo_ynab/main.go @@ -13,7 +13,6 @@ import ( "bytes" "encoding/json" "fmt" - "io/ioutil" "log" "net/http" "net/http/httputil" @@ -21,6 +20,7 @@ import ( "strings" "os" "os/exec" + "utils" ) //////////////////////////////////////////////////////////////////////////////// @@ -78,9 +78,7 @@ func getTokens(code string) *Tokens { "redirect_uri": {redirectURI}, "code": {code}, }) - if err != nil { - log.Fatal(err) - } + utils.FailOn(err) defer res.Body.Close() payload := &accessTokenResponse{} json.NewDecoder(res.Body).Decode(payload) @@ -136,9 +134,7 @@ func authorize() { req, _ := http.NewRequest("POST", "http://localhost:4242/set-tokens", bytes.NewBuffer(payload)) req.Header.Set("Content-Type", "application/json") _, err := client.Do(req) - if err != nil { - log.Fatal(err) - } + utils.FailOn(err) } // Retrieves the access token from the tokens server. diff --git a/monzo_ynab/utils.go b/monzo_ynab/utils.go deleted file mode 100644 index 9b8843f24a77..000000000000 --- a/monzo_ynab/utils.go +++ /dev/null @@ -1,49 +0,0 @@ -package main - -import "log" - -func failOn(err error) { - if err != nil { - log.Fatal(err) - } -} - -// Make a simple GET request to `url`. Fail if anything returns an error. I'd -// like to accumulate a library of these, so that I can write scrappy Go -// quickly. For now, this function just returns the body of the response back as -// a string. -func simpleGet(url string, headers map[string]string, debug bool) string { - client := &http.Client{} - req, err := http.NewRequest("GET", url, nil) - if err != nil { - log.Fatal(err) - } - for k, v := range headers { - req.Header.Add(k, v) - } - - res, err := client.Do(req) - if err != nil { - log.Fatal(err) - } - defer res.Body.Close() - - if debug { - bytes, _ := httputil.DumpRequest(req, true) - log.Println(string(bytes)) - bytes, _ = httputil.DumpResponse(res, true) - log.Println(string(bytes)) - } - - if res.StatusCode == http.StatusOK { - bytes, err := ioutil.ReadAll(res.Body) - if err != nil { - log.Fatal(err) - } - return string(bytes) - } else { - log.Println(res) - log.Fatalf("HTTP status code of response not OK: %v\n", res.StatusCode) - return "" - } -} -- cgit 1.4.1