ow
This commit is contained in:
1 parent
e60118eb53
commit
2e990e687f
38 files changed
+441
-237
No files matched your search
@@ -39,6 +39,8 @@ namespace CloudBuilder.Core.Request
|
||||
|
||||
Task<R> PostAsync<R>(string api, MultipartFormDataContent data);
|
||||
|
||||
Task<Stream> PostStreamAsync<T>(string api, Dictionary<string, string> headers, T data);
|
||||
|
||||
void AddHeaders(string name, string? value);
|
||||
void SetContext(IContext loginContext);
|
||||
HttpClient GetHttpClient();
|
||||
|
||||
@@ -361,6 +361,56 @@ namespace CloudBuilder.Core.Request
|
||||
|
||||
if (completedCallback != null) completedCallback(filePath);
|
||||
}
|
||||
public async Task<Stream> PostStreamAsync<T>(string api, Dictionary<string, string> headers, T data)
|
||||
{
|
||||
if (headers != null && headers.Count > 0)
|
||||
{
|
||||
foreach (var header in headers)
|
||||
{
|
||||
if (request.DefaultRequestHeaders.Contains(header.Key)) request.DefaultRequestHeaders.Remove(header.Key);
|
||||
request.DefaultRequestHeaders.Add(header.Key, header.Value);
|
||||
}
|
||||
}
|
||||
|
||||
this.request.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", loginContext.GetToken());
|
||||
|
||||
if (request.DefaultRequestHeaders.Contains(ClaimPolicy.HEADER_LOCALE))
|
||||
request.DefaultRequestHeaders.Remove(ClaimPolicy.HEADER_LOCALE);
|
||||
request.DefaultRequestHeaders.Add(ClaimPolicy.HEADER_LOCALE, loginContext.GetCulture());
|
||||
|
||||
var options = new JsonSerializerOptions
|
||||
{
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
var response = await this.request.PostAsJsonAsync(api, data, options).ConfigureAwait(false);
|
||||
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
//{"errors":{},"type":"https://tools.ietf.org/html/rfc9110#section-15.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"00-64ad066978f4471cb3c9ce219c213da9-bccca8afd14676b3-00"}
|
||||
var responseContext = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
|
||||
string errors = string.Empty;
|
||||
if (responseContext != null && responseContext.StartsWith("{\"errors\"")) errors = responseContext.Substring(11, responseContext.IndexOf("}") - 11);
|
||||
|
||||
if (response.ReasonPhrase == "Forbidden")
|
||||
throw new Exception(string.Format("{0}", CoreMessagePolicy.GetInstance().ComposeMessage(CoreMessagePolicy.NO_PERMISSION)));
|
||||
|
||||
throw new Exception(string.Format("{0}{1}", response.ReasonPhrase, string.IsNullOrEmpty(errors) ? "" : "\r\n" + errors));
|
||||
}
|
||||
|
||||
response.EnsureSuccessStatusCode();
|
||||
|
||||
|
||||
return await response.Content.ReadAsStreamAsync();
|
||||
}
|
||||
catch (Exception ex )
|
||||
{
|
||||
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<R> PostAsync<R>(string api, MultipartFormDataContent data)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user