コード例 #1
0
        public async Task <IEnumerable <Device> > GetThermostats(string username, string password)
        {
            var request = new ApiClientRequest
            {
                Username    = username,
                Password    = password,
                BaseAddress = ApiBaseAddress,
                RequestUri  = "ThermostatService.svc",
                Content     = CreateRequestContent(GetThermostatsRequest, username, password)
            };

            var response = await _soapApiClient.Request(request);

            var responseAsXml = XDocument.Parse(response);

            return(responseAsXml
                   .Descendants(EnergyNamespace + "ThermostatDetailsDataContract")
                   .Select(d => new Device
            {
                Identifier = new Guid(d.Descendants(ThermostatNamespace + "ThermostatId").Single().Value),
                Name = d.Descendants(ThermostatNamespace + "Name").Single().Value,
                Capability = DeviceCapability.None,
                Type = DeviceType.Fifthplay
            }));
        }
コード例 #2
0
        public Task <string> Request(ApiClientRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            if (string.IsNullOrWhiteSpace(request.Username))
            {
                throw new ArgumentException("Username is required", nameof(request));
            }
            if (string.IsNullOrWhiteSpace(request.Password))
            {
                throw new ArgumentException("Password is required", nameof(request));
            }
            if (string.IsNullOrWhiteSpace(request.BaseAddress))
            {
                throw new ArgumentException("BaseAddress is required", nameof(request));
            }
            if (string.IsNullOrWhiteSpace(request.RequestUri))
            {
                throw new ArgumentException("RequestUri is required", nameof(request));
            }
            if (string.IsNullOrWhiteSpace(request.Content))
            {
                throw new ArgumentException("Content is required", nameof(request));
            }

            using (var httpClient = CreateHttpClient(request.Username, request.Password, request.BaseAddress))
                using (var content = new StringContent(request.Content, Encoding.UTF8, "application/soap+xml"))
                {
                    var response = httpClient.PostAsync(request.RequestUri, content).Result;

                    if (!response.IsSuccessStatusCode)
                    {
                        var error = response.Content.ReadAsStringAsync().Result;

                        throw new InvalidOperationException($"{error} ({response.StatusCode} {response.ReasonPhrase})");
                    }

                    return(response
                           .Content
                           .ReadAsStringAsync());
                }
        }
コード例 #3
0
        public async Task SwitchSmartPlug(string username, string password, Guid identifier, bool isOn)
        {
            var request = new ApiClientRequest
            {
                Username    = username,
                Password    = password,
                BaseAddress = ApiBaseAddress,
                RequestUri  = "EnergyService.svc",
                Content     = CreateRequestContent(SwitchSmartPlugRequest, username, password)
                              .Replace("{smartplugid}", identifier.ToString())
                              .Replace("{value}", isOn.ToString().ToLowerInvariant())
            };

            var response = await _soapApiClient.Request(request);

            if (response.Contains("Fault"))
            {
                throw new Exception("Failed to switch smart plug");
            }
        }
コード例 #4
0
ファイル: ApiClient.cs プロジェクト: bowmark/allauth.lib
        public UploadDeviceBackupResponse UploadDeviceBackup(UploadDeviceBackupRequest requestData)
        {
            var apiClientRequest = new ApiClientRequest(ApiUrl, ApiKey, PrivateKeyPem);

            return(apiClientRequest.PerformRequest <UploadDeviceBackupResponse>("upload_device_backup", requestData));
        }
コード例 #5
0
ファイル: ApiClient.cs プロジェクト: bowmark/allauth.lib
        public RegisterOtpDeviceResponse RegisterOtpDevice(RegisterOtpDeviceRequest requestData)
        {
            var apiClientRequest = new ApiClientRequest(ApiUrl, ApiKey, PrivateKeyPem);

            return(apiClientRequest.PerformRequest <RegisterOtpDeviceResponse>("register_otp_device", requestData));
        }
コード例 #6
0
ファイル: ApiClient.cs プロジェクト: bowmark/allauth.lib
        public GetServerInfoResponse GetServerInfo(GetServerInfoRequest requestData)
        {
            var apiClientRequest = new ApiClientRequest(ApiUrl, ApiKey, PrivateKeyPem);

            return(apiClientRequest.PerformRequest <GetServerInfoResponse>("get_server_info", requestData));
        }
コード例 #7
0
ファイル: ApiClient.cs プロジェクト: bowmark/allauth.lib
        public GetDevicesKeysResponse GetDeviceKeys(GetDevicesKeysRequest requestData)
        {
            var apiClientRequest = new ApiClientRequest(ApiUrl, ApiKey, PrivateKeyPem);

            return(apiClientRequest.PerformRequest <GetDevicesKeysResponse>("get_device_keys", requestData));
        }
コード例 #8
0
ファイル: ApiClient.cs プロジェクト: bowmark/allauth.lib
        //================================================================================
        // DO NOT ADD ANY MORE REQUESTS HERE. PLACE IN "Requests" subnamespace.
        //================================================================================


        //
        // Authenticated Requests
        //

        public GetUserResponse GetUser(GetUserRequest requestData)
        {
            var apiClientRequest = new ApiClientRequest(ApiUrl, ApiKey, PrivateKeyPem);

            return(apiClientRequest.PerformRequest <GetUserResponse>("get_user", requestData));
        }
コード例 #9
0
ファイル: ApiClient.cs プロジェクト: bowmark/allauth.lib
 public UploadDeviceBackupResponse UploadDeviceBackup(UploadDeviceBackupRequest requestData)
 {
     var apiClientRequest = new ApiClientRequest(ApiUrl, ApiKey, PrivateKeyPem);
     return apiClientRequest.PerformRequest<UploadDeviceBackupResponse>("upload_device_backup", requestData);
 }
コード例 #10
0
ファイル: ApiClient.cs プロジェクト: bowmark/allauth.lib
 public RegisterOtpDeviceResponse RegisterOtpDevice(RegisterOtpDeviceRequest requestData)
 {
     var apiClientRequest = new ApiClientRequest(ApiUrl, ApiKey, PrivateKeyPem);
     return apiClientRequest.PerformRequest<RegisterOtpDeviceResponse>("register_otp_device", requestData);
 }
コード例 #11
0
ファイル: ApiClient.cs プロジェクト: bowmark/allauth.lib
 public GetServerInfoResponse GetServerInfo(GetServerInfoRequest requestData)
 {
     var apiClientRequest = new ApiClientRequest(ApiUrl, ApiKey, PrivateKeyPem);
     return apiClientRequest.PerformRequest<GetServerInfoResponse>("get_server_info", requestData);
 }
コード例 #12
0
ファイル: ApiClient.cs プロジェクト: bowmark/allauth.lib
 public GetDevicesKeysResponse GetDeviceKeys(GetDevicesKeysRequest requestData)
 {
     var apiClientRequest = new ApiClientRequest(ApiUrl, ApiKey, PrivateKeyPem);
     return apiClientRequest.PerformRequest<GetDevicesKeysResponse>("get_device_keys", requestData);
 }
コード例 #13
0
ファイル: ApiClient.cs プロジェクト: bowmark/allauth.lib
        //================================================================================
        // DO NOT ADD ANY MORE REQUESTS HERE. PLACE IN "Requests" subnamespace.
        //================================================================================
        
        
        //
        // Authenticated Requests
        //

        public GetUserResponse GetUser(GetUserRequest requestData)
        {
            var apiClientRequest = new ApiClientRequest(ApiUrl, ApiKey, PrivateKeyPem);
            return apiClientRequest.PerformRequest<GetUserResponse>("get_user", requestData);
        }