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