OneShopAPI.asp
From Developer's API
(Difference between revisions)
(2 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
<pre> | <pre> | ||
<% | <% | ||
− | + | 'This class is a wrapper class to the API and will be used to contact the 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 | |
− | end | + | 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 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | public function GetOrderList() | |
− | + | GetOrderList = ApiRequest("/ORDERS/LIST") | |
− | + | end function | |
− | + | ||
− | + | public function GetOrderById(order_id) | |
− | + | GetOrderById = ApiRequest("/ORDERS/" & order_id & "/READ") | |
− | + | end function | |
− | + | ||
− | + | public function GetProductList() | |
− | + | GetProductList = ApiRequest("/PRODUCTS/LIST") | |
− | + | end function | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | end Class | + | public function GetProductById(product_id) |
+ | GetProductById = ApiRequest("/PRODUCTS/" & product_id & "/READ") | ||
+ | end function | ||
+ | |||
+ | public function GetClientList() | ||
+ | GetClientList = ApiRequest("/CLIENTS/LIST") | ||
+ | end function | ||
+ | |||
+ | public function GetClientById(client_id) | ||
+ | GetClientById = ApiRequest("/CLIENTS/" & client_id & "/READ") | ||
+ | end function | ||
+ | |||
+ | public function GetAvailableAPIMethods() | ||
+ | GetAvailableAPIMethods = ApiRequest("") | ||
+ | end function | ||
+ | |||
+ | public function GetErrorList() | ||
+ | GetErrorList = ApiRequest("/ERRORS/LIST") | ||
+ | end function | ||
+ | |||
+ | end Class | ||
%> | %> | ||
</pre> | </pre> |
Latest revision as of 20:06, 16 January 2009
<% 'This class is a wrapper class to the API and will be used to contact the 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 public function GetOrderList() GetOrderList = ApiRequest("/ORDERS/LIST") end function public function GetOrderById(order_id) GetOrderById = ApiRequest("/ORDERS/" & order_id & "/READ") end function public function GetProductList() GetProductList = ApiRequest("/PRODUCTS/LIST") end function public function GetProductById(product_id) GetProductById = ApiRequest("/PRODUCTS/" & product_id & "/READ") end function public function GetClientList() GetClientList = ApiRequest("/CLIENTS/LIST") end function public function GetClientById(client_id) GetClientById = ApiRequest("/CLIENTS/" & client_id & "/READ") end function public function GetAvailableAPIMethods() GetAvailableAPIMethods = ApiRequest("") end function public function GetErrorList() GetErrorList = ApiRequest("/ERRORS/LIST") end function end Class %>