OneShopAPI.asp

From Developer's API

(Difference between revisions)
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
 
 
private m_MerchantID
+
'This property sets your merchant id
private m_MerchantKey
+
public Property Let MerchantID(value)
private m_ApiUrl
+
m_merchantID = value
private m_ApiCallParameters
+
end Property  
+
'This property sets your merchant id
+
'This property sets your merchant api key
public Property Let MerchantID(value)
+
public Property Let MerchantKey(value)
    m_merchantID = value
+
m_merchantKey = value
end Property  
+
end Property
+
'This property sets your merchant api key
+
'this property sets the url location of the api  
public Property Let MerchantKey(value)
+
public Property Let ApiUrl(value)
    m_merchantKey = value
+
m_apiUrl = value
end Property
+
end Property
+
'this property sets the url location of the api  
+
private sub class_initialize()
public Property Let ApiUrl(value)
+
set m_ApiCallParameters = Server.CreateObject("Scripting.Dictionary")
    m_apiUrl = value
+
end sub
end Property
+
 +
'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)
 
 
private sub class_initialize()
+
'Check if key already exists if so reset the value to the
set m_ApiCallParameters = Server.CreateObject("Scripting.Dictionary")
+
'value passed in to the method
end sub
+
if m_apiCallParameters.Exists(parameterName) = false then
 +
m_apiCallParameters.Add parameterName,parameterValue
 +
else
 +
m_apiCallParameters.item(parameterName) = parameterValue
 +
end if
 
 
'This methods takes the NextRecordSet node and
+
end Sub
'parses it into the the Api Parameters dictionary
+
public sub BuildApiParameters(nextRecordSetNode)
+
'This method will clear all the values in the api parameters dictionary
+
public Sub ClearAPIParameters()
if nextRecordSetNode.nodename = "NextRecordSet" then
+
m_ApiCallParameters.RemoveAll
ClearAPIParameters
+
end Sub
for each node in nextRecordSetNode.ChildNodes
+
 
AddApiParameter node.nodename, node.text
+
'this method uses the WinHttpRequest object to make
next
+
'a POST request to the api and return the response
end if
+
'from the API
end sub
+
private function SendHttpRequest(url, request_body)
+
'This method will add required parameters to a parameter array
+
dim winHttp
'This array will be used when building the request body to  
+
dim apiResult
'send to the API
+
public sub AddApiParameter(parameterName, parameterValue)
+
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
 
 
'Check if key already exists if so reset the value to the
+
set winHttp = nothing
'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
+
SendHttpRequest = apiResult
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
+
end function
dim apiResult
+
+
'This method will call the win_http request method
Set winHttp = Server.CreateObject("WinHttp.WinHttpRequest.5.1")
+
'after appending the proper information to the url
winHttp.Open "POST", url, false
+
'and creating the request body
winHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
+
private function ApiRequest(api_path)
winHttp.Send request_body
+
apiResult = winHttp.ResponseBody
+
+
set winHttp = nothing
+
+
SendHttpRequest = apiResult
+
+
end function
+
 
 
'This method will call the win_http request method
+
dim url
'after appending the proper information to the url
+
dim request_body
'and creating the request body
+
dim result
private function ApiRequest(api_path)
+
+
dim url
+
dim request_body
+
dim result
+
  
url = m_apiUrl & "/API/" & m_merchantID & api_path
+
url = m_apiUrl & "/API/" & m_merchantID & api_path
request_body = CreateRequestString()
+
request_body = CreateRequestString()
result = SendHttpRequest(url, request_body)
+
result = SendHttpRequest(url, request_body)
ApiRequest = result
+
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)
 
 
end function
+
dim request_body
 +
dim result
 
 
'This method will take a properly formatted api url
+
request_body = CreateRequestString()
'and create the response body then call the http request method
+
result = SendHttpRequest(url, request_body)
public function XlinkApiRequest(url)
+
 
 
dim request_body
+
XlinkApiRequest = result
dim result
+
+
request_body = CreateRequestString()
+
result = SendHttpRequest(url, request_body)
+
+
XlinkApiRequest = result
+
+
end function
+
 
 
'This method will create the request body
+
end function
'which consists of the merchant key wrapped
+
'in XML expected by the API
+
'This method will create the request body
private function CreateRequestString()
+
'which consists of the merchant key wrapped
dim requestBody
+
'in XML expected by the API
+
private function CreateRequestString()
requestBody = "<Request><Key>" & m_merchantKey & "</Key>" & ParseAPIParameters() & "</Request>"
+
dim requestBody
CreateRequestString = requestBody
+
end function
+
 
 
'This method will take an array of parameters and create
+
requestBody = "<Request><Key>" & m_merchantKey & "</Key>" & ParseAPIParameters() & "</Request>"
'the rest of the request body to send to the API
+
CreateRequestString = requestBody
private function ParseAPIParameters()
+
end function
dim bodyParameters
+
bodyParameters = ""
+
'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
 
 
for each key in m_apiCallParameters.Keys
+
bodyParameters = bodyParameters & _
 +
"<" & key & ">" & m_apiCallParameters.Item(key) & "</"  & key & ">"
 +
next
 +
 +
ParseAPIParameters = bodyParameters
 +
 +
end function
 
 
bodyParameters = bodyParameters & _
+
'Retrieve Order Information from API
"<" & 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
+
'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:57, 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
%>