mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-12 03:05:01 +00:00
Compare commits
1 Commits
feature/Ge
...
1.13.5-hot
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
83c76340fc |
@@ -1,10 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
using Crestron.SimplSharp.Net.Http;
|
using Crestron.SimplSharp.Net.Http;
|
||||||
using Crestron.SimplSharp.Ssh;
|
|
||||||
using Crestron.SimplSharpPro.EthernetCommunication;
|
|
||||||
using PepperDash.Core;
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Core.DebugThings;
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Core
|
namespace PepperDash.Essentials.Core
|
||||||
{
|
{
|
||||||
@@ -16,130 +17,52 @@ namespace PepperDash.Essentials.Core
|
|||||||
public GenericHttpClient(string key, string name, string hostname)
|
public GenericHttpClient(string key, string name, string hostname)
|
||||||
: base(key, name)
|
: base(key, name)
|
||||||
{
|
{
|
||||||
Client = new HttpClient {HostName = hostname};
|
Client = new HttpClient();
|
||||||
}
|
Client.HostName = hostname;
|
||||||
|
|
||||||
|
|
||||||
public GenericHttpClient(string key, string name, string hostname, GenericHttpClientConnectionOptions options)
|
|
||||||
: base(key, name)
|
|
||||||
{
|
|
||||||
Client = new HttpClient
|
|
||||||
{
|
|
||||||
HostName = hostname,
|
|
||||||
Accept = options.Accept,
|
|
||||||
KeepAlive = options.KeepAlive,
|
|
||||||
Password = options.Password,
|
|
||||||
Timeout = options.Timeout,
|
|
||||||
TimeoutEnabled = options.TimeoutEnabled,
|
|
||||||
UserAgent = options.UserAgent,
|
|
||||||
UserName = options.UserName,
|
|
||||||
Version = options.Version
|
|
||||||
};
|
|
||||||
if (options.Port > 0) Client.Port = options.Port;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Send a HTTP Get Request to a client
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="path">Path to request node</param>
|
/// <param name="path"></param>
|
||||||
public void SendText(string path)
|
public void SendText(string path)
|
||||||
{
|
{
|
||||||
var url = string.Format("http://{0}/{1}", Client.HostName, path);
|
HttpClientRequest request = new HttpClientRequest();
|
||||||
var request = new HttpClientRequest()
|
string url = string.Format("http://{0}/{1}", Client.HostName, path);
|
||||||
{
|
request.Url = new UrlParser(url);
|
||||||
Url = new UrlParser(url)
|
HttpClient.DISPATCHASYNC_ERROR error = Client.DispatchAsyncEx(request, Response, request);
|
||||||
};
|
|
||||||
var error = Client.DispatchAsyncEx(request, Response, request);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Send a HTTP Get Request to a client using a formatted string
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="format">Path</param>
|
|
||||||
/// <param name="items">Parameters for Path String Formatting</param>
|
|
||||||
public void SendText(string format, params object[] items)
|
public void SendText(string format, params object[] items)
|
||||||
{
|
{
|
||||||
var url = string.Format("http://{0}/{1}", Client.HostName, string.Format(format, items));
|
HttpClientRequest request = new HttpClientRequest();
|
||||||
var request = new HttpClientRequest()
|
string url = string.Format("http://{0}/{1}", Client.HostName, string.Format(format, items));
|
||||||
{
|
request.Url = new UrlParser(url);
|
||||||
Url = new UrlParser(url)
|
HttpClient.DISPATCHASYNC_ERROR error = Client.DispatchAsyncEx(request, Response, request);
|
||||||
};
|
|
||||||
var error = Client.DispatchAsyncEx(request, Response, request);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Send a unidirectional HTTP Get Request to a client using a formatted string
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="format">Path</param>
|
|
||||||
/// <param name="items">Parameters for Path String Formatting</param>
|
|
||||||
public void SendTextNoResponse(string format, params object[] items)
|
public void SendTextNoResponse(string format, params object[] items)
|
||||||
{
|
{
|
||||||
var url = string.Format("http://{0}/{1}", Client.HostName, string.Format(format, items));
|
HttpClientRequest request = new HttpClientRequest();
|
||||||
var request = new HttpClientRequest()
|
string url = string.Format("http://{0}/{1}", Client.HostName, string.Format(format, items));
|
||||||
{
|
request.Url = new UrlParser(url);
|
||||||
Url = new UrlParser(url)
|
|
||||||
};
|
|
||||||
Client.Dispatch(request);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Send an HTTP Request of a specific request type
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="requestType">HTTP Request Type</param>
|
|
||||||
/// <param name="path">Path to request node</param>
|
|
||||||
public void SendText(RequestType requestType, string path)
|
|
||||||
{
|
|
||||||
var url = string.Format("http://{0}/{1}", Client.HostName, path);
|
|
||||||
var request = new HttpClientRequest()
|
|
||||||
{
|
|
||||||
Url = new UrlParser(url),
|
|
||||||
RequestType = requestType
|
|
||||||
};
|
|
||||||
var error = Client.DispatchAsyncEx(request, Response, request);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Send an HTTP Request of a specific request type using a formatted string
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="requestType">HTTP Request Type</param>
|
|
||||||
/// <param name="format">Path</param>
|
|
||||||
/// <param name="items">Parameters for Path String Formatting</param>
|
|
||||||
public void SendText(RequestType requestType, string format, params object[] items)
|
|
||||||
{
|
|
||||||
var url = string.Format("http://{0}/{1}", Client.HostName, string.Format(format, items));
|
|
||||||
var request = new HttpClientRequest()
|
|
||||||
{
|
|
||||||
Url = new UrlParser(url),
|
|
||||||
RequestType = requestType
|
|
||||||
};
|
|
||||||
var error = Client.DispatchAsyncEx(request, Response, request);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Send a unidirectional HTTP Request of a specific request type using a formatted string
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="requestType">HTTP Request Type</param>
|
|
||||||
/// <param name="format">Path</param>
|
|
||||||
/// <param name="items">Parameters for Path String Formatting</param>
|
|
||||||
public void SendTextNoResponse(RequestType requestType, string format, params object[] items)
|
|
||||||
{
|
|
||||||
var url = string.Format("http://{0}/{1}", Client.HostName, string.Format(format, items));
|
|
||||||
var request = new HttpClientRequest()
|
|
||||||
{
|
|
||||||
Url = new UrlParser(url)
|
|
||||||
};
|
|
||||||
Client.Dispatch(request);
|
Client.Dispatch(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Response(HttpClientResponse response, HTTP_CALLBACK_ERROR error, object request)
|
private void Response(HttpClientResponse response, HTTP_CALLBACK_ERROR error, object request)
|
||||||
{
|
{
|
||||||
if (error != HTTP_CALLBACK_ERROR.COMPLETED) return;
|
if (error == HTTP_CALLBACK_ERROR.COMPLETED)
|
||||||
|
{
|
||||||
var responseReceived = response;
|
var responseReceived = response;
|
||||||
|
|
||||||
if (responseReceived.ContentString.Length <= 0) return;
|
if (responseReceived.ContentString.Length > 0)
|
||||||
if (ResponseRecived == null) return;
|
{
|
||||||
var httpClientRequest = request as HttpClientRequest;
|
if (ResponseRecived != null)
|
||||||
if (httpClientRequest != null)
|
ResponseRecived(this, new GenericHttpClientEventArgs(responseReceived.ContentString, (request as HttpClientRequest).Url.ToString(), error));
|
||||||
ResponseRecived(this, new GenericHttpClientEventArgs(responseReceived.ContentString, httpClientRequest.Url.ToString(), error));
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -177,8 +100,6 @@ namespace PepperDash.Essentials.Core
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public class GenericHttpClientEventArgs : EventArgs
|
public class GenericHttpClientEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public string ResponseText { get; private set; }
|
public string ResponseText { get; private set; }
|
||||||
@@ -191,84 +112,4 @@ namespace PepperDash.Essentials.Core
|
|||||||
Error = error;
|
Error = error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Objedct to set parameters for HTTP Requests
|
|
||||||
/// </summary>
|
|
||||||
public class GenericHttpClientConnectionOptions
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets content types that are acceptable for the response. The default
|
|
||||||
/// value is "text/html, image/gif, image/jpeg, image/png, */*".
|
|
||||||
/// </summary>
|
|
||||||
[DefaultValue("text/html, image/gif, image/jpeg, image/png")]
|
|
||||||
public string Accept { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Controls whether to use HTTP Keep-Alive to keep the connection alive between
|
|
||||||
/// requests. If enabled (true) , once a request is made and a connection is
|
|
||||||
/// established, this connection is kept open and used for future requests. If
|
|
||||||
/// disabled, the connection is closed, and a new connection is created for future
|
|
||||||
/// requests.
|
|
||||||
/// </summary>
|
|
||||||
[DefaultValue(true)]
|
|
||||||
public bool KeepAlive { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// This property controls whether the request operation will do an automatic
|
|
||||||
/// timeout checking. If timeout handling is turned on (i.e. this property is
|
|
||||||
/// set to true) and a request takes longer than Timeout, it will be terminated.
|
|
||||||
/// </summary>
|
|
||||||
[DefaultValue(true)]
|
|
||||||
public bool TimeoutEnabled { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the maximum amount of time (in seconds) that a client will wait
|
|
||||||
/// for a server response within a single request. The default value is 60 seconds
|
|
||||||
/// (1 minute). The timeout handling can be activated via the TimeoutEnabled
|
|
||||||
/// property.
|
|
||||||
/// </summary>
|
|
||||||
[DefaultValue(60)]
|
|
||||||
public int Timeout { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the version identifier of the UserAgent. Can be used to mimic
|
|
||||||
/// particular browsers like Internet Explorer 6.0
|
|
||||||
/// </summary>
|
|
||||||
[DefaultValue("1.1")]
|
|
||||||
public string Version { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the identifier of the software being used to retrieve data via
|
|
||||||
/// the URL. Some custom HTTP servers check this HTTP header to provide content
|
|
||||||
/// optimized for particular HTTP browsers.
|
|
||||||
/// </summary>
|
|
||||||
[DefaultValue("Crestron SimplSharp HTTP Client")]
|
|
||||||
public string UserAgent { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Name that will be inserted into the Authorization HTTP header in the request
|
|
||||||
/// to the server.
|
|
||||||
/// </summary>
|
|
||||||
public string UserName { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Password that will be inserted into the Authorization HTTP header in the
|
|
||||||
/// request to the server.
|
|
||||||
/// </summary>
|
|
||||||
public string Password { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The server Port that you intend the client to connect to. If you do not
|
|
||||||
/// assign a port number on this property, the port number in the parsed URL
|
|
||||||
/// will be used. If a port number is assigned in the parsed URL, it will take
|
|
||||||
/// precedence over this property.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// If you do not assign a port number on this property, the port number in the
|
|
||||||
/// parsed URL will be used.
|
|
||||||
/// </remarks>
|
|
||||||
///
|
|
||||||
public int Port { get; set; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using Crestron.SimplSharp;
|
using Crestron.SimplSharp;
|
||||||
using PepperDash.Core;
|
using PepperDash.Core;
|
||||||
using PepperDash.Essentials.Core;
|
using PepperDash.Essentials.Core;
|
||||||
@@ -9,7 +8,6 @@ namespace PepperDash_Essentials_Core.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface for any device that is able to control it'spower and has a configurable reboot time
|
/// Interface for any device that is able to control it'spower and has a configurable reboot time
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Obsolete("PepperDash_Essentials_Core.Devices is Deprecated - use PepperDash.Essentials.Core")]
|
|
||||||
public interface IHasPowerCycle : IKeyName, IHasPowerControlWithFeedback
|
public interface IHasPowerCycle : IKeyName, IHasPowerControlWithFeedback
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -26,7 +24,6 @@ namespace PepperDash_Essentials_Core.Devices
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface for any device that contains a collection of IHasPowerReboot Devices
|
/// Interface for any device that contains a collection of IHasPowerReboot Devices
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Obsolete("PepperDash_Essentials_Core.Devices is Deprecated - use PepperDash.Essentials.Core")]
|
|
||||||
public interface IHasControlledPowerOutlets : IKeyName
|
public interface IHasControlledPowerOutlets : IKeyName
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -1,87 +0,0 @@
|
|||||||
using Crestron.SimplSharp;
|
|
||||||
using PepperDash.Core;
|
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Core
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Interface for any device that has a battery that can be monitored
|
|
||||||
/// </summary>
|
|
||||||
public interface IHasBatteryStats : IKeyName
|
|
||||||
{
|
|
||||||
int BatteryPercentage { get; }
|
|
||||||
int BatteryCautionThresholdPercentage { get; }
|
|
||||||
int BatteryWarningThresholdPercentage { get; }
|
|
||||||
BoolFeedback BatteryIsWarningFeedback { get; }
|
|
||||||
BoolFeedback BatteryIsCautionFeedback { get; }
|
|
||||||
BoolFeedback BatteryIsOkFeedback { get; }
|
|
||||||
IntFeedback BatteryPercentageFeedback { get; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Interface for any device that has a battery that can be monitored and the ability to charge and discharge
|
|
||||||
/// </summary>
|
|
||||||
public interface IHasBatteryCharging : IHasBatteryStats
|
|
||||||
{
|
|
||||||
BoolFeedback BatteryIsCharging { get; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Interface for any device that has multiple batteries that can be monitored
|
|
||||||
/// </summary>
|
|
||||||
public interface IHasBatteries : IKeyName
|
|
||||||
{
|
|
||||||
ReadOnlyDictionary<string, IHasBatteryStats> Batteries { get; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface IHasBatteryStatsExtended : IHasBatteryStats
|
|
||||||
{
|
|
||||||
int InputVoltage { get; }
|
|
||||||
int OutputVoltage { get; }
|
|
||||||
int InptuCurrent { get; }
|
|
||||||
int OutputCurrent { get; }
|
|
||||||
|
|
||||||
IntFeedback InputVoltageFeedback { get; }
|
|
||||||
IntFeedback OutputVoltageFeedback { get; }
|
|
||||||
IntFeedback InputCurrentFeedback { get; }
|
|
||||||
IntFeedback OutputCurrentFeedback { get; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Interface for any device that is able to control its power, has a configurable reboot time, and has batteries that can be monitored
|
|
||||||
/// </summary>
|
|
||||||
public interface IHasPowerCycleWithBattery : IHasPowerCycle, IHasBatteryStats
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Interface for any device that is able to control it's power and has a configurable reboot time
|
|
||||||
/// </summary>
|
|
||||||
public interface IHasPowerCycle : IKeyName, IHasPowerControlWithFeedback
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Delay between power off and power on for reboot
|
|
||||||
/// </summary>
|
|
||||||
int PowerCycleTimeMs { get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Reboot outlet
|
|
||||||
/// </summary>
|
|
||||||
void PowerCycle();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Interface for any device that contains a collection of IHasPowerReboot Devices
|
|
||||||
/// </summary>
|
|
||||||
public interface IHasControlledPowerOutlets : IKeyName
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Collection of IPduOutlets
|
|
||||||
/// </summary>
|
|
||||||
ReadOnlyDictionary<int, IHasPowerCycle> PduOutlets { get; }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -200,7 +200,6 @@
|
|||||||
<Compile Include="Crestron IO\Relay\GenericRelayDevice.cs" />
|
<Compile Include="Crestron IO\Relay\GenericRelayDevice.cs" />
|
||||||
<Compile Include="Crestron IO\Relay\ISwitchedOutput.cs" />
|
<Compile Include="Crestron IO\Relay\ISwitchedOutput.cs" />
|
||||||
<Compile Include="Crestron IO\StatusSign\StatusSignController.cs" />
|
<Compile Include="Crestron IO\StatusSign\StatusSignController.cs" />
|
||||||
<Compile Include="Devices\PowerInterfaces.cs" />
|
|
||||||
<Compile Include="Web\RequestHandlers\AppDebugRequestHandler.cs" />
|
<Compile Include="Web\RequestHandlers\AppDebugRequestHandler.cs" />
|
||||||
<Compile Include="Web\RequestHandlers\GetFeedbacksForDeviceRequestHandler.cs" />
|
<Compile Include="Web\RequestHandlers\GetFeedbacksForDeviceRequestHandler.cs" />
|
||||||
<Compile Include="Web\EssentialsWebApiHelpers.cs" />
|
<Compile Include="Web\EssentialsWebApiHelpers.cs" />
|
||||||
|
|||||||
Reference in New Issue
Block a user