OneShopAPI.asp

From Developer's API

Revision as of 18:57, 28 May 2008 by Chrisn (Talk | contribs)
<%
'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
%>