Browse Source

Use IOS 8601 as datetime format in querystring and InvariantCulture route.

pull/8599/head
maliming 5 years ago
parent
commit
5b994139ab
  1. 25
      framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/UrlBuilder.cs
  2. 16
      framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/Generators/ProxyScriptingHelper.cs

25
framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/DynamicProxying/UrlBuilder.cs

@ -15,12 +15,18 @@ namespace Volo.Abp.Http.Client.DynamicProxying
{
public static string GenerateUrlWithParameters(ActionApiDescriptionModel action, IReadOnlyDictionary<string, object> methodArguments, ApiVersionInfo apiVersion)
{
var urlBuilder = new StringBuilder(action.Url);
// The ASP.NET Core route value provider and query string value provider:
// Treat values as invariant culture.
// Expect that URLs are culture-invariant.
using (CultureHelper.Use(CultureInfo.InvariantCulture))
{
var urlBuilder = new StringBuilder(action.Url);
ReplacePathVariables(urlBuilder, action.Parameters, methodArguments, apiVersion);
AddQueryStringParameters(urlBuilder, action.Parameters, methodArguments, apiVersion);
ReplacePathVariables(urlBuilder, action.Parameters, methodArguments, apiVersion);
AddQueryStringParameters(urlBuilder, action.Parameters, methodArguments, apiVersion);
return urlBuilder.ToString();
return urlBuilder.ToString();
}
}
private static void ReplacePathVariables(StringBuilder urlBuilder, IList<ParameterApiDescriptionModel> actionParameters, IReadOnlyDictionary<string, object> methodArguments, ApiVersionInfo apiVersion)
@ -128,15 +134,12 @@ namespace Volo.Abp.Http.Client.DynamicProxying
private static string ConvertValueToString([NotNull] object value)
{
using (CultureHelper.Use(CultureInfo.InvariantCulture))
if (value is DateTime dateTimeValue)
{
if (value is DateTime dateTimeValue)
{
return dateTimeValue.ToUniversalTime().ToString("u");
}
return value.ToString();
return dateTimeValue.ToUniversalTime().ToString("O");
}
return value.ToString();
}
}
}

16
framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/Generators/ProxyScriptingHelper.cs

@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using Volo.Abp.Http.Modeling;
using Volo.Abp.Localization;
namespace Volo.Abp.Http.ProxyScripting.Generators
{
@ -11,10 +13,16 @@ namespace Volo.Abp.Http.ProxyScripting.Generators
public static string GenerateUrlWithParameters(ActionApiDescriptionModel action)
{
//TODO: Can be optimized using StringBuilder?
var url = ReplacePathVariables(action.Url, action.Parameters);
url = AddQueryStringParameters(url, action.Parameters);
return url;
// The ASP.NET Core route value provider and query string value provider:
// Treat values as invariant culture.
// Expect that URLs are culture-invariant.
using (CultureHelper.Use(CultureInfo.InvariantCulture))
{
//TODO: Can be optimized using StringBuilder?
var url = ReplacePathVariables(action.Url, action.Parameters);
url = AddQueryStringParameters(url, action.Parameters);
return url;
}
}
public static string GenerateHeaders(ActionApiDescriptionModel action, int indent = 0)

Loading…
Cancel
Save