Replaced NewtonsoftJson with System.Text.Json
This commit is contained in:
parent
30d952b946
commit
9db8b26985
@ -28,14 +28,15 @@ using System;
|
||||
using System.ComponentModel;
|
||||
using System.Globalization;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
using ASC.Common.Utils;
|
||||
using ASC.Core;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace ASC.Api.Core
|
||||
{
|
||||
[DataContract(Name = "date", Namespace = "")]
|
||||
[JsonConverter(typeof(ApiDateTimeConverter))]
|
||||
[TypeConverter(typeof(ApiDateTimeTypeConverter))]
|
||||
public class ApiDateTime : IComparable<ApiDateTime>, IComparable
|
||||
{
|
||||
@ -321,43 +322,30 @@ namespace ASC.Api.Core
|
||||
}
|
||||
}
|
||||
|
||||
public class ApiDateTimeConverter : JsonConverter
|
||||
public class ApiDateTimeConverter : JsonConverter<ApiDateTime>
|
||||
{
|
||||
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
||||
public override ApiDateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
|
||||
{
|
||||
if (value is ApiDateTime)
|
||||
if (reader.TryGetDateTime(out var result))
|
||||
{
|
||||
writer.WriteValue(value.ToString());
|
||||
return new ApiDateTime(result, TimeSpan.Zero);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (DateTime.TryParseExact(reader.GetString(), ApiDateTime.Formats, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out var dateTime))
|
||||
{
|
||||
return new ApiDateTime(dateTime, TimeSpan.Zero);
|
||||
}
|
||||
else
|
||||
{
|
||||
return new ApiDateTime();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
||||
public override void Write(Utf8JsonWriter writer, ApiDateTime value, JsonSerializerOptions options)
|
||||
{
|
||||
if (reader.ValueType != null)
|
||||
{
|
||||
if (reader.ValueType.Name == "String")
|
||||
{
|
||||
if (DateTime.TryParseExact(reader.Value?.ToString(), ApiDateTime.Formats, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out var result))
|
||||
{
|
||||
return new ApiDateTime(result, TimeSpan.Zero);
|
||||
}
|
||||
else
|
||||
{
|
||||
return new ApiDateTime();
|
||||
}
|
||||
}
|
||||
else if (reader.ValueType.Name == "DateTime")
|
||||
{
|
||||
return new ApiDateTime((DateTime)reader.Value, TimeSpan.Zero);
|
||||
}
|
||||
}
|
||||
|
||||
return DateTime.MinValue;
|
||||
}
|
||||
|
||||
public override bool CanConvert(Type objectType)
|
||||
{
|
||||
return typeof(ApiDateTime).IsAssignableFrom(objectType);
|
||||
writer.WriteStringValue(value.ToString());
|
||||
}
|
||||
}
|
||||
}
|
@ -23,20 +23,14 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace ASC.Api.Collections
|
||||
{
|
||||
|
||||
[DataContract]
|
||||
public class ItemKeyValuePair<TKey, TValue>
|
||||
{
|
||||
[DataMember]
|
||||
public TKey Key { get; set; }
|
||||
|
||||
|
||||
[DataMember]
|
||||
public TValue Value { get; set; }
|
||||
|
||||
}
|
||||
|
@ -1,19 +1,14 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace ASC.Api.Core.Middleware
|
||||
{
|
||||
[DataContract]
|
||||
public abstract class CommonApiResponse
|
||||
{
|
||||
[DataMember(Order = 1)]
|
||||
public int Status { get; set; }
|
||||
|
||||
[DataMember(Order = 2)]
|
||||
public HttpStatusCode StatusCode { get; set; }
|
||||
|
||||
protected CommonApiResponse(HttpStatusCode statusCode)
|
||||
@ -32,10 +27,8 @@ namespace ASC.Api.Core.Middleware
|
||||
}
|
||||
}
|
||||
|
||||
[DataContract]
|
||||
public class ErrorApiResponse : CommonApiResponse
|
||||
{
|
||||
[DataMember(EmitDefaultValue = false, Order = 3)]
|
||||
public CommonApiError Error { get; set; }
|
||||
|
||||
protected internal ErrorApiResponse(HttpStatusCode statusCode, Exception error) : base(statusCode)
|
||||
@ -45,16 +38,12 @@ namespace ASC.Api.Core.Middleware
|
||||
}
|
||||
}
|
||||
|
||||
[DataContract]
|
||||
public class SuccessApiResponse : CommonApiResponse
|
||||
{
|
||||
[DataMember(EmitDefaultValue = false, Order = 0)]
|
||||
public int? Count { get; set; }
|
||||
|
||||
[DataMember(EmitDefaultValue = false, Order = 1)]
|
||||
public long? Total { get; set; }
|
||||
|
||||
[DataMember(EmitDefaultValue = false, Order = 3)]
|
||||
public object Response { get; set; }
|
||||
|
||||
protected internal SuccessApiResponse(HttpStatusCode statusCode, object response, long? total = null, int? count = null) : base(statusCode)
|
||||
@ -89,33 +78,24 @@ namespace ASC.Api.Core.Middleware
|
||||
}
|
||||
}
|
||||
|
||||
[DataContract]
|
||||
public class CommonApiError
|
||||
{
|
||||
[DataMember]
|
||||
public string Message { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public Type Type { get; set; }
|
||||
public string Type { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Stack { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Hresult { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public IDictionary Data { get; set; }
|
||||
|
||||
public static CommonApiError FromException(Exception exception)
|
||||
{
|
||||
return new CommonApiError()
|
||||
{
|
||||
Message = exception.Message,
|
||||
Type = exception.GetType(),
|
||||
Type = exception.GetType().ToString(),
|
||||
Stack = exception.StackTrace,
|
||||
Hresult = exception.HResult,
|
||||
Data = exception.Data
|
||||
Hresult = exception.HResult
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -25,32 +25,27 @@
|
||||
|
||||
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
using ASC.Api.Core;
|
||||
using ASC.Core.Users;
|
||||
using ASC.Web.Core.Users;
|
||||
using ASC.Web.Studio.Utility;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
|
||||
namespace ASC.Web.Api.Models
|
||||
{
|
||||
[DataContract(Name = "person", Namespace = "")]
|
||||
public class EmployeeWraper
|
||||
{
|
||||
[DataMember(Order = 1)]
|
||||
public Guid Id { get; set; }
|
||||
|
||||
[DataMember(Order = 10)]
|
||||
public string DisplayName { get; set; }
|
||||
|
||||
[DataMember(Order = 11, EmitDefaultValue = false)]
|
||||
public string Title { get; set; }
|
||||
|
||||
[DataMember(Order = 20)]
|
||||
public string AvatarSmall { get; set; }
|
||||
|
||||
[DataMember(Order = 30)]
|
||||
public string ProfileUrl { get; set; }
|
||||
|
||||
public static EmployeeWraper GetSample()
|
||||
|
@ -26,6 +26,7 @@
|
||||
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
using ASC.Core;
|
||||
using ASC.Core.Users;
|
||||
|
||||
@ -46,13 +47,10 @@ namespace ASC.Web.Api.Models
|
||||
}
|
||||
|
||||
|
||||
[DataMember(Order = 2)]
|
||||
public string Name { get; set; }
|
||||
|
||||
[DataMember(Order = 1)]
|
||||
public Guid Id { get; set; }
|
||||
|
||||
[DataMember(Order = 9, EmitDefaultValue = true)]
|
||||
public string Manager { get; set; }
|
||||
|
||||
public static GroupWrapperSummary GetSample()
|
||||
|
@ -23,18 +23,12 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace ASC.Web.Api.Models
|
||||
{
|
||||
[DataContract(Name = "contact", Namespace = "")]
|
||||
public class Contact
|
||||
{
|
||||
[DataMember(Order = 1)]
|
||||
public string Type { get; set; }
|
||||
|
||||
[DataMember(Order = 2)]
|
||||
public string Value { get; set; }
|
||||
|
||||
public Contact()
|
||||
|
@ -27,7 +27,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
using ASC.Api.Core;
|
||||
using ASC.Common.Utils;
|
||||
using ASC.Core;
|
||||
@ -35,94 +35,67 @@ using ASC.Core.Users;
|
||||
using ASC.Web.Core;
|
||||
using ASC.Web.Core.Users;
|
||||
using ASC.Web.Studio.Utility;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
|
||||
namespace ASC.Web.Api.Models
|
||||
{
|
||||
[DataContract(Name = "person", Namespace = "")]
|
||||
public class EmployeeWraperFull : EmployeeWraper
|
||||
{
|
||||
[DataMember(Order = 10)]
|
||||
public string FirstName { get; set; }
|
||||
|
||||
[DataMember(Order = 10)]
|
||||
public string LastName { get; set; }
|
||||
|
||||
[DataMember(Order = 2)]
|
||||
public string UserName { get; set; }
|
||||
|
||||
[DataMember(Order = 10)]
|
||||
public string Email { get; set; }
|
||||
|
||||
[DataMember(Order = 12, EmitDefaultValue = false)]
|
||||
public List<Contact> Contacts { get; set; }
|
||||
|
||||
[DataMember(Order = 10, EmitDefaultValue = false)]
|
||||
public ApiDateTime Birthday { get; set; }
|
||||
|
||||
[DataMember(Order = 10, EmitDefaultValue = false)]
|
||||
public string Sex { get; set; }
|
||||
|
||||
[DataMember(Order = 10)]
|
||||
public EmployeeStatus Status { get; set; }
|
||||
|
||||
[DataMember(Order = 10)]
|
||||
public EmployeeActivationStatus ActivationStatus { get; set; }
|
||||
|
||||
[DataMember(Order = 10)]
|
||||
public ApiDateTime Terminated { get; set; }
|
||||
|
||||
[DataMember(Order = 10, EmitDefaultValue = false)]
|
||||
public string Department { get; set; }
|
||||
|
||||
[DataMember(Order = 10, EmitDefaultValue = false)]
|
||||
public ApiDateTime WorkFrom { get; set; }
|
||||
|
||||
[DataMember(Order = 20, EmitDefaultValue = false)]
|
||||
public List<GroupWrapperSummary> Groups { get; set; }
|
||||
|
||||
[DataMember(Order = 10, EmitDefaultValue = false)]
|
||||
public string Location { get; set; }
|
||||
|
||||
[DataMember(Order = 10, EmitDefaultValue = false)]
|
||||
public string Notes { get; set; }
|
||||
|
||||
[DataMember(Order = 20)]
|
||||
public string AvatarMax { get; set; }
|
||||
|
||||
[DataMember(Order = 20)]
|
||||
public string AvatarMedium { get; set; }
|
||||
|
||||
[DataMember(Order = 20)]
|
||||
public string Avatar { get; set; }
|
||||
|
||||
[DataMember(Order = 20)]
|
||||
public bool IsAdmin { get; set; }
|
||||
|
||||
[DataMember(Order = 20)]
|
||||
public bool IsLDAP { get; set; }
|
||||
|
||||
[DataMember(Order = 20, EmitDefaultValue = false)]
|
||||
public List<string> ListAdminModules { get; set; }
|
||||
|
||||
[DataMember(Order = 20)]
|
||||
public bool IsOwner { get; set; }
|
||||
|
||||
[DataMember(Order = 2)]
|
||||
public bool IsVisitor { get; set; }
|
||||
|
||||
[DataMember(Order = 20, EmitDefaultValue = false)]
|
||||
public string CultureName { get; set; }
|
||||
|
||||
|
||||
[DataMember(Order = 11, EmitDefaultValue = false)]
|
||||
public string MobilePhone { get; set; }
|
||||
|
||||
[DataMember(Order = 11, EmitDefaultValue = false)]
|
||||
public MobilePhoneActivationStatus MobilePhoneActivationStatus { get; set; }
|
||||
|
||||
[DataMember(Order = 20)]
|
||||
public bool IsSSO { get; set; }
|
||||
|
||||
public new static EmployeeWraperFull GetSample()
|
||||
|
@ -27,38 +27,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
using ASC.Core;
|
||||
using ASC.Core.Users;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
|
||||
namespace ASC.Web.Api.Models
|
||||
{
|
||||
[DataContract(Name = "group", Namespace = "")]
|
||||
public class GroupWrapperFull
|
||||
{
|
||||
[DataMember(Order = 5)]
|
||||
public string Description { get; set; }
|
||||
|
||||
[DataMember(Order = 2)]
|
||||
public string Name { get; set; }
|
||||
|
||||
[DataMember(Order = 4, EmitDefaultValue = true)]
|
||||
public Guid? Parent { get; set; }
|
||||
|
||||
[DataMember(Order = 3)]
|
||||
public Guid Category { get; set; }
|
||||
|
||||
[DataMember(Order = 1)]
|
||||
public Guid Id { get; set; }
|
||||
|
||||
[DataMember(Order = 9, EmitDefaultValue = true)]
|
||||
public EmployeeWraper Manager { get; set; }
|
||||
|
||||
[DataMember(Order = 10, EmitDefaultValue = false)]
|
||||
public List<EmployeeWraper> Members { get; set; }
|
||||
public UserManager UserManager { get; }
|
||||
|
||||
public static GroupWrapperFull GetSample()
|
||||
{
|
||||
|
@ -25,12 +25,11 @@
|
||||
|
||||
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
using ASC.Web.Core.Users;
|
||||
|
||||
namespace ASC.Web.Api.Models
|
||||
{
|
||||
[DataContract]
|
||||
public class ThumbnailsDataWrapper
|
||||
{
|
||||
public ThumbnailsDataWrapper(Guid userId, UserPhotoManager userPhotoManager)
|
||||
@ -47,22 +46,16 @@ namespace ASC.Web.Api.Models
|
||||
{
|
||||
}
|
||||
|
||||
[DataMember]
|
||||
public string Original { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Retina { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Max { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Big { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Medium { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Small { get; set; }
|
||||
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
|
||||
using System;
|
||||
|
||||
using ASC.Api.Core;
|
||||
using ASC.Api.Core.Auth;
|
||||
using ASC.Api.Core.Core;
|
||||
using ASC.Api.Core.Middleware;
|
||||
@ -23,7 +24,6 @@ using Microsoft.AspNetCore.Mvc.Formatters;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace ASC.People
|
||||
{
|
||||
@ -43,10 +43,13 @@ namespace ASC.People
|
||||
services.AddHttpContextAccessor();
|
||||
|
||||
services.AddControllers()
|
||||
.AddNewtonsoftJson()
|
||||
.AddXmlSerializerFormatters();
|
||||
|
||||
services.AddTransient<IConfigureOptions<MvcNewtonsoftJsonOptions>, CustomJsonOptionsWrapper>();
|
||||
.AddXmlSerializerFormatters()
|
||||
.AddJsonOptions(options =>
|
||||
{
|
||||
options.JsonSerializerOptions.WriteIndented = false;
|
||||
options.JsonSerializerOptions.IgnoreNullValues = true;
|
||||
options.JsonSerializerOptions.Converters.Add(new ApiDateTimeConverter());
|
||||
});
|
||||
|
||||
services.AddAuthentication("cookie")
|
||||
.AddScheme<AuthenticationSchemeOptions, CookieAuthHandler>("cookie", a => { })
|
||||
|
@ -311,9 +311,9 @@ namespace ASC.Api.Settings
|
||||
|
||||
[AllowAnonymous]
|
||||
[Read("cultures")]
|
||||
public List<CultureInfo> GetSupportedCultures()
|
||||
public IEnumerable<object> GetSupportedCultures()
|
||||
{
|
||||
return SetupInfo.EnabledCultures;
|
||||
return SetupInfo.EnabledCultures.Select(r => new { r.Name });
|
||||
}
|
||||
|
||||
[Read("timezones")]
|
||||
|
@ -24,25 +24,24 @@
|
||||
*/
|
||||
|
||||
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
|
||||
namespace ASC.Api.Settings
|
||||
{
|
||||
[DataContract(Name = "buildversion", Namespace = "")]
|
||||
public class BuildVersion
|
||||
{
|
||||
[DataMember]
|
||||
public string CommunityServer { get; set; }
|
||||
|
||||
[DataMember(EmitDefaultValue = false)]
|
||||
public string DocumentServer { get; set; }
|
||||
|
||||
[DataMember(EmitDefaultValue = false)]
|
||||
public string MailServer { get; set; }
|
||||
public IConfiguration Configuration { get; }
|
||||
|
||||
[JsonIgnore]
|
||||
private IConfiguration Configuration { get; }
|
||||
|
||||
public BuildVersion(IConfiguration configuration)
|
||||
{
|
||||
|
@ -27,7 +27,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.Settings;
|
||||
using ASC.Core.Tenants;
|
||||
@ -37,57 +38,50 @@ using ASC.Web.Studio.Utility;
|
||||
|
||||
namespace ASC.Web.Studio.Core.Quota
|
||||
{
|
||||
[DataContract(Name = "quota", Namespace = "")]
|
||||
public class QuotaWrapper
|
||||
{
|
||||
[DataMember(Name = "storageSize")]
|
||||
public ulong StorageSize { get; set; }
|
||||
|
||||
[DataMember(Name = "maxFileSize")]
|
||||
public ulong MaxFileSize { get; set; }
|
||||
|
||||
[DataMember(Name = "usedSize")]
|
||||
public ulong UsedSize { get; set; }
|
||||
|
||||
[DataMember(Name = "maxUsersCount")]
|
||||
public int MaxUsersCount { get; set; }
|
||||
|
||||
[DataMember(Name = "usersCount")]
|
||||
public int UsersCount { get; set; }
|
||||
|
||||
[DataMember(Name = "availableSize")]
|
||||
public ulong AvailableSize
|
||||
{
|
||||
get { return Math.Max(0, StorageSize > UsedSize ? StorageSize - UsedSize : 0); }
|
||||
set { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
[DataMember(Name = "availableUsersCount")]
|
||||
public int AvailableUsersCount
|
||||
{
|
||||
get { return Math.Max(0, MaxUsersCount - UsersCount); }
|
||||
set { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
[DataMember(Name = "storageUsage")]
|
||||
public IList<QuotaUsage> StorageUsage { get; set; }
|
||||
|
||||
[DataMember(Name = "userStorageSize")]
|
||||
public long UserStorageSize { get; set; }
|
||||
|
||||
[DataMember(Name = "userUsedSize")]
|
||||
public long UserUsedSize { get; set; }
|
||||
|
||||
[DataMember(Name = "userAvailableSize")]
|
||||
public long UserAvailableSize
|
||||
{
|
||||
get { return Math.Max(0, UserStorageSize - UserUsedSize); }
|
||||
set { throw new NotImplementedException(); }
|
||||
}
|
||||
|
||||
public TenantExtra TenantExtra { get; }
|
||||
public TenantStatisticsProvider TenantStatisticsProvider { get; }
|
||||
public WebItemManager WebItemManager { get; }
|
||||
[JsonIgnore]
|
||||
private TenantExtra TenantExtra { get; }
|
||||
|
||||
[JsonIgnore]
|
||||
private TenantStatisticsProvider TenantStatisticsProvider { get; }
|
||||
|
||||
[JsonIgnore]
|
||||
private WebItemManager WebItemManager { get; }
|
||||
|
||||
public QuotaWrapper()
|
||||
{
|
||||
@ -140,14 +134,10 @@ namespace ASC.Web.Studio.Core.Quota
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
[DataContract(Name = "quota_usage", Namespace = "")]
|
||||
public class QuotaUsage
|
||||
{
|
||||
[DataMember(Name = "path")]
|
||||
public string Path { get; set; }
|
||||
|
||||
[DataMember(Name = "size")]
|
||||
public long Size { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -26,27 +26,21 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
using ASC.Web.Api.Models;
|
||||
|
||||
namespace ASC.Api.Settings
|
||||
{
|
||||
[DataContract(Name = "security", Namespace = "")]
|
||||
public class SecurityWrapper
|
||||
{
|
||||
[DataMember]
|
||||
public string WebItemId { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public IEnumerable<EmployeeWraper> Users { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public IEnumerable<GroupWrapperSummary> Groups { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool Enabled { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool IsSubItem { get; set; }
|
||||
|
||||
public static SecurityWrapper GetSample()
|
||||
|
@ -26,42 +26,29 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
using ASC.Core.Tenants;
|
||||
|
||||
namespace ASC.Api.Settings
|
||||
{
|
||||
[DataContract(Name = "settings", Namespace = "")]
|
||||
public class SettingsWrapper
|
||||
{
|
||||
[DataMember(EmitDefaultValue = false)]
|
||||
public string Timezone { get; set; }
|
||||
|
||||
[DataMember(EmitDefaultValue = false)]
|
||||
public List<string> TrustedDomains { get; set; }
|
||||
|
||||
[DataMember(EmitDefaultValue = false)]
|
||||
public TenantTrustedDomainsType TrustedDomainsType { get; set; }
|
||||
|
||||
[DataMember(EmitDefaultValue = false)]
|
||||
public string Culture { get; set; }
|
||||
|
||||
[DataMember(EmitDefaultValue = false)]
|
||||
public TimeSpan UtcOffset { get; set; }
|
||||
|
||||
|
||||
[DataMember(EmitDefaultValue = false)]
|
||||
public double UtcHoursOffset { get; set; }
|
||||
|
||||
|
||||
[DataMember(EmitDefaultValue = false)]
|
||||
public string GreetingSettings { get; set; }
|
||||
|
||||
[DataMember(EmitDefaultValue = false)]
|
||||
public Guid OwnerId { get; set; }
|
||||
|
||||
[DataMember(EmitDefaultValue = false)]
|
||||
public string NameSchemaId { get; set; }
|
||||
|
||||
public static SettingsWrapper GetSample()
|
||||
|
@ -23,30 +23,20 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace ASC.Api.Settings.Smtp
|
||||
{
|
||||
[DataContract]
|
||||
public class SmtpOperationStatus
|
||||
{
|
||||
[DataMember]
|
||||
public bool Completed { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Id { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Status { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Error { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Percents { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Source { get; set; }
|
||||
|
||||
public static SmtpOperationStatus GetSample()
|
||||
|
@ -23,36 +23,24 @@
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace ASC.Api.Settings.Smtp
|
||||
{
|
||||
[DataContract(Name = "quota", Namespace = "")]
|
||||
public class SmtpSettingsWrapper
|
||||
{
|
||||
[DataMember]
|
||||
public string Host { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int? Port { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string SenderAddress { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string SenderDisplayName { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string CredentialsUserName { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string CredentialsUserPassword { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool EnableSSL { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public bool EnableAuth { get; set; }
|
||||
|
||||
public static SmtpSettingsWrapper GetSample()
|
||||
|
@ -1,3 +1,4 @@
|
||||
using ASC.Api.Core;
|
||||
using ASC.Api.Core.Auth;
|
||||
using ASC.Api.Core.Core;
|
||||
using ASC.Api.Core.Middleware;
|
||||
@ -17,7 +18,6 @@ using Microsoft.AspNetCore.Mvc.Formatters;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace ASC.Web.Api
|
||||
{
|
||||
@ -37,10 +37,13 @@ namespace ASC.Web.Api
|
||||
services.AddHttpContextAccessor();
|
||||
|
||||
services.AddControllers()
|
||||
.AddNewtonsoftJson()
|
||||
.AddXmlSerializerFormatters();
|
||||
|
||||
services.AddTransient<IConfigureOptions<MvcNewtonsoftJsonOptions>, CustomJsonOptionsWrapper>();
|
||||
.AddXmlSerializerFormatters()
|
||||
.AddJsonOptions(options =>
|
||||
{
|
||||
options.JsonSerializerOptions.WriteIndented = false;
|
||||
options.JsonSerializerOptions.IgnoreNullValues = true;
|
||||
options.JsonSerializerOptions.Converters.Add(new ApiDateTimeConverter());
|
||||
});
|
||||
|
||||
services.AddAuthentication("cookie")
|
||||
.AddScheme<AuthenticationSchemeOptions, CookieAuthHandler>("cookie", a => { })
|
||||
|
@ -25,10 +25,7 @@
|
||||
|
||||
|
||||
using System;
|
||||
using ASC.Common.Security.Authentication;
|
||||
using ASC.Core;
|
||||
using ASC.Notify.Patterns;
|
||||
using ASC.Web.Core.Users;
|
||||
|
||||
namespace ASC.Web.Studio.Core.Notify
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user