OneShopAPI.cs
From Developer's API
(Difference between revisions)
(Changed the usage and returns of streams to XmlDocuments) |
|||
| Line 14: | Line 14: | ||
/// <summary> | /// <summary> | ||
| − | /// This class is a wrapper class to the API and will be used to contact the | + | /// This class is a wrapper class to the API and will be used to contact the 1ShoppingCart API |
/// </summary> | /// </summary> | ||
public class OneShopApi | public class OneShopApi | ||
| Line 44: | Line 44: | ||
} | } | ||
| + | public OneShopApi(string APIUri) | ||
| + | { | ||
| + | _apiUri = APIUri; | ||
| + | } | ||
| + | |||
public OneShopApi(string merchantId, string merchantKey, string apiUri) | public OneShopApi(string merchantId, string merchantKey, string apiUri) | ||
{ | { | ||
| Line 92: | Line 97: | ||
// 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 | + | private XmlDocument SendHttpRequest(string uri, string requestBody) |
{ | { | ||
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); | HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); | ||
| Line 99: | Line 104: | ||
request.Method = "POST"; | request.Method = "POST"; | ||
Stream stream = request.GetRequestStream(); | Stream stream = request.GetRequestStream(); | ||
| − | StreamWriter streamWriter = new StreamWriter(stream) | + | |
| − | streamWriter.WriteLine(requestBody); | + | using (StreamWriter streamWriter = new StreamWriter(stream)) |
| − | + | { | |
| + | streamWriter.WriteLine(requestBody); | ||
| + | } | ||
// get response | // get response | ||
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); | HttpWebResponse response = (HttpWebResponse)request.GetResponse(); | ||
| − | Stream | + | using (response) |
| − | + | { | |
| − | + | Stream APIResult = response.GetResponseStream(); | |
| − | + | XmlDocument xmlResult = new XmlDocument(); | |
| − | + | xmlResult.Load(APIResult); | |
| + | return xmlResult; | ||
| + | } | ||
} | } | ||
| Line 116: | Line 125: | ||
// after appending the proper information to the uri | // after appending the proper information to the uri | ||
// and creating the request body | // and creating the request body | ||
| − | private | + | private XmlDocument ApiRequest(string apiPath) |
{ | { | ||
| + | XmlDocument result = new XmlDocument(); | ||
| + | |||
string uri, | string uri, | ||
requestbody; | requestbody; | ||
| − | |||
| − | |||
uri = _apiUri + "/API/" + _merchantId + apiPath; | uri = _apiUri + "/API/" + _merchantId + apiPath; | ||
| Line 133: | Line 142: | ||
// This method will take a properly formatted api uri | // This method will take a properly formatted api uri | ||
// and create the response body then call the http request method | // and create the response body then call the http request method | ||
| − | public | + | public XmlDocument XLinkApiRequest(string uri) |
{ | { | ||
string requestBody; | string requestBody; | ||
| − | + | XmlDocument result = new XmlDocument(); | |
requestBody = CreateRequestString(); | requestBody = CreateRequestString(); | ||
| Line 147: | Line 156: | ||
{ | { | ||
string requestBody; | string requestBody; | ||
| − | requestBody = "<Request><Key>" + _merchantKey + "</Key>" + ParseApiParameters() + "</Request>"; | + | requestBody = "<Request>" + |
| + | "<Key>" + _merchantKey + "</Key>" + | ||
| + | ParseApiParameters() + | ||
| + | "</Request>"; | ||
return requestBody; | return requestBody; | ||
} | } | ||
| Line 162: | Line 174: | ||
} | } | ||
| − | public | + | public XmlDocument GetOrderCount() |
| + | { | ||
| + | return ApiRequest("/ORDERS/COUNT"); | ||
| + | } | ||
| + | |||
| + | public XmlDocument GetOrderList() | ||
{ | { | ||
return ApiRequest("/ORDERS/LIST"); | return ApiRequest("/ORDERS/LIST"); | ||
} | } | ||
| − | public | + | public XmlDocument GetOrderById(string orderId) |
{ | { | ||
return ApiRequest("/ORDERS/" + orderId + "/READ"); | return ApiRequest("/ORDERS/" + orderId + "/READ"); | ||
} | } | ||
| − | public | + | public XmlDocument GetProductList() |
{ | { | ||
return ApiRequest("/PRODUCTS/LIST"); | return ApiRequest("/PRODUCTS/LIST"); | ||
} | } | ||
| − | public | + | public XmlDocument GetProductById(string productId) |
{ | { | ||
return ApiRequest("/PRODUCTS/" + productId + "/READ"); | return ApiRequest("/PRODUCTS/" + productId + "/READ"); | ||
} | } | ||
| − | public | + | public XmlDocument GetClientList() |
{ | { | ||
return ApiRequest("/CLIENTS/LIST"); | return ApiRequest("/CLIENTS/LIST"); | ||
} | } | ||
| − | public | + | public XmlDocument GetClientById(string clientId) |
{ | { | ||
return ApiRequest("/CLIENTS/" + clientId + "/READ"); | return ApiRequest("/CLIENTS/" + clientId + "/READ"); | ||
} | } | ||
| − | public | + | public XmlDocument GetErrorList() |
{ | { | ||
return ApiRequest("/ERRORS/LIST"); | return ApiRequest("/ERRORS/LIST"); | ||
} | } | ||
| − | public | + | public XmlDocument GetAvailableAPIMethods() |
{ | { | ||
| − | return ApiRequest( | + | return ApiRequest(string.Empty); |
} | } | ||
} | } | ||
</pre> | </pre> | ||
Latest revision as of 18:27, 22 January 2010
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.IO;
using System.Net;
using System.Collections.Generic;
/// <summary>
/// This class is a wrapper class to the API and will be used to contact the 1ShoppingCart API
/// </summary>
public class OneShopApi
{
private string _merchantId;
private string _merchantKey;
private string _apiUri;
private Dictionary<string, string> _apiParameters;
// This property sets your merchant id
public string MerchantID
{
get {return _merchantId;}
set {_merchantId = value;}
}
// This property sets your merchant api key
public string MerchantKey
{
get {return _merchantKey;}
set {_merchantKey = value;}
}
// This property sets the uri location of the api
public string ApiUri
{
get {return _apiUri;}
set {_apiUri = value;}
}
public OneShopApi(string APIUri)
{
_apiUri = APIUri;
}
public OneShopApi(string merchantId, string merchantKey, string apiUri)
{
_merchantId = merchantId;
_merchantKey = merchantKey;
_apiUri = apiUri;
_apiParameters = new Dictionary<string,string>();
}
// This methods takes the NextRecordSet node and
// parses it into the the Api Parameters dictionary
public void BuildApiParameters(XmlNode nextRecordSet)
{
if (nextRecordSet.Name == "NextRecordSet")
{
ClearApiParameters();
foreach (XmlNode node in nextRecordSet)
{
AddApiParameter(node.Name, node.InnerText);
}
}
}
// This method will add required parameters to a parameter array
// the array will be used when building the request body to
// send to the API
public void AddApiParameter(string parameterName, string parameterValue)
{
// Check if key already exists if so reset the value to the
// value passed in to the method
if (_apiParameters.ContainsKey(parameterName))
{
_apiParameters[parameterName] = parameterValue;
}
else
{
_apiParameters.Add(parameterName, parameterValue);
}
}
public void ClearApiParameters()
{
_apiParameters.Clear();
}
// This method uses the HttpWebRequest object to make
// a POST request to the api and return the response
// from the API
private XmlDocument SendHttpRequest(string uri, string requestBody)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
// send POST data
request.Method = "POST";
Stream stream = request.GetRequestStream();
using (StreamWriter streamWriter = new StreamWriter(stream))
{
streamWriter.WriteLine(requestBody);
}
// get response
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (response)
{
Stream APIResult = response.GetResponseStream();
XmlDocument xmlResult = new XmlDocument();
xmlResult.Load(APIResult);
return xmlResult;
}
}
// This method will call the SendHttpRequest method
// after appending the proper information to the uri
// and creating the request body
private XmlDocument ApiRequest(string apiPath)
{
XmlDocument result = new XmlDocument();
string uri,
requestbody;
uri = _apiUri + "/API/" + _merchantId + apiPath;
requestbody = CreateRequestString();
result = SendHttpRequest(uri, requestbody);
return result;
}
// This method will take a properly formatted api uri
// and create the response body then call the http request method
public XmlDocument XLinkApiRequest(string uri)
{
string requestBody;
XmlDocument result = new XmlDocument();
requestBody = CreateRequestString();
result = SendHttpRequest(uri, requestBody);
return result;
}
private string CreateRequestString()
{
string requestBody;
requestBody = "<Request>" +
"<Key>" + _merchantKey + "</Key>" +
ParseApiParameters() +
"</Request>";
return requestBody;
}
private string ParseApiParameters()
{
string bodyParameters = "";
foreach (string key in _apiParameters.Keys)
{
bodyParameters += "<" + key + ">" + _apiParameters[key] + "</" + key + ">";
}
return bodyParameters;
}
public XmlDocument GetOrderCount()
{
return ApiRequest("/ORDERS/COUNT");
}
public XmlDocument GetOrderList()
{
return ApiRequest("/ORDERS/LIST");
}
public XmlDocument GetOrderById(string orderId)
{
return ApiRequest("/ORDERS/" + orderId + "/READ");
}
public XmlDocument GetProductList()
{
return ApiRequest("/PRODUCTS/LIST");
}
public XmlDocument GetProductById(string productId)
{
return ApiRequest("/PRODUCTS/" + productId + "/READ");
}
public XmlDocument GetClientList()
{
return ApiRequest("/CLIENTS/LIST");
}
public XmlDocument GetClientById(string clientId)
{
return ApiRequest("/CLIENTS/" + clientId + "/READ");
}
public XmlDocument GetErrorList()
{
return ApiRequest("/ERRORS/LIST");
}
public XmlDocument GetAvailableAPIMethods()
{
return ApiRequest(string.Empty);
}
}