Skip to content

Commit

Permalink
Fix bug #14. Show correct server error.
Browse files Browse the repository at this point in the history
  • Loading branch information
gdiaz committed Aug 14, 2019
1 parent 9f249a8 commit d1843e9
Show file tree
Hide file tree
Showing 21 changed files with 959 additions and 38 deletions.
Binary file modified .vs/SQL-APIConsumer/v15/.suo
Binary file not shown.
Binary file modified .vs/SQL-APIConsumer/v15/Server/sqlite3/storage.ide-shm
Binary file not shown.
Binary file modified .vs/SQL-APIConsumer/v15/Server/sqlite3/storage.ide-wal
Binary file not shown.
Binary file modified .vs/slnx.sqlite
Binary file not shown.
231 changes: 231 additions & 0 deletions API_Consumer/Consumers/APIConsumer.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Runtime.Serialization;
using API_Consumer;

namespace SQLAPI_Consumer
{
Expand Down Expand Up @@ -38,6 +41,7 @@ public static string POSTMethod(string url, string JsonBody, string Authorizatio
string ContentResult = string.Empty ;
try
{
SetSSL();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = CONTENTTYPE;
request.Method = POST_WebMethod;
Expand All @@ -58,6 +62,76 @@ public static string POSTMethod(string url, string JsonBody, string Authorizatio
ContentResult = result;
}
}
catch (WebException ex)
{
using (var stream = ex.Response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
var result = reader.ReadToEnd();
ContentResult = result;
}
}
catch (Exception ex)
{
ContentResult = ex.Message.ToString();
throw ex;
}

return ContentResult;
}

/// <summary>
/// POST to Resful API sending Json body.
/// </summary>
/// <param name="url">API URL</param>
/// <param name="JsonBody">Content Application By Default Json</param>
/// <param name="JsonHeaders">Headers added in Json format: Authorization token, user-passwrod, JWT, etc.</param>
/// <returns>String Api result</returns>
public static string POSTMethod_Header(string url, string JsonBody = "", string JsonHeaders = "")
{
string ContentResult = string.Empty;
try
{
SetSSL();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = CONTENTTYPE;
request.Method = POST_WebMethod;

if (!string.IsNullOrEmpty(JsonHeaders))
{
List<Headers> _headers = JsonConvert.DeserializeObject<List<Headers>>(JsonHeaders);

foreach (var Header in _headers)
{
if (!string.IsNullOrEmpty(Header.Name) && !string.IsNullOrEmpty(Header.Value))
request.Headers.Add(Header.Name, Header.Value);
}
}

using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
if(!String.IsNullOrEmpty(JsonBody))
streamWriter.Write(JsonBody);

streamWriter.Flush();
}

var httpResponse = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
ContentResult = result;
}
}
catch (WebException ex)
{
using (var stream = ex.Response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
var result = reader.ReadToEnd();
ContentResult = result;
}
}
catch (Exception ex)
{
ContentResult = ex.Message.ToString();
Expand All @@ -78,6 +152,7 @@ public static string GETMethod(string url, string Authorization = "")
string ContentResult = string.Empty;
try
{
SetSSL();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = CONTENTTYPE;
request.Method = GET_WebMethod;
Expand All @@ -92,6 +167,125 @@ public static string GETMethod(string url, string Authorization = "")
ContentResult = result;
}
}
catch (WebException ex)
{
using (var stream = ex.Response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
var result = reader.ReadToEnd();
ContentResult = result;
}
}
catch (Exception ex)
{
ContentResult = ex.Message.ToString();
throw ex;
}

return ContentResult;
}

/// <summary>
/// Request GET Method to the URL API provided.
/// </summary>
/// <param name="url">API URL</param>
/// <param name="Authorization">Header Authorization</param>
/// <returns>String Api result</returns>
public static string GETMethod_Headers(string url, string Headers)
{
string ContentResult = string.Empty;
try
{
SetSSL();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = CONTENTTYPE;
request.Method = GET_WebMethod;

if (!string.IsNullOrEmpty(Headers))
{
List<Headers> _headers = JsonConvert.DeserializeObject<List<Headers>>(Headers);

foreach (var Header in _headers)
{
if (!string.IsNullOrEmpty(Header.Name) && !string.IsNullOrEmpty(Header.Value))
request.Headers.Add(Header.Name, Header.Value);
}
}

var httpResponse = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
ContentResult = result;
}
}
catch (WebException ex)
{
using (var stream = ex.Response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
var result = reader.ReadToEnd();
ContentResult = result;
}
}
catch (Exception ex)
{
ContentResult = ex.Message.ToString();
throw ex;
}

return ContentResult;
}

