OneShopAPI.asp

From Developer's API

(Difference between revisions)
Line 28: Line 28:
 
end sub
 
end sub
 
 
'This methods takes the NextRecordSet node and  
+
'This methods takes the NextRecordSet node and
    'parses it into the the Api Parameters dictionary
+
'parses it into the the Api Parameters dictionary
 
public sub BuildApiParameters(nextRecordSetNode)
 
public sub BuildApiParameters(nextRecordSetNode)
 
 

Revision as of 18:55, 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
%>