OneShopAPI.asp
From Developer's API
(Difference between revisions)
| (4 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
%>