OneShopAPI.asp
From Developer's API
(Difference between revisions)
(New page: <pre> <% 'This class is a wrapper class to the API and will be used to contact the 1ShoppingCart API Class OneShopAPI Private m_MerchantID Private m_MerchantKey Private m_ApiUrl Priva...) |
|||
Line 1: | Line 1: | ||
<pre> | <pre> | ||
<% | <% | ||
− | 'This class is a wrapper class to the API and will be used to contact the 1ShoppingCart API | + | 'This class is a wrapper class to the API and will be used to contact the 1ShoppingCart API |
− | Class OneShopAPI | + | Class OneShopAPI |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | private m_MerchantID | |
− | + | private m_MerchantKey | |
− | + | private m_ApiUrl | |
− | + | private m_ApiCallParameters | |
− | ' | + | 'This property sets your merchant id |
− | + | public Property Let MerchantID(value) | |
− | + | m_merchantID = value | |
− | + | end Property | |
− | + | ||
− | + | ||
− | + | ||
− | + | 'This property sets your merchant api key | |
− | + | public Property Let MerchantKey(value) | |
− | + | m_merchantKey = value | |
− | + | end Property | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | 'this property sets the url location of the api | |
+ | public Property Let ApiUrl(value) | ||
+ | m_apiUrl = value | ||
+ | end Property | ||
− | + | private sub class_initialize() | |
− | + | set m_ApiCallParameters = Server.CreateObject("Scripting.Dictionary") | |
− | + | end sub | |
− | + | ||
− | + | ||
− | + | ||
− | + | 'This methods takes the NextRecordSet node and | |
− | + | 'parses it into the the Api Parameters dictionary | |
− | + | public sub BuildApiParameters(nextRecordSetNode) | |
− | + | ||
− | + | if nextRecordSetNode.nodename = "NextRecordSet" then | |
− | + | ||
− | + | ClearAPIParameters | |
− | + | ||
− | + | for each node in nextRecordSetNode.ChildNodes | |
− | + | AddApiParameter node.nodename, node.text | |
− | + | next | |
− | + | ||
− | + | end if | |
− | + | ||
− | + | end sub | |
− | + | ||
− | + | ||
− | + | 'This method will add required parameters to a parameter array | |
− | + | 'This array will be used when building the request body to | |
+ | 'send to the API | ||
+ | public sub AddApiParameter(parameterName, parameterValue) | ||
+ | |||
+ | 'Check if key already exists if so reset the value to the | ||
+ | 'value passed in to the method | ||
+ | if m_apiCallParameters.Exists(parameterName) = false then | ||
+ | m_apiCallParameters.Add parameterName,parameterValue | ||
+ | else | ||
+ | m_apiCallParameters.item(parameterName) = parameterValue | ||
+ | end if | ||
+ | |||
+ | end Sub | ||
− | + | 'This method will clear all the values in the api parameters dictionary | |
+ | public Sub ClearAPIParameters() | ||
+ | m_ApiCallParameters.RemoveAll | ||
+ | end Sub | ||
+ | |||
+ | 'this method uses the WinHttpRequest object to make | ||
+ | 'a POST request to the api and return the response | ||
+ | 'from the API | ||
+ | private function SendHttpRequest(url, request_body) | ||
− | + | dim winHttp | |
− | + | dim apiResult | |
− | + | ||
− | + | Set winHttp = Server.CreateObject("WinHttp.WinHttpRequest.5.1") | |
− | + | winHttp.Open "POST", url, false | |
− | + | winHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" | |
− | + | winHttp.Send request_body | |
+ | apiResult = winHttp.ResponseBody | ||
+ | |||
+ | set winHttp = nothing | ||
+ | |||
+ | SendHttpRequest = apiResult | ||
+ | |||
+ | end function | ||
− | + | 'This method will call the win_http request method | |
− | + | 'after appending the proper information to the url | |
− | + | 'and creating the request body | |
+ | private function ApiRequest(api_path) | ||
+ | |||
+ | dim url | ||
+ | dim request_body | ||
+ | dim result | ||
+ | |||
+ | url = m_apiUrl & "/API/" & m_merchantID & api_path | ||
+ | request_body = CreateRequestString() | ||
+ | result = SendHttpRequest(url, request_body) | ||
+ | ApiRequest = result | ||
− | + | end function | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | 'This method will take a properly formatted api url | |
+ | 'and create the response body then call the http request method | ||
+ | public function XlinkApiRequest(url) | ||
+ | |||
+ | dim request_body | ||
+ | dim result | ||
− | + | request_body = CreateRequestString() | |
− | + | result = SendHttpRequest(url, request_body) | |
− | + | ||
− | ParseAPIParameters = bodyParameters | + | XlinkApiRequest = result |
− | + | ||
− | + | end function | |
+ | |||
+ | 'This method will create the request body | ||
+ | 'which consists of the merchant key wrapped | ||
+ | 'in XML expected by the API | ||
+ | private function CreateRequestString() | ||
+ | dim requestBody | ||
+ | |||
+ | requestBody = "<Request><Key>" & m_merchantKey & "</Key>" & ParseAPIParameters() & "</Request>" | ||
+ | CreateRequestString = requestBody | ||
+ | end function | ||
+ | |||
+ | 'This method will take an array of parameters and create | ||
+ | 'the rest of the request body to send to the API | ||
+ | private function ParseAPIParameters() | ||
+ | dim bodyParameters | ||
+ | bodyParameters = "" | ||
+ | |||
+ | for each key in m_apiCallParameters.Keys | ||
− | + | bodyParameters = bodyParameters & _ | |
+ | "<" & key & ">" & m_apiCallParameters.Item(key) & "</" & key & ">" | ||
+ | next | ||
+ | |||
+ | ParseAPIParameters = bodyParameters | ||
+ | |||
+ | end function | ||
+ | |||
+ | 'Retrieve Order Information from API | ||
+ | |||
+ | 'ORDERS LIST | ||
+ | public function GetOrderList() | ||
+ | GetOrderList = ApiRequest("/ORDERS/LIST") | ||
+ | end function | ||
+ | |||
+ | 'SPECIFIC ORDER | ||
+ | public function GetOrderById(order_id) | ||
+ | GetOrderById = ApiRequest("/ORDERS/" & order_id & "/READ") | ||
+ | end function | ||
+ | |||
+ | 'Retrieve Product Information from API | ||
+ | |||
+ | 'PRODUCT LIST | ||
+ | public function GetProductList() | ||
+ | GetProductList = ApiRequest("/PRODUCTS/LIST") | ||
+ | end function | ||
+ | |||
+ | 'SPECIFIC PRODUCT | ||
+ | public function GetProductById(product_id) | ||
+ | GetProductById = ApiRequest("/PRODUCTS/" & product_id & "/READ") | ||
+ | end function | ||
+ | |||
+ | 'Retrieve Client Information from API | ||
+ | |||
+ | 'CLIENT LIST | ||
+ | public function GetClientList() | ||
+ | GetClientList = ApiRequest("/CLIENTS/LIST") | ||
+ | end function | ||
+ | |||
+ | 'SPECIFIC CLIENT | ||
+ | public function GetClientById(client_id) | ||
+ | GetClientById = ApiRequest("/CLIENTS/" & client_id & "/READ") | ||
+ | end function | ||
+ | |||
+ | 'Retrieve the list of available methods | ||
+ | public function GetAvailableAPIMethods() | ||
+ | GetAvailableAPIMethods = ApiRequest("") | ||
+ | end function | ||
+ | |||
+ | 'Retrieve list of possible Error messages | ||
+ | public function GetErrorList() | ||
+ | GetErrorList = ApiRequest("/ERRORS/LIST") | ||
+ | end function | ||
− | + | end Class | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
%> | %> | ||
</pre> | </pre> |
Revision as of 18:55, 28 May 2008
<% 'This class is a wrapper class to the API and will be used to contact the 1ShoppingCart API Class OneShopAPI private m_MerchantID private m_MerchantKey private m_ApiUrl private m_ApiCallParameters 'This property sets your merchant id public Property Let MerchantID(value) m_merchantID = value end Property 'This property sets your merchant api key public Property Let MerchantKey(value) m_merchantKey = value end Property 'this property sets the url location of the api public Property Let ApiUrl(value) m_apiUrl = value end Property private sub class_initialize() set m_ApiCallParameters = Server.CreateObject("Scripting.Dictionary") end sub 'This methods takes the NextRecordSet node and 'parses it into the the Api Parameters dictionary public sub BuildApiParameters(nextRecordSetNode) if nextRecordSetNode.nodename = "NextRecordSet" then ClearAPIParameters for each node in nextRecordSetNode.ChildNodes AddApiParameter node.nodename, node.text next end if end sub 'This method will add required parameters to a parameter array 'This array will be used when building the request body to 'send to the API public sub AddApiParameter(parameterName, parameterValue) 'Check if key already exists if so reset the value to the 'value passed in to the method if m_apiCallParameters.Exists(parameterName) = false then m_apiCallParameters.Add parameterName,parameterValue else m_apiCallParameters.item(parameterName) = parameterValue end if end Sub 'This method will clear all the values in the api parameters dictionary public Sub ClearAPIParameters() m_ApiCallParameters.RemoveAll end Sub 'this method uses the WinHttpRequest object to make 'a POST request to the api and return the response 'from the API private function SendHttpRequest(url, request_body) dim winHttp dim apiResult Set winHttp = Server.CreateObject("WinHttp.WinHttpRequest.5.1") winHttp.Open "POST", url, false winHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" winHttp.Send request_body apiResult = winHttp.ResponseBody set winHttp = nothing SendHttpRequest = apiResult end function 'This method will call the win_http request method 'after appending the proper information to the url 'and creating the request body private function ApiRequest(api_path) dim url dim request_body dim result url = m_apiUrl & "/API/" & m_merchantID & api_path request_body = CreateRequestString() result = SendHttpRequest(url, request_body) ApiRequest = result end function 'This method will take a properly formatted api url 'and create the response body then call the http request method public function XlinkApiRequest(url) dim request_body dim result request_body = CreateRequestString() result = SendHttpRequest(url, request_body) XlinkApiRequest = result end function 'This method will create the request body 'which consists of the merchant key wrapped 'in XML expected by the API private function CreateRequestString() dim requestBody requestBody = "<Request><Key>" & m_merchantKey & "</Key>" & ParseAPIParameters() & "</Request>" CreateRequestString = requestBody end function 'This method will take an array of parameters and create 'the rest of the request body to send to the API private function ParseAPIParameters() dim bodyParameters bodyParameters = "" for each key in m_apiCallParameters.Keys bodyParameters = bodyParameters & _ "<" & key & ">" & m_apiCallParameters.Item(key) & "</" & key & ">" next ParseAPIParameters = bodyParameters end function 'Retrieve Order Information from API 'ORDERS LIST public function GetOrderList() GetOrderList = ApiRequest("/ORDERS/LIST") end function 'SPECIFIC ORDER public function GetOrderById(order_id) GetOrderById = ApiRequest("/ORDERS/" & order_id & "/READ") end function 'Retrieve Product Information from API 'PRODUCT LIST public function GetProductList() GetProductList = ApiRequest("/PRODUCTS/LIST") end function 'SPECIFIC PRODUCT public function GetProductById(product_id) GetProductById = ApiRequest("/PRODUCTS/" & product_id & "/READ") end function 'Retrieve Client Information from API 'CLIENT LIST public function GetClientList() GetClientList = ApiRequest("/CLIENTS/LIST") end function 'SPECIFIC CLIENT public function GetClientById(client_id) GetClientById = ApiRequest("/CLIENTS/" & client_id & "/READ") end function 'Retrieve the list of available methods public function GetAvailableAPIMethods() GetAvailableAPIMethods = ApiRequest("") end function 'Retrieve list of possible Error messages public function GetErrorList() GetErrorList = ApiRequest("/ERRORS/LIST") end function end Class %>