Optimizing is difficult: I like flat hierarchies because I don't like directory-hopping, but I also would like a cleaner root for my mono-repo. Bombs away! Well it's that time again, folks: spring cleaning! Here I am musing about a few things that bother me: - Should I use kebab-case or snake_case? - It feels ~confusing to have //tools and //utils. What a //projects? Isn't everything a project? *sigh*
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
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{}
 | 
						|
}
 |