package order /** * Generated by API Builder - https://www.apibuilder.io * Service version: 1.0.1 * User agent: apibuilder app.apibuilder.io/nashtech/order/1.0.1/go_1_5_client */ import ( "bytes" "encoding/json" "errors" "fmt" "html" "io" "net/http" "strconv" ) const BaseUrl = "https://nashtechglobal.com" const UserAgent = "apibuilder app.apibuilder.io/nashtech/order/1.0.1/go_1_5_client" const Version = "1.0.1" const VersionMajor = 1 type Client struct { HttpClient *http.Client Username string Password string BaseUrl string Headers http.Header } type ClientRequestBody struct { contentType string bytes io.Reader } type Error struct { Code string `json:"code"` Message []string `json:"message"` } func ErrorFromMap(data interface{}) Error { b, err := json.Marshal(data) if err == nil { return ErrorFromJson(bytes.NewReader(b)) } else { panic(err) } } func ErrorFromJson(bytes io.Reader) Error { var error_ Error json.NewDecoder(bytes).Decode(&error_) return error_ } type Order struct { Id string `json:"id"` Number string `json:"number"` MerchantId string `json:"merchant_id"` SubmittedAt string `json:"submitted_at"` Total float64 `json:"total"` } func OrderFromMap(data interface{}) Order { b, err := json.Marshal(data) if err == nil { return OrderFromJson(bytes.NewReader(b)) } else { panic(err) } } func OrderFromJson(bytes io.Reader) Order { var order Order json.NewDecoder(bytes).Decode(&order) return order } type OrderForm struct { Total float64 `json:"total"` } func OrderFormFromMap(data interface{}) OrderForm { b, err := json.Marshal(data) if err == nil { return OrderFormFromJson(bytes.NewReader(b)) } else { panic(err) } } func OrderFormFromJson(bytes io.Reader) OrderForm { var orderForm OrderForm json.NewDecoder(bytes).Decode(&orderForm) return orderForm } type OrdersGetByNumberResponse struct { StatusCode int Response *http.Response Error error Order Order } func OrdersGetByNumber(client Client, merchantId string, number string) OrdersGetByNumberResponse { requestUrl := fmt.Sprintf("%s/%s/orders/%s", client.BaseUrl, html.EscapeString(merchantId), html.EscapeString(number)) request, err := buildRequest(client, "GET", requestUrl, ClientRequestBody{}) if err != nil { return OrdersGetByNumberResponse{Error: err} } resp, err := client.HttpClient.Do(request) if err != nil { return OrdersGetByNumberResponse{Error: err} } defer resp.Body.Close() switch resp.StatusCode { case 200: return OrdersGetByNumberResponse{StatusCode: resp.StatusCode, Response: resp, Order: OrderFromJson(resp.Body)} case 401: return OrdersGetByNumberResponse{StatusCode: resp.StatusCode, Response: resp} case 404: return OrdersGetByNumberResponse{StatusCode: resp.StatusCode, Response: resp} default: return OrdersGetByNumberResponse{StatusCode: resp.StatusCode, Response: resp, Error: errors.New(resp.Status)} } } type OrdersPostResponse struct { StatusCode int Response *http.Response Error error Error Error Order Order } func OrdersPost(client Client, merchantId string, orderForm OrderForm) OrdersPostResponse { requestUrl := fmt.Sprintf("%s/%s/orders", client.BaseUrl, html.EscapeString(merchantId)) bodyDocument, err := json.Marshal(orderForm) if err != nil { return OrdersPostResponse{Error: err} } body := ClientRequestBody{contentType: "application/json", bytes: bytes.NewReader(bodyDocument)} request, err := buildRequest(client, "POST", requestUrl, body) if err != nil { return OrdersPostResponse{Error: err} } resp, err := client.HttpClient.Do(request) if err != nil { return OrdersPostResponse{Error: err} } defer resp.Body.Close() switch resp.StatusCode { case 200: return OrdersPostResponse{StatusCode: resp.StatusCode, Response: resp, Order: OrderFromJson(resp.Body)} case 401: return OrdersPostResponse{StatusCode: resp.StatusCode, Response: resp} case 404: return OrdersPostResponse{StatusCode: resp.StatusCode, Response: resp} case 422: return OrdersPostResponse{StatusCode: resp.StatusCode, Response: resp, Error: ErrorFromJson(resp.Body)} default: return OrdersPostResponse{StatusCode: resp.StatusCode, Response: resp, Error: errors.New(resp.Status)} } } type OrdersPutByNumberResponse struct { StatusCode int Response *http.Response Error error Error Error Order Order } func OrdersPutByNumber(client Client, merchantId string, number string, orderForm OrderForm) OrdersPutByNumberResponse { requestUrl := fmt.Sprintf("%s/%s/orders/%s", client.BaseUrl, html.EscapeString(merchantId), html.EscapeString(number)) bodyDocument, err := json.Marshal(orderForm) if err != nil { return OrdersPutByNumberResponse{Error: err} } body := ClientRequestBody{contentType: "application/json", bytes: bytes.NewReader(bodyDocument)} request, err := buildRequest(client, "PUT", requestUrl, body) if err != nil { return OrdersPutByNumberResponse{Error: err} } resp, err := client.HttpClient.Do(request) if err != nil { return OrdersPutByNumberResponse{Error: err} } defer resp.Body.Close() switch resp.StatusCode { case 200: return OrdersPutByNumberResponse{StatusCode: resp.StatusCode, Response: resp, Order: OrderFromJson(resp.Body)} case 401: return OrdersPutByNumberResponse{StatusCode: resp.StatusCode, Response: resp} case 404: return OrdersPutByNumberResponse{StatusCode: resp.StatusCode, Response: resp} case 422: return OrdersPutByNumberResponse{StatusCode: resp.StatusCode, Response: resp, Error: ErrorFromJson(resp.Body)} default: return OrdersPutByNumberResponse{StatusCode: resp.StatusCode, Response: resp, Error: errors.New(resp.Status)} } } type OrdersDeleteResponse struct { StatusCode int Response *http.Response Error error Error Error } func OrdersDelete(client Client, merchantId string) OrdersDeleteResponse { requestUrl := fmt.Sprintf("%s/%s/orders", client.BaseUrl, html.EscapeString(merchantId)) request, err := buildRequest(client, "DELETE", requestUrl, ClientRequestBody{}) if err != nil { return OrdersDeleteResponse{Error: err} } resp, err := client.HttpClient.Do(request) if err != nil { return OrdersDeleteResponse{Error: err} } defer resp.Body.Close() switch resp.StatusCode { case 200: return OrdersDeleteResponse{StatusCode: resp.StatusCode, Response: resp} case 401: return OrdersDeleteResponse{StatusCode: resp.StatusCode, Response: resp} case 404: return OrdersDeleteResponse{StatusCode: resp.StatusCode, Response: resp} case 422: return OrdersDeleteResponse{StatusCode: resp.StatusCode, Response: resp, Error: ErrorFromJson(resp.Body)} default: return OrdersDeleteResponse{StatusCode: resp.StatusCode, Response: resp, Error: errors.New(resp.Status)} } } func buildRequest(client Client, method, urlStr string, body ClientRequestBody) (*http.Request, error) { request, err := http.NewRequest(method, urlStr, body.bytes) if err != nil { return nil, err } request.Header.Add("User-Agent", UserAgent) request.Header.Add("X-Apidoc-Version", Version) request.Header.Add("X-Apidoc-Version-Major", strconv.Itoa(VersionMajor)) if client.Headers != nil { for key, values := range client.Headers { for _, value := range values { request.Header.Add(key, value) } } } if body.contentType != "" { request.Header.Add("Content-Type", body.contentType) } if client.Username != "" { request.SetBasicAuth(client.Username, client.Password) } return request, nil }