Skip to content

Instantly share code, notes, and snippets.

@johnvilsack
Created June 25, 2014 20:22
Show Gist options
  • Save johnvilsack/4828886134bf0081357e to your computer and use it in GitHub Desktop.
Save johnvilsack/4828886134bf0081357e to your computer and use it in GitHub Desktop.
Sample Go Application that grabs Item data from custom call
package main
import (
"encoding/json"
"flag"
"fmt"
"io/ioutil"
"net/http"
"strconv"
)
type apiItem interface {
apiGetItem() queryItem
}
type queryItem struct {
Query string `json:"query"`
Count int `json:"count"`
Objects []struct {
ITEM_ID string `json:"ITEM_ID"`
UPC string `json:"UPC"`
ITEM_DESC string `json:"ITEM_DESC"`
PROD_CLASS_ID string `json:"PROD_CLASS_ID"`
AVAILABLE string `json:"AVAILABLE"`
GENDER string `json:"GENDER"`
SIZE string `json:"SIZE"`
BRAND string `json:"BRAND"`
YEAR string `json:"YEAR"`
EAN string `json:"EAN"`
BIN string `json:"BIN"`
PRICE_OURPRICE string `json:"PRICE_OURPRICE"`
PRICE_PACKAGE string `json:"PRICE_PACKAGE"`
PRICE_COST string `json:"PRICE_COST"`
LIST_PRICE string `json:"LIST_PRICE"`
FOCUS_WORD string `json:"FOCUS_WORD"`
COLOR string `json:"COLOR"`
REFINESIZE string `json:"REFINESIZE"`
VNDR_ITEM_ID string `json:"VNDR_ITEM_ID"`
COMMITTED_QTY string `json:"COMMITTED_QTY"`
BIN_LOC string `json:"BIN_LOC"`
VENDOR_ID string `json:"VENDOR_ID"`
KIT_FLAG string `json:"KIT_FLAG"`
TAX_EXEMPT string `json:"TAX_EXEMPT"`
ON_ORDER_QTY string `json:"ON_ORDER_QTY"`
EXPCT_DELIVERY string `json:"EXPCT_DELIVERY"`
LEAD_TIME string `json:"LEAD_TIME"`
FIRST_SOLD string `json:"FIRST_SOLD"`
LAST_SOLD string `json:"LAST_SOLD"`
DROP_SHIP string `json:"DROP_SHIP"`
MASTER_STOCK_ID string `json:"MASTER_STOCK_ID"`
CREATED_BY string `json:"CREATED_BY"`
REFINE_SIZE string `json:"REFINE_SIZE"`
COLORC string `json:"COLORC"`
MODEL string `json:"MODEL"`
COLORB string `json:"COLORB"`
UPC_DATE string `json:"UPC_DATE"`
UPC_SOURCE string `json:"UPC_SOURCE"`
UPC_IMPDATE string `json:"UPC_IMPDATE"`
QTY_PICKABLE string `json:"QTY_PICKABLE"`
LAST_EDIT_DATE string `json:"LAST_EDIT_DATE"`
QTY_ON_HAND string `json:"QTY_ON_HAND"`
YTD_UNITS_SOLD string `json:"YTD_UNITS_SOLD"`
MTD_UNITS_SOLD string `json:"MTD_UNITS_SOLD"`
ENTRY_DATE string `json:"ENTRY_DATE"`
ONWEB string `json:"ONWEB"`
WEB_ID string `json:"id"`
WEB_URL_ID string `json:"url_id"`
WEB_IMAGE string `json:"image"`
WEB_VENDOR string `json:"vendor"`
WEB_NAME string `json:"name"`
WEBSHOPCATEGORY string `json:"shopcategory"`
WEB_GENDER string `json:"gender"`
WEB_YEAR string `json:"year"`
WEB_SALE_PRICE string `json:"sale_price"`
} `json:"objects"`
}
func apiGetItem(q string) *queryItem {
requestURL := "http://epoch.app/inventory/apiGetItemInfo.php?q=" + q
getQuery, err := http.Get(requestURL)
if err != nil {
panic(err)
}
defer getQuery.Body.Close()
resultQuery, err := ioutil.ReadAll(getQuery.Body)
if err != nil {
panic(err)
}
payload := &queryItem{}
ok := json.Unmarshal(resultQuery, payload)
if ok != nil {
panic("json.Unmarshall failure")
}
return payload
}
var output string
var argRequest string
func main() {
flag.StringVar(&argRequest, "q", "NaN", "sample text")
flag.Parse()
RequestItem := apiGetItem(argRequest)
if RequestItem.Count <= 0 {
output = argRequest + " Not Found"
} else if RequestItem.Count == 1 {
output = "1 Result Found for " + argRequest + "\n" + RequestItem.Objects[0].ITEM_DESC
} else if RequestItem.Count >= 2 {
output = strconv.Itoa(RequestItem.Count) + " Results Found for " + argRequest + "\n"
for _, v := range RequestItem.Objects {
fmt.Println(v.ITEM_DESC)
}
} else {
panic("Result Failure")
}
fmt.Println(output)
}
{
"query": "MISC01",
"count": 1,
"objects": [
{
"ITEM_ID": "MISC01",
"UPC": "867530900000",
"ITEM_DESC": "MISC ITEM $0-25",
"PROD_CLASS_ID": "MISC",
"AVAILABLE": "999",
"GENDER": "",
"SIZE": "",
"BRAND": "",
"YEAR": "0",
"EAN": "",
"BIN": "",
"PRICE_OURPRICE": "0.00",
"PRICE_PACKAGE": "0",
"PRICE_COST": "0.00",
"LIST_PRICE": "0.00",
"FOCUS_WORD": "",
"COLOR": "Red",
"REFINESIZE": "",
"VNDR_ITEM_ID": "",
"COMMITTED_QTY": "11",
"BIN_LOC": "H",
"VENDOR_ID": "H0",
"KIT_FLAG": "",
"TAX_EXEMPT": "N",
"ON_ORDER_QTY": "0",
"EXPCT_DELIVERY": "",
"LEAD_TIME": "0",
"FIRST_SOLD": "11/05/82",
"LAST_SOLD": "06/25/14",
"DROP_SHIP": "N",
"MASTER_STOCK_ID": "",
"CREATED_BY": "NANCY,11/05/82,14:19,ItemClone",
"REFINE_SIZE": "",
"COLORC": "Red",
"MODEL": "",
"COLORB": "Red",
"UPC_DATE": "",
"UPC_SOURCE": "recheck",
"UPC_IMPDATE": "2012-03-23",
"QTY_PICKABLE": "999",
"LAST_EDIT_DATE": "06/25/14",
"QTY_ON_HAND": "999",
"YTD_UNITS_SOLD": "371",
"MTD_UNITS_SOLD": "140",
"ENTRY_DATE": "11/05/82",
"ONWEB": "FALSE"
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment