From 3ab0a009595ef9d12db6109c568dc2396251fa0f Mon Sep 17 00:00:00 2001 From: Eli Ribble Date: Fri, 17 Apr 2026 00:23:34 +0000 Subject: [PATCH] Working path to create addresses in lob --- lob/cmd/address-create/main.go | 43 ++++++++++++++++++++++++++++++++++ lob/lob.go | 25 ++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 lob/cmd/address-create/main.go diff --git a/lob/cmd/address-create/main.go b/lob/cmd/address-create/main.go new file mode 100644 index 00000000..244283fd --- /dev/null +++ b/lob/cmd/address-create/main.go @@ -0,0 +1,43 @@ +package main + +import ( + "context" + "flag" + "log" + "os" + + "github.com/Gleipnir-Technology/nidus-sync/lob" +) + +func main() { + name := flag.String("name", "", "The name of the address") + line1 := flag.String("line1", "", "") + city := flag.String("city", "", "") + state := flag.String("state", "", "") + zip := flag.String("zip", "", "") + + // Parse the flags + flag.Parse() + + key := os.Getenv("LOB_API_KEY") + if key == "" { + log.Println("LOB_API_KEY is empty") + os.Exit(1) + } + + client := lob.NewLob(key) + ctx := context.TODO() + req := lob.RequestAddressCreate{ + AddressLine1: *line1, + AddressCity: *city, + AddressState: *state, + AddressZip: *zip, + Name: *name, + } + addr, err := client.AddressCreate(ctx, req) + if err != nil { + log.Printf("err: %v", err) + os.Exit(2) + } + log.Printf("done. Address: %s", addr.ID) +} diff --git a/lob/lob.go b/lob/lob.go index 6cbc009e..ea6e9f59 100644 --- a/lob/lob.go +++ b/lob/lob.go @@ -59,6 +59,31 @@ type ResponseAddressList struct { CountTotal int `json:"total_count"` } +type RequestAddressCreate struct { + AddressLine1 string `json:"address_line1"` + AddressCity string `json:"address_city"` + AddressState string `json:"address_state"` + AddressZip string `json:"address_zip"` + Name string `json:"name"` +} + +func (l *Lob) AddressCreate(ctx context.Context, req RequestAddressCreate) (Address, error) { + var result Address + resp, err := l.client.R(). + SetBody(req). + SetContext(ctx). + SetContentType("application/json"). + SetResult(&result). + SetPathParam("urlBase", l.urlBaseApi). + Post("https://{urlBase}/v1/addresses") + if err != nil { + return result, fmt.Errorf("address list post: %w", err) + } + if !resp.IsSuccess() { + return result, fmt.Errorf("not successful") + } + return result, nil +} func (l *Lob) AddressList(ctx context.Context) ([]Address, error) { var result ResponseAddressList