Skip to content

Commit

Permalink
Updated to 2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
idabic committed Jul 15, 2015
1 parent 09688ec commit 65811a7
Showing 1 changed file with 152 additions and 38 deletions.
190 changes: 152 additions & 38 deletions tests/ConsoleApp+non-builtLIB/MaxCDN/Api.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
using System;
using System;
using System.ComponentModel;
using System.Net;
using System.Web;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Text;

namespace MaxCDN
Expand All @@ -13,11 +11,11 @@ public class Api
private string _consumerKey = "";
private string _consumerSecret = "";
private string _alias = "";
private int _requestTimeout = 30;
private int _requestTimeout = 180;

private const string _MaxCDNBaseAddress = "https://rws.maxcdn.com";

public Api(string alias, string consumerKey, string consumerSecret, int requestTimeout = 30)
public Api(string alias, string consumerKey, string consumerSecret, int requestTimeout = 180)
{
_consumerKey = consumerKey;
_alias = alias;
Expand All @@ -26,28 +24,71 @@ public Api(string alias, string consumerKey, string consumerSecret, int requestT
}

public dynamic Get(string url, bool debug = false)
{
{
if (debug)
{
Console.Write("Running garbage collector\n");
}
clear(debug);
if (debug)
{
Console.Write("Done\n\nGenerating OAuth request URL for " + url + "\n");
}
var requestUrl = GenerateOAuthRequestUrl(url, "GET");

var request = new ApiWebClient(_requestTimeout);
if (debug)
{
Console.Write("Done: \n" + requestUrl + "\n\nCreating request\n");
}
var request = new ApiWebClient(_requestTimeout);
if (debug)
{
Console.Write("Done: \n" + request + "\n Defining User Agent for API request\n");
}
request.Headers.Add("user-agent", "MaxCDN dot-net API Client");
if (debug)
{
Console.Write("Done:\nUser Agent = MaxCDN dot-net API Client\n\nMaking the GET request\n");
}
var response = request.DownloadString(requestUrl);

var result = JObject.Parse(response);
if (debug)
DumpObject(result);

return result;
{
DumpObject(response);
}
return response;
}

//DELETE requests handler
public bool Delete(string url)
public bool Delete(string url, bool debug = false)
{
if (debug)
{
Console.Write("Running garbage collector\n");
}
clear(debug);
if (debug)
{
Console.Write("Done\n\n");
}
var response = GetWebResponse(url, "DELETE");
if (debug)
{
Console.Write("Done:\n" + response + "\n\n");
DumpObject(response);
}
return ((HttpWebResponse)response).StatusCode == HttpStatusCode.OK;
}
//PURGE-DELETE requests handler
public bool Purge(string url, string uri)
{
public bool Purge(string url, string uri, bool debug = false)
{
if (debug)
{
Console.Write("Running garbage collector\n");
}
clear(debug);
if (debug)
{
Console.Write("Done\n\nEncoding request URi\n");
}
char[] enc = System.Web.HttpUtility.UrlEncode(uri).ToCharArray();

for (int i = 0; i < enc.Length - 2; i++)
Expand All @@ -60,27 +101,33 @@ public bool Purge(string url, string uri)
}

string encfinal = new string(enc);

var response = GetWebResponse(url + "?" + encfinal.Replace("%5D%3D", "%5D=").Replace("%26file%5B", "&file%5B"), "DELETE");

return ((HttpWebResponse)response).StatusCode == HttpStatusCode.OK;
}

//API Response inerpreter
private WebResponse GetWebResponse(string url, string method)
{
var requestUrl = GenerateOAuthRequestUrl(url, method);

var request = WebRequest.Create(requestUrl);
request.Method = method;
if (debug)
{
Console.Write("Done:\n" + encfinal + "\n\nMaking the DELETE request\n");
}

var response = request.GetResponse();
return response;
var response = GetWebResponse(url + "?" + encfinal.Replace("file%3D", "file=").Replace("%5D%3D", "%5D=").Replace("%26file%5B", "&file%5B"), "DELETE");
if (debug)
{
Console.Write("Done:\n");
DumpObject(response);
}
return ((HttpWebResponse)response).StatusCode == HttpStatusCode.OK;
}

//PUT requests handler
public bool Put(string url, dynamic data)
public bool Put(string url, dynamic data, bool debug = false)
{
if (debug)
{
Console.Write("Running garbage collector\n");
}
clear(debug);
if (debug)
{
Console.Write("Done\n\nEncoding request URi\n");
}
char[] enc = System.Web.HttpUtility.UrlEncode(data).ToCharArray();

for (int i = 0; i < enc.Length - 2; i++)
Expand All @@ -96,21 +143,51 @@ public bool Put(string url, dynamic data)
data = encfinal;
data = data.Replace("%3D", "=").Replace("%26", "&");

if (debug)
{
Console.Write("Done:\n" + encfinal + "\n\nMaking the PUT request\n Generating OAuth request for: " + url + "\n");
}

var requestUrl = GenerateOAuthRequestUrl(url, "PUT");
if (debug)
{
Console.Write(" Done:\n" + requestUrl + "\n Creating API Web client request\n");
}
var request = WebRequest.Create(requestUrl);
if (debug)
{
Console.Write(" Done:\n" + request + "\n Defining request method (PUT)\n");
}
request.Method = "PUT";
if (debug)
{
Console.Write(" Done\n Reading response\n");
}
byte[] byteArray = Encoding.UTF8.GetBytes(data);
request.ContentType = "application/json";
request.ContentLength = byteArray.Length;
var dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
var response = request.GetResponse();
if (debug)
{
DumpObject(response);
}
return ((HttpWebResponse)response).StatusCode == HttpStatusCode.OK;
}
//POST request handler
public bool Post(string url, dynamic data)
public bool Post(string url, dynamic data, bool debug = false)
{
if (debug)
{
Console.Write("Running garbage collector\n");
}
clear(debug);
if (debug)
{
Console.Write("Done\n\nEncoding request URi\n");
}
char[] enc = System.Web.HttpUtility.UrlEncode(data).ToCharArray();

for (int i = 0; i < enc.Length - 2; i++)
Expand All @@ -126,12 +203,26 @@ public bool Post(string url, dynamic data)
data = encfinal;
data = data.Replace("%3D", "=").Replace("%26", "&");

if (debug)
{
Console.Write("Done:\n" + data + "\nGenerating OAuth request URi\n\n");
}

var requestUrl = GenerateOAuthRequestUrl(url, "POST");

if (debug)
{
Console.Write("Done\n\nMaking the POST request with " + requestUrl + "\n\n");
}
var request = WebRequest.Create(requestUrl);
if (debug)
{
Console.Write("Done:\n" + request + "\n\nDefining request method (POST)\n");
}
request.Method = "POST";

if (debug)
{
Console.Write("Done\n\nReading response\n");
}
byte[] byteArray = Encoding.UTF8.GetBytes(data);
request.ContentType = "application/json";
request.ContentLength = byteArray.Length;
Expand All @@ -141,10 +232,24 @@ public bool Post(string url, dynamic data)
dataStream.Close();

var response = request.GetResponse();

if (debug)
{
DumpObject(response);
}
return ((HttpWebResponse)response).StatusCode == HttpStatusCode.OK;
}


//API Response inerpreter
private WebResponse GetWebResponse(string url, string method)
{
var requestUrl = GenerateOAuthRequestUrl(url, method);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUrl);
request.Method = method;
request.UserAgent = "MaxCDN dot-net API Client";
var response = request.GetResponse();
return response;
}

//Generate request url

private string GenerateOAuthRequestUrl(string url, string method)
Expand Down Expand Up @@ -181,9 +286,9 @@ private void DumpObject(dynamic o)
//Initialize WebClient
private class ApiWebClient : WebClient
{
private int _requestTimeout = 30;
private int _requestTimeout = 180;

public ApiWebClient(int requestTimeout = 30)
public ApiWebClient(int requestTimeout = 180)
{
_requestTimeout = requestTimeout;
}
Expand All @@ -195,5 +300,14 @@ protected override WebRequest GetWebRequest(Uri address)
return w;
}
}
public void clear(bool debug)
{
if (debug)
{
Console.WriteLine("Total Memory Used: {0}\n", GC.GetTotalMemory(true));
Console.WriteLine("Garbage Count for current generation collection: {0}\n", GC.CollectionCount(GC.GetGeneration(0)));
}
GC.Collect();
}
}
}

0 comments on commit 65811a7

Please sign in to comment.