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); } }