OneShopAPI.asp
From Developer's API
<%
'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
%>