diff --git a/AsbCloudApp/Data/DataSaubBaseDto.cs b/AsbCloudApp/Data/DataSaubBaseDto.cs
index b4e86b22..148699cb 100644
--- a/AsbCloudApp/Data/DataSaubBaseDto.cs
+++ b/AsbCloudApp/Data/DataSaubBaseDto.cs
@@ -9,6 +9,7 @@ namespace AsbCloudApp.Data
{
//[JsonPropertyName("date")]
public DateTime Date { get; set; }
+
///
/// Режим работы САУБ:
/// 0 - "РУЧНОЙ"
diff --git a/AsbCloudApp/Data/PaginationContainer.cs b/AsbCloudApp/Data/PaginationContainer.cs
index 7ddb3921..ba33eaf3 100644
--- a/AsbCloudApp/Data/PaginationContainer.cs
+++ b/AsbCloudApp/Data/PaginationContainer.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
+using System.Collections.Generic;
namespace AsbCloudApp.Data
{
@@ -24,17 +22,17 @@ namespace AsbCloudApp.Data
/// Кол-во записей пропущеных с начала таблицы в запросе от api
///
public int Skip { get; set; }
-
+
///
/// Кол-во записей в запросе от api
///
public int Take { get; set; }
-
+
///
/// Кол-во записей всего в таблице
///
public int Count { get; set; }
-
+
///
/// Данные
///
diff --git a/AsbCloudApp/Data/TelemetryDto.cs b/AsbCloudApp/Data/TelemetryDto.cs
deleted file mode 100644
index ab19052b..00000000
--- a/AsbCloudApp/Data/TelemetryDto.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace AsbCloudApp.Data
-{
- public class TelemetryDto
- {
- public string HmiVersion { get; set; }
-
- public T Payload { get; set; }
- }
-}
diff --git a/AsbCloudApp/Data/TelemetryInfoDto.cs b/AsbCloudApp/Data/TelemetryInfoDto.cs
index 7d6a964b..93843898 100644
--- a/AsbCloudApp/Data/TelemetryInfoDto.cs
+++ b/AsbCloudApp/Data/TelemetryInfoDto.cs
@@ -4,11 +4,12 @@ namespace AsbCloudApp.Data
{
public class TelemetryInfoDto
{
- public DateTime Date { get; set; }
+ public DateTime DrillingStartDate { get; set; }
public string TimeZoneId { get; set; }
public double TimeZoneOffsetTotalHours { get; set; }
- public string Caption { get; set; }
+ public string Well { get; set; }
public string Cluster { get; set; }
+ public string Customer { get; set; }
public string Deposit { get; set; }
public string HmiVersion { get; set; }
public string PlcVersion { get; set; }
diff --git a/AsbCloudApp/Data/TelemetryMessageDto.cs b/AsbCloudApp/Data/TelemetryMessageDto.cs
index 34f452cd..40a289e8 100644
--- a/AsbCloudApp/Data/TelemetryMessageDto.cs
+++ b/AsbCloudApp/Data/TelemetryMessageDto.cs
@@ -8,15 +8,9 @@ namespace AsbCloudApp.Data
public class TelemetryMessageDto
{
public int Id { get; set; }
-
public DateTime Date { get; set; }
-
public int IdEvent { get; set; }
-
- public int? State { get; set; }
-
public int? IdTelemetryUser { get; set; }
-
public string Arg0 { get; set; }
public string Arg1 { get; set; }
public string Arg2 { get; set; }
diff --git a/AsbCloudDb/Model/Message.cs b/AsbCloudDb/Model/Message.cs
index d263b26a..e8bcee04 100644
--- a/AsbCloudDb/Model/Message.cs
+++ b/AsbCloudDb/Model/Message.cs
@@ -26,9 +26,6 @@ namespace AsbCloudDb.Model
[Column("date", TypeName = "timestamp with time zone")]
public DateTime Date { get; set; }
- [Column("state"), Comment("1 - сработало событие. 0 - событие пропало.")]
- public int? State { get; set; }
-
[Column("arg0"), Comment("Аргумент №0 для вставки в шаблон сообщения")]
[StringLength(255)]
public string Arg0 { get; set; }
diff --git a/AsbCloudDb/Model/TelemetryInfo.cs b/AsbCloudDb/Model/TelemetryInfo.cs
index 9a592443..8e0f3ebf 100644
--- a/AsbCloudDb/Model/TelemetryInfo.cs
+++ b/AsbCloudDb/Model/TelemetryInfo.cs
@@ -1,16 +1,15 @@
using System;
-using System.Collections.Generic;
-using System.Text;
namespace AsbCloudDb.Model
{
public class TelemetryInfo
{
- public DateTime Date { get; set; }
+ public DateTime DrillingStartDate { get; set; }
public string TimeZoneId { get; set; }
public double TimeZoneOffsetTotalHours { get; set; }
- public string Caption { get; set; }
+ public string Well { get; set; }
public string Cluster { get; set; }
+ public string Customer { get; set; }
public string Deposit { get; set; }
public string HmiVersion { get; set; }
public string PlcVersion { get; set; }
diff --git a/AsbCloudInfrastructure/Services/MessageService.cs b/AsbCloudInfrastructure/Services/MessageService.cs
index e4eed486..1a6c57a8 100644
--- a/AsbCloudInfrastructure/Services/MessageService.cs
+++ b/AsbCloudInfrastructure/Services/MessageService.cs
@@ -48,7 +48,6 @@ namespace AsbCloudInfrastructure.Services
var messages = from m in db.Messages
where m.IdTelemetry == telemetry.Id
- && m.State == 1
select m;
if ((categoryids != default) && (categoryids.Count() > 0))
@@ -63,7 +62,7 @@ namespace AsbCloudInfrastructure.Services
messages = messages.Where(m => eventIds.Contains(m.IdEvent));
}
- var result = new PaginationContainer() { Skip = skip, Take = take};
+ var result = new PaginationContainer() { Skip = skip, Take = take };
messages = messages.OrderByDescending(m => m.Date);
@@ -117,6 +116,7 @@ namespace AsbCloudInfrastructure.Services
foreach (var dto in dtos)
{
var entity = mapper.Map(dto);
+ entity.Id = 0;
entity.IdTelemetry = telemetryId;
db.Messages.Add(entity);
}
diff --git a/AsbCloudInfrastructure/Services/TelemetryService.cs b/AsbCloudInfrastructure/Services/TelemetryService.cs
index 2eb58845..e81f80e1 100644
--- a/AsbCloudInfrastructure/Services/TelemetryService.cs
+++ b/AsbCloudInfrastructure/Services/TelemetryService.cs
@@ -24,7 +24,7 @@ namespace AsbCloudInfrastructure.Services
public int? GetWellIdByTelemetryUid(string uid)
=> GetWellByTelemetryUid(uid)?.Id;
-
+
public void UpdateInfo(string uid, TelemetryInfoDto info)
{
var telemetry = GetOrCreateTelemetryByUid(uid);
diff --git a/AsbCloudInfrastructure/Services/WellService.cs b/AsbCloudInfrastructure/Services/WellService.cs
index feb98403..13ede118 100644
--- a/AsbCloudInfrastructure/Services/WellService.cs
+++ b/AsbCloudInfrastructure/Services/WellService.cs
@@ -1,7 +1,6 @@
using AsbCloudApp.Data;
using AsbCloudApp.Services;
using AsbCloudDb.Model;
-using AutoMapper;
using System.Collections.Generic;
using System.Linq;
diff --git a/AsbCloudWebApi/Controllers/DataController.cs b/AsbCloudWebApi/Controllers/DataController.cs
index fe3a0d64..171d3d28 100644
--- a/AsbCloudWebApi/Controllers/DataController.cs
+++ b/AsbCloudWebApi/Controllers/DataController.cs
@@ -34,7 +34,7 @@ namespace AsbCloudWebApi.Controllers
[HttpGet]
[Route("{wellId}/data")]
[ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)]
- public IActionResult Get(int wellId, DateTime begin = default, int intervalSec = 600, int approxPointsCount = 1024)
+ public IActionResult GetData(int wellId, DateTime begin = default, int intervalSec = 600, int approxPointsCount = 1024)
{
if (begin == default)
begin = DateTime.Now.AddSeconds(-intervalSec);
diff --git a/AsbCloudWebApi/Controllers/MessageController.cs b/AsbCloudWebApi/Controllers/MessageController.cs
index be3c02ea..de7ab106 100644
--- a/AsbCloudWebApi/Controllers/MessageController.cs
+++ b/AsbCloudWebApi/Controllers/MessageController.cs
@@ -30,7 +30,7 @@ namespace AsbCloudWebApi.Controllers
[HttpGet]
[Route("{wellId}/message")]
[ProducesResponseType(typeof(PaginationContainer), (int)System.Net.HttpStatusCode.OK)]
- public IActionResult Get(int wellId, [FromQuery] IEnumerable categoryids = default, DateTime begin = default, DateTime end = default, int skip = 0, int take = 32)
+ public IActionResult GetMessage(int wellId, int skip = 0, int take = 32, [FromQuery] IEnumerable categoryids = default, DateTime begin = default, DateTime end = default)
{
if (take > 1024)
return BadRequest("limit mast be less then 1024");
diff --git a/AsbCloudWebApi/Controllers/TelemetryController.cs b/AsbCloudWebApi/Controllers/TelemetryController.cs
index 39a8aa1f..b066e9e1 100644
--- a/AsbCloudWebApi/Controllers/TelemetryController.cs
+++ b/AsbCloudWebApi/Controllers/TelemetryController.cs
@@ -24,11 +24,11 @@ namespace AsbCloudWebApi.Controllers
private readonly IHubContext telemetryHubContext;
public TelemetryController(
- ITelemetryService telemetryService,
- IDataService DataService,
- IMessageService messageService,
- IEventService eventService,
- ITelemetryUserService telemetryUserService,
+ ITelemetryService telemetryService,
+ IDataService DataService,
+ IMessageService messageService,
+ IEventService eventService,
+ ITelemetryUserService telemetryUserService,
IHubContext telemetryHubContext)
{
this.DataService = DataService;
@@ -47,7 +47,7 @@ namespace AsbCloudWebApi.Controllers
///
[HttpPost]
[Route("{uid}/info")]
- public IActionResult Info(string uid, [FromBody] TelemetryInfoDto info)
+ public IActionResult PostInfo(string uid, [FromBody] TelemetryInfoDto info)
{
telemetryService.UpdateInfo(uid, info);
return Ok();
@@ -61,7 +61,7 @@ namespace AsbCloudWebApi.Controllers
///
[HttpPost]
[Route("{uid}/data")]
- public IActionResult Data(string uid, [FromBody] IEnumerable dtos)
+ public IActionResult PostData(string uid, [FromBody] IEnumerable dtos)
{
var wellId = telemetryService.GetWellIdByTelemetryUid(uid);
DataService.UpdateData(uid, dtos);
@@ -80,7 +80,7 @@ namespace AsbCloudWebApi.Controllers
///
[HttpPost]
[Route("{uid}/message")]
- public IActionResult Message(string uid, [FromBody] IEnumerable dtos)
+ public IActionResult PostMessages(string uid, [FromBody] IEnumerable dtos)
{
var wellId = telemetryService.GetWellIdByTelemetryUid(uid);
messageService.Insert(uid, dtos);
@@ -99,7 +99,7 @@ namespace AsbCloudWebApi.Controllers
///
[HttpPost]
[Route("{uid}/event")]
- public IActionResult Events(string uid, [FromBody] List events)
+ public IActionResult PostEvents(string uid, [FromBody] List events)
{
eventService.Upsert(uid, events);
return Ok();
@@ -113,10 +113,37 @@ namespace AsbCloudWebApi.Controllers
///
[HttpPost]
[Route("{uid}/user")]
- public IActionResult Users(string uid, [FromBody] List users)
+ public IActionResult PostUsers(string uid, [FromBody] List users)
{
telemetryUserService.Upsert(uid, users);
return Ok();
}
+
+ ///
+ /// Загрузка архива (sqlite3).
+ ///
+ /// var fileName = @"C:\temp\default.sqlite3";
+ /// var fileStream = System.IO.File.OpenRead(fileName);
+ /// var file = new FileParameter(fileStream, System.IO.Path.GetFileName(fileName));
+ /// cli.ApiTelemetryDbAsync("1", new List<FileParameter> { file }).Wait();
+ ///
+ ///
+ ///
+ ///
+ ///
+ //[HttpPost]
+ //[Route("{uid}/db")]
+ //public IActionResult PostDb(string uid, IFormFileCollection files)
+ //{
+ // foreach (var file in files)
+ // {
+ // var fileName = string.IsNullOrEmpty(file.FileName)
+ // ? System.IO.Path.GetTempFileName()
+ // : file.FileName;
+ // using (var stream = System.IO.File.Create(fileName))
+ // file.CopyTo(stream);
+ // }
+ // return Ok();
+ //}
}
}
diff --git a/AsbCloudWebApi/Controllers/WellController.cs b/AsbCloudWebApi/Controllers/WellController.cs
index dd9d36cc..8f55dc49 100644
--- a/AsbCloudWebApi/Controllers/WellController.cs
+++ b/AsbCloudWebApi/Controllers/WellController.cs
@@ -20,7 +20,7 @@ namespace AsbCloudWebApi.Controllers
[HttpGet]
[ProducesResponseType(typeof(IEnumerable), (int)System.Net.HttpStatusCode.OK)]
- public IActionResult Get()
+ public IActionResult GetWells()
{
var claimIdCustomer = User.FindFirst("IdCustomer");
diff --git a/ConsoleApp1/Connected Services/OpenAPIService/ConnectedService.json b/ConsoleApp1/Connected Services/OpenAPIService/ConnectedService.json
new file mode 100644
index 00000000..08e9f151
--- /dev/null
+++ b/ConsoleApp1/Connected Services/OpenAPIService/ConnectedService.json
@@ -0,0 +1,162 @@
+{
+ "ProviderId": "Unchase.OpenAPI.ConnectedService",
+ "Version": "1.5.20.0",
+ "GettingStartedDocument": {
+ "Uri": "https://github.com/unchase/Unchase.OpenAPI.Connectedservice/"
+ },
+ "ExtendedData": {
+ "ServiceName": "OpenAPIService",
+ "GeneratedFileName": "OpenAPI",
+ "Endpoint": "https://localhost:5001/swagger/v1/swagger.json",
+ "GeneratedFileNamePrefix": null,
+ "GenerateCSharpClient": true,
+ "GenerateTypeScriptClient": false,
+ "GenerateCSharpController": false,
+ "OpenApiToCSharpClientCommand": {
+ "ClientBaseClass": null,
+ "ConfigurationClass": null,
+ "GenerateClientClasses": true,
+ "GenerateClientInterfaces": false,
+ "ClientBaseInterface": null,
+ "InjectHttpClient": true,
+ "DisposeHttpClient": true,
+ "ProtectedMethods": [],
+ "GenerateExceptionClasses": true,
+ "ExceptionClass": "ApiException",
+ "WrapDtoExceptions": true,
+ "UseHttpClientCreationMethod": false,
+ "HttpClientType": "System.Net.Http.HttpClient",
+ "UseHttpRequestMessageCreationMethod": false,
+ "UseBaseUrl": true,
+ "GenerateBaseUrlProperty": true,
+ "GenerateSyncMethods": false,
+ "GeneratePrepareRequestAndProcessResponseAsAsyncMethods": false,
+ "ExposeJsonSerializerSettings": false,
+ "ClientClassAccessModifier": "public",
+ "TypeAccessModifier": "public",
+ "GenerateContractsOutput": false,
+ "ContractsNamespace": null,
+ "ContractsOutputFilePath": null,
+ "ParameterDateTimeFormat": "s",
+ "ParameterDateFormat": "yyyy-MM-dd",
+ "GenerateUpdateJsonSerializerSettingsMethod": true,
+ "UseRequestAndResponseSerializationSettings": false,
+ "SerializeTypeInformation": false,
+ "QueryNullValue": "",
+ "ClassName": "{controller}Client",
+ "OperationGenerationMode": 1,
+ "AdditionalNamespaceUsages": [],
+ "AdditionalContractNamespaceUsages": [],
+ "GenerateOptionalParameters": false,
+ "GenerateJsonMethods": false,
+ "EnforceFlagEnums": false,
+ "ParameterArrayType": "System.Collections.Generic.IEnumerable",
+ "ParameterDictionaryType": "System.Collections.Generic.IDictionary",
+ "ResponseArrayType": "System.Collections.Generic.ICollection",
+ "ResponseDictionaryType": "System.Collections.Generic.IDictionary",
+ "WrapResponses": false,
+ "WrapResponseMethods": [],
+ "GenerateResponseClasses": true,
+ "ResponseClass": "SwaggerResponse",
+ "Namespace": "ConsoleApp1.OpenAPIService",
+ "RequiredPropertiesMustBeDefined": true,
+ "DateType": "System.DateTimeOffset",
+ "JsonConverters": null,
+ "AnyType": "object",
+ "DateTimeType": "System.DateTimeOffset",
+ "TimeType": "System.TimeSpan",
+ "TimeSpanType": "System.TimeSpan",
+ "ArrayType": "System.Collections.Generic.ICollection",
+ "ArrayInstanceType": "System.Collections.ObjectModel.Collection",
+ "DictionaryType": "System.Collections.Generic.IDictionary",
+ "DictionaryInstanceType": "System.Collections.Generic.Dictionary",
+ "ArrayBaseType": "System.Collections.ObjectModel.Collection",
+ "DictionaryBaseType": "System.Collections.Generic.Dictionary",
+ "ClassStyle": 0,
+ "JsonLibrary": 0,
+ "GenerateDefaultValues": true,
+ "GenerateDataAnnotations": true,
+ "ExcludedTypeNames": [],
+ "ExcludedParameterNames": [],
+ "HandleReferences": false,
+ "GenerateImmutableArrayProperties": false,
+ "GenerateImmutableDictionaryProperties": false,
+ "JsonSerializerSettingsTransformationMethod": null,
+ "InlineNamedArrays": false,
+ "InlineNamedDictionaries": false,
+ "InlineNamedTuples": true,
+ "InlineNamedAny": false,
+ "GenerateDtoTypes": true,
+ "GenerateOptionalPropertiesAsNullable": false,
+ "GenerateNullableReferenceTypes": false,
+ "TemplateDirectory": null,
+ "TypeNameGeneratorType": null,
+ "PropertyNameGeneratorType": null,
+ "EnumNameGeneratorType": null,
+ "ServiceHost": null,
+ "ServiceSchemes": null,
+ "output": "OpenAPI.cs",
+ "newLineBehavior": 0
+ },
+ "ExcludeTypeNamesLater": true,
+ "OpenApiToTypeScriptClientCommand": null,
+ "OpenApiToCSharpControllerCommand": null,
+ "Variables": null,
+ "Runtime": 0,
+ "CopySpecification": false,
+ "OpenGeneratedFilesOnComplete": false,
+ "UseRelativePath": false,
+ "ConvertFromOdata": false,
+ "OpenApiConvertSettings": {
+ "ServiceRoot": "http://localhost",
+ "Version": {
+ "Major": 1,
+ "Minor": 0,
+ "Build": 1,
+ "Revision": -1,
+ "MajorRevision": -1,
+ "MinorRevision": -1
+ },
+ "EnableKeyAsSegment": null,
+ "EnableUnqualifiedCall": false,
+ "EnableOperationPath": true,
+ "EnableOperationImportPath": true,
+ "EnableNavigationPropertyPath": true,
+ "TagDepth": 4,
+ "PrefixEntityTypeNameBeforeKey": false,
+ "OpenApiSpecVersion": 1,
+ "EnableOperationId": true,
+ "EnableUriEscapeFunctionCall": false,
+ "VerifyEdmModel": false,
+ "IEEE754Compatible": false,
+ "TopExample": 50,
+ "EnablePagination": false,
+ "PageableOperationName": "listMore",
+ "EnableDiscriminatorValue": false,
+ "EnableDerivedTypesReferencesForResponses": false,
+ "EnableDerivedTypesReferencesForRequestBody": false,
+ "PathPrefix": "OData",
+ "RoutePathPrefixProvider": {
+ "PathPrefix": "OData",
+ "Parameters": null
+ },
+ "ShowLinks": false,
+ "ShowSchemaExamples": false,
+ "RequireDerivedTypesConstraintForBoundOperations": false,
+ "ShowRootPath": false,
+ "ShowMsDosGroupPath": true,
+ "PathProvider": null
+ },
+ "OpenApiSpecVersion": 0,
+ "UseNetworkCredentials": false,
+ "NetworkCredentialsUserName": null,
+ "NetworkCredentialsPassword": null,
+ "NetworkCredentialsDomain": null,
+ "WebProxyUri": null,
+ "UseWebProxy": false,
+ "UseWebProxyCredentials": false,
+ "WebProxyNetworkCredentialsUserName": null,
+ "WebProxyNetworkCredentialsPassword": null,
+ "WebProxyNetworkCredentialsDomain": null
+ }
+}
\ No newline at end of file
diff --git a/ConsoleApp1/Connected Services/OpenAPIService/OpenAPI.cs b/ConsoleApp1/Connected Services/OpenAPIService/OpenAPI.cs
new file mode 100644
index 00000000..b7a17a86
--- /dev/null
+++ b/ConsoleApp1/Connected Services/OpenAPIService/OpenAPI.cs
@@ -0,0 +1,1788 @@
+//----------------------
+//
+// Generated using the NSwag toolchain v13.10.9.0 (NJsonSchema v10.4.1.0 (Newtonsoft.Json v12.0.0.2)) (http://NSwag.org)
+//
+//----------------------
+
+#pragma warning disable 108 // Disable "CS0108 '{derivedDto}.ToJson()' hides inherited member '{dtoBase}.ToJson()'. Use the new keyword if hiding was intended."
+#pragma warning disable 114 // Disable "CS0114 '{derivedDto}.RaisePropertyChanged(String)' hides inherited member 'dtoBase.RaisePropertyChanged(String)'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword."
+#pragma warning disable 472 // Disable "CS0472 The result of the expression is always 'false' since a value of type 'Int32' is never equal to 'null' of type 'Int32?'
+#pragma warning disable 1573 // Disable "CS1573 Parameter '...' has no matching param tag in the XML comment for ...
+#pragma warning disable 1591 // Disable "CS1591 Missing XML comment for publicly visible type or member ..."
+#pragma warning disable 8073 // Disable "CS8073 The result of the expression is always 'false' since a value of type 'T' is never equal to 'null' of type 'T?'"
+
+namespace ConsoleApp1.OpenAPIService
+{
+ using System = global::System;
+
+ [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.10.9.0 (NJsonSchema v10.4.1.0 (Newtonsoft.Json v12.0.0.2))")]
+ public partial class AuthClient
+ {
+ private string _baseUrl = "";
+ private System.Net.Http.HttpClient _httpClient;
+ private System.Lazy _settings;
+
+ public AuthClient(string baseUrl, System.Net.Http.HttpClient httpClient)
+ {
+ BaseUrl = baseUrl;
+ _httpClient = httpClient;
+ _settings = new System.Lazy(CreateSerializerSettings);
+ }
+
+ private Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings()
+ {
+ var settings = new Newtonsoft.Json.JsonSerializerSettings();
+ UpdateJsonSerializerSettings(settings);
+ return settings;
+ }
+
+ public string BaseUrl
+ {
+ get { return _baseUrl; }
+ set { _baseUrl = value; }
+ }
+
+ protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } }
+
+ partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings);
+
+
+ partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url);
+ partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder);
+ partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response);
+ /// Аутентификация пользователя
+ /// новый токен
+ /// A server side error occurred.
+ public System.Threading.Tasks.Task LoginAsync(AuthDto body)
+ {
+ return LoginAsync(body, System.Threading.CancellationToken.None);
+ }
+
+ /// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
+ /// Аутентификация пользователя
+ /// новый токен
+ /// A server side error occurred.
+ public async System.Threading.Tasks.Task LoginAsync(AuthDto body, System.Threading.CancellationToken cancellationToken)
+ {
+ var urlBuilder_ = new System.Text.StringBuilder();
+ urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/auth/login");
+
+ var client_ = _httpClient;
+ var disposeClient_ = false;
+ try
+ {
+ using (var request_ = new System.Net.Http.HttpRequestMessage())
+ {
+ var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(body, _settings.Value));
+ content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json");
+ request_.Content = content_;
+ request_.Method = new System.Net.Http.HttpMethod("POST");
+ request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("text/plain"));
+
+ PrepareRequest(client_, request_, urlBuilder_);
+
+ var url_ = urlBuilder_.ToString();
+ request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute);
+
+ PrepareRequest(client_, request_, url_);
+
+ var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
+ var disposeResponse_ = true;
+ try
+ {
+ var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value);
+ if (response_.Content != null && response_.Content.Headers != null)
+ {
+ foreach (var item_ in response_.Content.Headers)
+ headers_[item_.Key] = item_.Value;
+ }
+
+ ProcessResponse(client_, response_);
+
+ var status_ = (int)response_.StatusCode;
+ if (status_ == 200)
+ {
+ var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false);
+ if (objectResponse_.Object == null)
+ {
+ throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null);
+ }
+ return objectResponse_.Object;
+ }
+ else
+ if (status_ == 400)
+ {
+ string responseText_ = ( response_.Content == null ) ? string.Empty : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
+ throw new ApiException("\u043b\u043e\u0433\u0438\u043d \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442", status_, responseText_, headers_, null);
+ }
+ else
+ {
+ var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
+ throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null);
+ }
+ }
+ finally
+ {
+ if (disposeResponse_)
+ response_.Dispose();
+ }
+ }
+ }
+ finally
+ {
+ if (disposeClient_)
+ client_.Dispose();
+ }
+ }
+
+ /// Продление срока действия токена
+ /// Success
+ /// A server side error occurred.
+ public System.Threading.Tasks.Task RefreshAsync()
+ {
+ return RefreshAsync(System.Threading.CancellationToken.None);
+ }
+
+ /// A cancellation token that can be used by other objects or threads to receive notice of cancellation.
+ /// Продление срока действия токена
+ /// Success
+ /// A server side error occurred.
+ public async System.Threading.Tasks.Task RefreshAsync(System.Threading.CancellationToken cancellationToken)
+ {
+ var urlBuilder_ = new System.Text.StringBuilder();
+ urlBuilder_.Append(BaseUrl != null ? BaseUrl.TrimEnd('/') : "").Append("/auth/refresh");
+
+ var client_ = _httpClient;
+ var disposeClient_ = false;
+ try
+ {
+ using (var request_ = new System.Net.Http.HttpRequestMessage())
+ {
+ request_.Method = new System.Net.Http.HttpMethod("GET");
+
+ PrepareRequest(client_, request_, urlBuilder_);
+
+ var url_ = urlBuilder_.ToString();
+ request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute);
+
+ PrepareRequest(client_, request_, url_);
+
+ var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);
+ var disposeResponse_ = true;
+ try
+ {
+ var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value);
+ if (response_.Content != null && response_.Content.Headers != null)
+ {
+ foreach (var item_ in response_.Content.Headers)
+ headers_[item_.Key] = item_.Value;
+ }
+
+ ProcessResponse(client_, response_);
+
+ var status_ = (int)response_.StatusCode;
+ if (status_ == 200)
+ {
+ return;
+ }
+ else
+ {
+ var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false);
+ throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null);
+ }
+ }
+ finally
+ {
+ if (disposeResponse_)
+ response_.Dispose();
+ }
+ }
+ }
+ finally
+ {
+ if (disposeClient_)
+ client_.Dispose();
+ }
+ }
+
+ protected struct ObjectResponseResult
+ {
+ public ObjectResponseResult(T responseObject, string responseText)
+ {
+ this.Object = responseObject;
+ this.Text = responseText;
+ }
+
+ public T Object { get; }
+
+ public string Text { get; }
+ }
+
+ public bool ReadResponseAsString { get; set; }
+
+ protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken)
+ {
+ if (response == null || response.Content == null)
+ {
+ return new ObjectResponseResult(default(T), string.Empty);
+ }
+
+ if (ReadResponseAsString)
+ {
+ var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
+ try
+ {
+ var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings);
+ return new ObjectResponseResult(typedBody, responseText);
+ }
+ catch (Newtonsoft.Json.JsonException exception)
+ {
+ var message = "Could not deserialize the response body string as " + typeof(T).FullName + ".";
+ throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception);
+ }
+ }
+ else
+ {
+ try
+ {
+ using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
+ using (var streamReader = new System.IO.StreamReader(responseStream))
+ using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader))
+ {
+ var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings);
+ var typedBody = serializer.Deserialize(jsonTextReader);
+ return new ObjectResponseResult(typedBody, string.Empty);
+ }
+ }
+ catch (Newtonsoft.Json.JsonException exception)
+ {
+ var message = "Could not deserialize the response body stream as " + typeof(T).FullName + ".";
+ throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception);
+ }
+ }
+ }
+
+ private string ConvertToString(object value, System.Globalization.CultureInfo cultureInfo)
+ {
+ if (value == null)
+ {
+ return "";
+ }
+
+ if (value is System.Enum)
+ {
+ var name = System.Enum.GetName(value.GetType(), value);
+ if (name != null)
+ {
+ var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name);
+ if (field != null)
+ {
+ var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute))
+ as System.Runtime.Serialization.EnumMemberAttribute;
+ if (attribute != null)
+ {
+ return attribute.Value != null ? attribute.Value : name;
+ }
+ }
+
+ var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo));
+ return converted == null ? string.Empty : converted;
+ }
+ }
+ else if (value is bool)
+ {
+ return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant();
+ }
+ else if (value is byte[])
+ {
+ return System.Convert.ToBase64String((byte[]) value);
+ }
+ else if (value.GetType().IsArray)
+ {
+ var array = System.Linq.Enumerable.OfType