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...)
 
 
(5 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 1ShoppingCart API
+
'This class is a wrapper class to the API and will be used to contact the API
 
Class OneShopAPI
 
Class OneShopAPI
  
Private m_MerchantID
+
private m_MerchantID
Private m_MerchantKey
+
private m_MerchantKey
Private m_ApiUrl
+
private m_ApiUrl
Private m_ApiCallParameters
+
private m_ApiCallParameters
 
 
'This property sets your merchant id
+
' This property sets your merchant id
Public Property Let MerchantID(value)
+
public Property let MerchantID(value)
 
m_merchantID = value
 
m_merchantID = value
End Property  
+
end Property  
 
 
'This property sets your merchant api key
+
' This property sets your merchant api key
Public Property Let MerchantKey(value)
+
public Property let MerchantKey(value)
 
m_merchantKey = value
 
m_merchantKey = value
End Property  
+
end Property
 
 
'this property sets the url location of the api  
+
' This property sets the url location of the api  
Public Property Let ApiUrl(value)
+
public Property let ApiUrl(value)
 
m_apiUrl = value
 
m_apiUrl = value
End Property
+
end Property
 
 
Private sub class_initialize()
+
private sub class_initialize()
 
set m_ApiCallParameters = Server.CreateObject("Scripting.Dictionary")
 
set m_ApiCallParameters = Server.CreateObject("Scripting.Dictionary")
End sub
+
end sub
 
 
'This method will add required parameters to a parameter array
+
' This methods takes the NextRecordSet node and
'This array will be used when building the request body to  
+
' parses it into the the Api Parameters dictionary
'send to the API
+
public sub BuildApiParameters(nextRecordSetNode)
Public sub AddApiParameter(parameterName, parameterValue)
+
 +
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
+
' Check if key already exists if so reset the value to the
'value passed in to the method
+
' value passed in to the method
 
if m_apiCallParameters.Exists(parameterName) = false then
 
if m_apiCallParameters.Exists(parameterName) = false then
 
m_apiCallParameters.Add parameterName,parameterValue
 
m_apiCallParameters.Add parameterName,parameterValue
 
else
 
else
 
m_apiCallParameters.item(parameterName) = parameterValue
 
m_apiCallParameters.item(parameterName) = parameterValue
End if
+
end if
 
 
End Sub
+
end Sub
 
 
 
'This method will clear all the values in the api parameters dictionary
 
'This method will clear all the values in the api parameters dictionary
Public Sub ClearAPIParameters()
+
public Sub ClearAPIParameters()
 
m_ApiCallParameters.RemoveAll
 
m_ApiCallParameters.RemoveAll
End Sub
+
end Sub
  
 
'this method uses the WinHttpRequest object to make
 
'this method uses the WinHttpRequest object to make
 
'a POST request to the api and return the response
 
'a POST request to the api and return the response
 
'from the API
 
'from the API
Private Function SendHttpRequest(url, request_body)
+
private function SendHttpRequest(url, request_body)
 
 
 
dim winHttp
 
dim winHttp
Line 66: Line 78:
 
SendHttpRequest = apiResult
 
SendHttpRequest = apiResult
 
 
End Function
+
end function
 
 
'This method will call the win_http request method
+
' This method will call the win_http request method
'after appEnding the proper information to the url
+
' after appending the proper information to the url
'and creating the request body
+
' and creating the request body
Private Function ApiRequest(api_path)
+
private function ApiRequest(api_path)
 
 
 
dim url
 
dim url
Line 82: Line 94:
 
ApiRequest = result
 
ApiRequest = result
  
End Function
+
end function
 
 
'This method will take a properly formatted api url
+
' This method will take a properly formatted api url
'and create the response body then call the http request method
+
' and create the response body then call the http request method
Public Function XlinkApiRequest(url)
+
public function XlinkApiRequest(url)
 
 
 
dim request_body
 
dim request_body
Line 96: Line 108:
 
XlinkApiRequest = result
 
XlinkApiRequest = result
 
 
End Function
+
end function
 
 
'This method will create the request body
+
' This method will create the request body
'which consists of the merchant key wrapped
+
' which consists of the merchant key wrapped
'in XML expected by the API
+
' in XML expected by the API
Private Function CreateRequestString()
+
private function CreateRequestString()
 
dim requestBody
 
dim requestBody
 
 
 
requestBody = "<Request><Key>" & m_merchantKey & "</Key>" & ParseAPIParameters() & "</Request>"
 
requestBody = "<Request><Key>" & m_merchantKey & "</Key>" & ParseAPIParameters() & "</Request>"
 
CreateRequestString = requestBody
 
CreateRequestString = requestBody
End Function
+
end function
 
 
'This method will take an array of parameters and create
+
' This method will take an array of parameters and create
'the rest of the request body to send to the API
+
' the rest of the request body to send to the API
Private Function ParseAPIParameters()
+
private function ParseAPIParameters()
 
dim bodyParameters
 
dim bodyParameters
 
bodyParameters = ""
 
bodyParameters = ""
Line 122: Line 134:
 
ParseAPIParameters = bodyParameters
 
ParseAPIParameters = bodyParameters
 
 
End Function
+
end function
 
 
'Retrieve Order Information from API
+
public function GetOrderList()
+
'ORDERS LIST
+
Public Function GetOrderList()
+
 
GetOrderList = ApiRequest("/ORDERS/LIST")
 
GetOrderList = ApiRequest("/ORDERS/LIST")
End Function
+
end function
 
 
'SPECIFIC ORDER
+
public function GetOrderById(order_id)
Public Function GetOrderById(order_id)
+
 
GetOrderById = ApiRequest("/ORDERS/" & order_id & "/READ")
 
GetOrderById = ApiRequest("/ORDERS/" & order_id & "/READ")
End Function
+
end function
 
 
'Retrieve Product Information from API
+
public function GetProductList()
+
'PRODUCT LIST
+
Public Function GetProductList()
+
 
GetProductList = ApiRequest("/PRODUCTS/LIST")
 
GetProductList = ApiRequest("/PRODUCTS/LIST")
End Function
+
end function
 
 
'SPECIFIC PRODUCT
+
public function GetProductById(product_id)
Public Function GetProductById(product_id)
+
 
GetProductById = ApiRequest("/PRODUCTS/" & product_id & "/READ")
 
GetProductById = ApiRequest("/PRODUCTS/" & product_id & "/READ")
End Function
+
end function
+
'Retrieve Client Information from API
+
 
 
'CLIENT LIST
+
public function GetClientList()
Public Function GetClientList()
+
 
GetClientList = ApiRequest("/CLIENTS/LIST")
 
GetClientList = ApiRequest("/CLIENTS/LIST")
End Function
+
end function
 
 
'SPECIFIC CLIENT
+
public function GetClientById(client_id)
Public Function GetClientById(client_id)
+
 
GetClientById = ApiRequest("/CLIENTS/" & client_id & "/READ")
 
GetClientById = ApiRequest("/CLIENTS/" & client_id & "/READ")
End Function
+
end function
 
 
'Retrieve the list of available methods
+
public function GetAvailableAPIMethods()
Public Function GetAvailableAPIMethods()
+
 
GetAvailableAPIMethods = ApiRequest("")
 
GetAvailableAPIMethods = ApiRequest("")
End Function
+
end function
 
 
'Retrieve list of possible Error messages
+
public function GetErrorList()
Public Function GetErrorList()
+
 
GetErrorList = ApiRequest("/ERRORS/LIST")
 
GetErrorList = ApiRequest("/ERRORS/LIST")
End Function
+
end function
  
End Class
+
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
%>