Skip to content

Commit

Permalink
Update dominos
Browse files Browse the repository at this point in the history
  • Loading branch information
noahpistilli committed Nov 15, 2023
1 parent e079250 commit 8ed1589
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 9 deletions.
13 changes: 7 additions & 6 deletions basket.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
)

const (
DoesAuthKeyExist = `SELECT EXISTS(SELECT 1 FROM "user" WHERE "user".wii_id = $1 AND "user".auth_key IS NOT NULL)`
QueryUserBasket = `SELECT "user".basket, "user".auth_key FROM "user" WHERE "user".wii_id = $1 LIMIT 1`
QueryUserForOrder = `SELECT "user".basket, "user".price, "user".order_id FROM "user" WHERE "user".wii_id = $1 LIMIT 1`
InsertAuthkey = `UPDATE "user" SET auth_key = $1 WHERE wii_id = $2`
Expand All @@ -29,15 +30,15 @@ func authKey(r *Response) {
}

// First we query to determine if the user already has an auth key. If they do, reset the basket.
var _authKey string
row := pool.QueryRow(context.Background(), QueryUserBasket, r.request.Header.Get("X-WiiID"))
err = row.Scan(nil, &_authKey)
var authExists bool
row := pool.QueryRow(context.Background(), DoesAuthKeyExist, r.request.Header.Get("X-WiiID"))
err = row.Scan(&authExists)
if err != nil {
r.ReportError(err, http.StatusInternalServerError, nil)
return
}

if _authKey != "" {
if authExists {
_, err = pool.Exec(context.Background(), ClearBasket, "", "", "[]", r.request.Header.Get("X-WiiID"))
if err != nil {
r.ReportError(err, http.StatusInternalServerError, nil)
Expand Down Expand Up @@ -185,8 +186,8 @@ func basketAdd(r *Response) {

func basketList(r *Response) {
areaCode := r.request.URL.Query().Get("areaCode")
address := "132 Cornelius Parkway"
postalCode := "M6L2K5"
address := r.request.Header.Get("X-Address")
postalCode := r.request.Header.Get("X-Postalcode")

var basketStr string
row := pool.QueryRow(context.Background(), QueryUserBasket, r.request.Header.Get("X-WiiID"))
Expand Down
4 changes: 4 additions & 0 deletions dominos/country.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ type Dominos struct {
jsonResponse *map[string]any
}

func (d *Dominos) JsonResponse() *map[string]any {
return d.jsonResponse
}

func NewDominos(db *pgxpool.Pool, r *http.Request) (*Dominos, error) {
d := Dominos{}
areaCode := r.URL.Query().Get("areaCode")
Expand Down
26 changes: 25 additions & 1 deletion dominos/dominos.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ func (d *Dominos) StoreLookup(zipCode, address string) ([]Store, error) {
return nil, err
}

d.jsonResponse = &jsonData

var stores []Store
for i, storeData := range jsonData["Stores"].([]any) {
if i == 5 {
Expand Down Expand Up @@ -79,6 +81,8 @@ func (d *Dominos) AddressLookup(zipCode, address string) (*User, error) {
return nil, err
}

d.jsonResponse = &jsonData

if jsonData["Status"].(float64) != 0 && jsonData["Status"].(float64) != 1 {
return nil, fmt.Errorf("domino's returned a status code of %.0f", jsonData["Status"].(float64))
}
Expand Down Expand Up @@ -116,11 +120,12 @@ func (d *Dominos) GetStoreInfo(storeId string) (*Store, error) {
return nil, err
}

d.jsonResponse = &jsonData

information := ""
if jsonData["LocationInfo"] != nil {
information = jsonData["LocationInfo"].(string)
}


address := wordwrap.WrapString(strings.Replace(jsonData["AddressDescription"].(string), "\n", " ", -1), 38)
for i3, s := range strings.Split(address, "\n") {
Expand Down Expand Up @@ -152,6 +157,7 @@ func (d *Dominos) GetStoreInfo(storeId string) (*Store, error) {

func (d *Dominos) GetMenu(storeId string) ([]MenuCategory, error) {
respChan := make(chan *http.Response)
fmt.Println(fmt.Sprintf("%s/power/store/%s/menu?lang=en&structured=true", d.apiURL, storeId))
go d.sendAsyncGET(fmt.Sprintf("%s/power/store/%s/menu?lang=en&structured=true", d.apiURL, storeId), respChan)

storeResponse := <-respChan
Expand All @@ -164,6 +170,8 @@ func (d *Dominos) GetMenu(storeId string) ([]MenuCategory, error) {
return nil, err
}

d.jsonResponse = &jsonData

var menus []MenuCategory
for _, menuData := range jsonData["Categorization"].(map[string]any)["Food"].(map[string]any)["Categories"].([]any) {
if menuData.(map[string]any)["Name"].(string) == "" {
Expand Down Expand Up @@ -213,6 +221,8 @@ func (d *Dominos) GetItemList(storeId string, menuCode string) ([]Item, error) {
return nil, err
}

d.jsonResponse = &jsonData

var itemNames []string
for _, menuData := range jsonData["Categorization"].(map[string]any)["Food"].(map[string]any)["Categories"].([]any) {
// It is possible that in a past loop we already got the items.
Expand Down Expand Up @@ -308,6 +318,8 @@ func (d *Dominos) GetFoodPrice(storeId string, itemId string) (string, error) {
return "", err
}

d.jsonResponse = &jsonData

return jsonData["Variants"].(map[string]any)[itemId].(map[string]any)["Price"].(string), nil
}

Expand Down Expand Up @@ -436,6 +448,8 @@ func (d *Dominos) AddItem(storeId, itemId, quantity string, extraToppings []Topp
return nil, err
}

d.jsonResponse = &jsonData

defaultToppings := jsonData["Variants"].(map[string]any)[itemId].(map[string]any)["Tags"].(map[string]any)["DefaultToppings"].(string)
defaultSides := jsonData["Variants"].(map[string]any)[itemId].(map[string]any)["Tags"].(map[string]any)["DefaultSides"].(string)

Expand Down Expand Up @@ -509,6 +523,8 @@ func (d *Dominos) GetItemPrice(storeId, itemID string) (string, string, error) {
return "", "", err
}

d.jsonResponse = &jsonData

return jsonData["Variants"].(map[string]any)[itemID].(map[string]any)["Name"].(string), jsonData["Variants"].(map[string]any)[itemID].(map[string]any)["Price"].(string), nil
}

Expand Down Expand Up @@ -572,6 +588,8 @@ func (d *Dominos) GetPrice(user *User) (*Basket, error) {
return nil, err
}

d.jsonResponse = &jsonData

payload["Order"].(map[string]any)["OrderID"] = jsonData["Order"].(map[string]any)["OrderID"].(string)
data, err = json.Marshal(payload)
if err != nil {
Expand All @@ -592,6 +610,8 @@ func (d *Dominos) GetPrice(user *User) (*Basket, error) {
return nil, err
}

d.jsonResponse = &jsonData

// Finally, retrieve order price.
payload["Order"].(map[string]any)["OrderID"] = jsonData["Order"].(map[string]any)["OrderID"].(string)
payload["Order"].(map[string]any)["metaData"] = map[string]string{"orderFunnel": "payments"}
Expand All @@ -614,6 +634,8 @@ func (d *Dominos) GetPrice(user *User) (*Basket, error) {
return nil, err
}

d.jsonResponse = &jsonData

if jsonData["Status"].(float64) != 0 && jsonData["Status"].(float64) != 1 {
return nil, fmt.Errorf("domino's returned a status code of %.0f\nError: %s", jsonData["Status"].(float64), jsonData["StatusItems"].([]any)[0].(map[string]any)["Code"].(string))
}
Expand Down Expand Up @@ -731,6 +753,8 @@ func (d *Dominos) PlaceOrder(info *User) error {
return err
}

d.jsonResponse = &jsonData

if jsonData["Status"].(float64) != 0 && jsonData["Status"].(float64) != 1 {
return fmt.Errorf("domino's returned a status code of %.0f", jsonData["Status"].(float64))
}
Expand Down
4 changes: 2 additions & 2 deletions main_menu.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ func categoryList(r *Response) {
return
}

stores, err := dom.StoreLookup("M6L2K7", "132 Cornelius Parkway")
stores, err := dom.StoreLookup(r.request.Header.Get("X-Postalcode"), r.request.Header.Get("X-Address"))
if err != nil {
r.ReportError(err, http.StatusInternalServerError, dom.JsonResponse())
return
Expand All @@ -52,7 +52,7 @@ func categoryList(r *Response) {
ShopCode: CDATA{storeData.StoreID},
HomeCode: CDATA{1},
Name: CDATA{"Domino's Pizza"},
Catchphrase: CDATA{"Nope"},
Catchphrase: CDATA{storeData.Address},
MinPrice: CDATA{shopData.MinPrice},
Yoyaku: CDATA{1},
Activate: CDATA{"on"},
Expand Down

0 comments on commit 8ed1589

Please sign in to comment.