Mods to web api for https

This commit is contained in:
Heath Volmer
2017-01-11 16:54:59 -07:00
parent e9f4917c55
commit 29346bae8f
12 changed files with 83 additions and 59 deletions

Binary file not shown.

View File

@@ -0,0 +1,11 @@
1/11/2017 2:54:45 PM, Info: Initializing SIMPLSharp Services...
1/11/2017 2:54:46 PM, Info: ProjectInfo successfully initialized.
1/11/2017 3:07:48 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.dll...
1/11/2017 3:07:48 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.dll
1/11/2017 3:07:48 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.clz...
1/11/2017 3:07:49 PM, Info: Saving project information...
1/11/2017 3:24:24 PM, Info: Validating assembly C:\Users\hvolmer\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.dll...
1/11/2017 3:24:24 PM, Info: Verifying assembly C:\Users\hvolmer\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.dll
1/11/2017 3:24:24 PM, Info: Creating Archive C:\Users\hvolmer\Desktop\working\pepperdash-simplsharp-core\Pepperdash Core\Pepperdash Core\bin\PepperDash_Core.clz...
1/11/2017 3:24:25 PM, Info: Saving project information...
1/11/2017 4:49:12 PM, Info: Terminating SIMPLSharp Services

View File

@@ -2,8 +2,9 @@
using System.Text; using System.Text;
using Crestron.SimplSharp; // For Basic SIMPL# Classes using Crestron.SimplSharp; // For Basic SIMPL# Classes
using Crestron.SimplSharp.CrestronIO; using Crestron.SimplSharp.CrestronIO;
using Crestron.SimplSharp.Net; using Crestron.SimplSharp.Net;
using Crestron.SimplSharp.Net.Http; using Crestron.SimplSharp.Net.Http;
using Crestron.SimplSharp.Net.Https;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
@@ -59,31 +60,35 @@ namespace PepperDash.Core.WebApi.Presets
public void GetUserForPasscode(string passcode) public void GetUserForPasscode(string passcode)
{ {
// Bullshit duplicate code here... These two cases should be the same
// except for https/http and the certificate ignores
if (!UrlBase.StartsWith("https"))
return;
var req = new HttpsClientRequest();
req.Url = new UrlParser(UrlBase + "/api/users/dopin");
req.RequestType = Crestron.SimplSharp.Net.Https.RequestType.Post;
req.Header.AddHeader(new HttpsHeader("Content-Type", "application/json"));
req.Header.AddHeader(new HttpsHeader("Accept", "application/json"));
var jo = new JObject();
jo.Add("pin", passcode);
req.ContentString = jo.ToString();
var client = new HttpsClient();
var req = new HttpClientRequest(); client.HostVerification = false;
req.Url = new UrlParser(UrlBase + "/api/users/dopin"); client.PeerVerification = false;
req.RequestType = RequestType.Post; var resp = client.Dispatch(req);
req.Header.AddHeader(new HttpHeader("Content-Type", "application/json")); if (resp.Code == 200)
req.Header.AddHeader(new HttpHeader("Accept", "application/json")); {
var jo = new JObject(); CrestronConsole.PrintLine("Received: {0}", resp.ContentString);
jo.Add("pin", passcode); var user = JsonConvert.DeserializeObject<User>(resp.ContentString);
req.ContentString = jo.ToString();
var client = new HttpClient();
var resp = client.Dispatch(req);
if (resp.Code == 200)
{
CrestronConsole.PrintLine("Received: {0}", resp.ContentString);
var user = JsonConvert.DeserializeObject<User>(resp.ContentString);
#warning CHECK for user success here?? #warning CHECK for user success here??
CurrentUser = user; CurrentUser = user;
var handler = UserReceived; var handler = UserReceived;
if (handler != null) if (handler != null)
UserReceived(this, new UserReceivedEventArgs(user)); UserReceived(this, new UserReceivedEventArgs(user));
} }
else else
CrestronConsole.PrintLine("No user received: {0}", resp.Code); CrestronConsole.PrintLine("No user received: {0}", resp.Code);
} }
/// <summary> /// <summary>
@@ -106,37 +111,41 @@ namespace PepperDash.Core.WebApi.Presets
PresetNumber = presetNumber PresetNumber = presetNumber
}; };
var req = new HttpClientRequest();
req.Url = new UrlParser(UrlBase + "/api/presets/userandroom");
req.RequestType = RequestType.Post;
req.Header.AddHeader(new HttpHeader("Content-Type", "application/json"));
req.Header.AddHeader(new HttpHeader("Accept", "application/json"));
req.ContentString = JsonConvert.SerializeObject(msg);
var client = new HttpClient();
try try
{ {
var resp = client.Dispatch(req); if (!UrlBase.StartsWith("https"))
if (resp.Code == 200) return;
{ var req = new HttpsClientRequest();
Debug.Console(1, this, "Received: {0}", resp.ContentString); req.Url = new UrlParser(UrlBase + "/api/presets/userandroom");
var preset = JsonConvert.DeserializeObject<Preset>(resp.ContentString); req.RequestType = Crestron.SimplSharp.Net.Https.RequestType.Post;
req.Header.AddHeader(new HttpsHeader("Content-Type", "application/json"));
req.Header.AddHeader(new HttpsHeader("Accept", "application/json"));
req.ContentString = JsonConvert.SerializeObject(msg);
CurrentPreset = preset; var client = new HttpsClient();
client.HostVerification = false;
//if there's no preset data, load the template client.PeerVerification = false;
if (preset.Data == null || preset.Data.Trim() == string.Empty || JObject.Parse(preset.Data).Count == 0) var resp = client.Dispatch(req);
{ if (resp.Code == 200)
Debug.Console(1, this, "Loaded preset has no data. Loading default template."); {
LoadDefaultPresetData(); Debug.Console(1, this, "Received: {0}", resp.ContentString);
return; var preset = JsonConvert.DeserializeObject<Preset>(resp.ContentString);
}
J2SMaster.LoadWithJson(preset.Data); CurrentPreset = preset;
var handler = PresetReceived;
if (handler != null) //if there's no preset data, load the template
PresetReceived(this, new PresetReceivedEventArgs(preset)); if (preset.Data == null || preset.Data.Trim() == string.Empty || JObject.Parse(preset.Data).Count == 0)
} {
Debug.Console(1, this, "Loaded preset has no data. Loading default template.");
LoadDefaultPresetData();
return;
}
J2SMaster.LoadWithJson(preset.Data);
var handler = PresetReceived;
if (handler != null)
PresetReceived(this, new PresetReceivedEventArgs(preset));
}
} }
catch (HttpException e) catch (HttpException e)
{ {
@@ -198,14 +207,18 @@ namespace PepperDash.Core.WebApi.Presets
{ {
CurrentPreset.Data = json; CurrentPreset.Data = json;
var req = new HttpClientRequest(); if (!UrlBase.StartsWith("https"))
req.RequestType = RequestType.Post; return;
var req = new HttpsClientRequest();
req.RequestType = Crestron.SimplSharp.Net.Https.RequestType.Post;
req.Url = new UrlParser(string.Format("{0}/api/presets/addorchange", UrlBase)); req.Url = new UrlParser(string.Format("{0}/api/presets/addorchange", UrlBase));
req.Header.AddHeader(new HttpHeader("Content-Type", "application/json")); req.Header.AddHeader(new HttpsHeader("Content-Type", "application/json"));
req.Header.AddHeader(new HttpHeader("Accept", "application/json")); req.Header.AddHeader(new HttpsHeader("Accept", "application/json"));
req.ContentString = JsonConvert.SerializeObject(CurrentPreset); req.ContentString = JsonConvert.SerializeObject(CurrentPreset);
var client = new HttpClient(); var client = new HttpsClient();
client.HostVerification = false;
client.PeerVerification = false;
try try
{ {
var resp = client.Dispatch(req); var resp = client.Dispatch(req);

View File

@@ -10,8 +10,8 @@
<ArchiveName /> <ArchiveName />
</RequiredInfo> </RequiredInfo>
<OptionalInfo> <OptionalInfo>
<CompiledOn>1/6/2017 8:53:46 AM</CompiledOn> <CompiledOn>1/11/2017 3:24:24 PM</CompiledOn>
<CompilerRev>1.0.6215.16012</CompilerRev> <CompilerRev>1.0.6220.27731</CompilerRev>
</OptionalInfo> </OptionalInfo>
<Plugin> <Plugin>
<Version>Crestron.SIMPLSharp, Version=2.0.48.0, Culture=neutral, PublicKeyToken=812d080f93e2de10</Version> <Version>Crestron.SIMPLSharp, Version=2.0.48.0, Culture=neutral, PublicKeyToken=812d080f93e2de10</Version>

View File

@@ -1,4 +1,4 @@
MainAssembly=PepperDash_Core.dll:5310f2702bb23a35bd60cde6a14b55ba MainAssembly=PepperDash_Core.dll:2ce705d0617973f5c800064ef6bd32cd
MainAssemblyMinFirmwareVersion=1.007.0017 MainAssemblyMinFirmwareVersion=1.007.0017
MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e
ü ü