/// <summary>
/// Request GET Method to the URL API provided.
/// </summary>
/// <param name="url">API URL</param>
/// <param name="Authorization">Header Authorization</param>
/// <returns>String Api result</returns>
public static string GETMethod_Headers(string url, string JsonBody = "", string Headers = "")
{
string ContentResult = string.Empty;
try
{
SetSSL();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = CONTENTTYPE;
request.Method = GET_WebMethod;

if (!string.IsNullOrEmpty(Headers))
{
List<Headers> _headers = JsonConvert.DeserializeObject<List<Headers>>(Headers);

foreach (var Header in _headers)
{
if (!string.IsNullOrEmpty(Header.Name) && !string.IsNullOrEmpty(Header.Value))
request.Headers.Add(Header.Name, Header.Value);
}
}

using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(JsonBody);
streamWriter.Flush();
}

var httpResponse = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
ContentResult = result;
}
}
catch (WebException ex)
{
using (var stream = ex.Response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
var result = reader.ReadToEnd();
ContentResult = result;
}
}
catch (Exception ex)
{
ContentResult = ex.Message.ToString();
Expand All @@ -113,6 +307,7 @@ public static string GETMethod(string url, string Id, string Authorization = "")
string ContentResult = string.Empty;
try
{
SetSSL();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(string.Concat(url,"/",Id));
request.ContentType = CONTENTTYPE;
request.Method = GET_WebMethod;
Expand All @@ -127,6 +322,15 @@ public static string GETMethod(string url, string Id, string Authorization = "")
ContentResult = result;
}
}
catch (WebException ex)
{
using (var stream = ex.Response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
var result = reader.ReadToEnd();
ContentResult = result;
}
}
catch (Exception ex)
{
ContentResult = ex.Message.ToString();
Expand All @@ -148,6 +352,7 @@ public static string GETMethod<T>(string url, ref T ObjectResult, string Authori
string ContentResult = string.Empty;
try
{
SetSSL();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = CONTENTTYPE;
request.Method = GET_WebMethod;
Expand All @@ -163,6 +368,15 @@ public static string GETMethod<T>(string url, ref T ObjectResult, string Authori
ContentResult = result;
}
}
catch (WebException ex)
{
using (var stream = ex.Response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
var result = reader.ReadToEnd();
ContentResult = result;
}
}
catch (Exception ex)
{
ContentResult = ex.Message.ToString();
Expand All @@ -184,6 +398,7 @@ public static string GETMethod<T>(string url, string Id, ref T ObjectResult, str
string ContentResult = string.Empty;
try
{
SetSSL();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(string.Concat(url,"/",Id));
request.ContentType = CONTENTTYPE;
request.Method = GET_WebMethod;
Expand All @@ -199,6 +414,15 @@ public static string GETMethod<T>(string url, string Id, ref T ObjectResult, str
ContentResult = result;
}
}
catch (WebException ex)
{
using (var stream = ex.Response.GetResponseStream())
using (var reader = new StreamReader(stream))
{
var result = reader.ReadToEnd();
ContentResult = result;
}
}
catch (Exception ex)
{
ContentResult = ex.Message.ToString();
Expand All @@ -207,5 +431,12 @@ public static string GETMethod<T>(string url, string Id, ref T ObjectResult, str

return ContentResult;
}

private static void SetSSL()
{
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
| SecurityProtocolType.Ssl3;
}
}
}
36 changes: 36 additions & 0 deletions API_Consumer/Consumers/Helper.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
using Microsoft.SqlServer.Server;
using System;
using System.Collections.Generic;
using System.Data;
using System.Security.Cryptography;
using System.Text;

namespace SQLAPI_Consumer
{
Expand Down Expand Up @@ -110,5 +113,38 @@ public static void SendEmptyResult(SqlMetaData[] Header)
SqlContext.Pipe.SendResultsEnd();
}
}

private static readonly Encoding SignatureEncoding = Encoding.UTF8;

/// <summary>
/// public method to return that return SHA256
/// </summary>
/// <param name="message">parameters in URL</param>
/// <param name="secret">SK</param>
/// <returns>string SHA256</returns>
public static string CreateSignature(string message, string secret)
{

byte[] keyBytes = SignatureEncoding.GetBytes(secret);
byte[] messageBytes = SignatureEncoding.GetBytes(message);
HMACSHA256 hmacsha256 = new HMACSHA256(keyBytes);

byte[] bytes = hmacsha256.ComputeHash(messageBytes);

return BitConverter.ToString(bytes).Replace("-", "").ToLower();
}

/// <summary>
/// Timestamp for signature
/// </summary>
/// <returns>string</returns>
public static string GetTimestamp()
{
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
var timestamp = (long)(DateTime.Now.ToUniversalTime() - epoch).TotalMilliseconds;
return timestamp.ToString();
//long milliseconds = System.DateTimeOffset.Now.ToUnixTimeMilliseconds();
//return milliseconds.ToString();
}
}
}
12 changes: 12 additions & 0 deletions API_Consumer/DTO/Header.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace API_Consumer
{
public class Headers
{
public string Name;
public string Value;
}
}
Loading

0 comments on commit d1843e9

Please sign in to comment.