changed some code around

This commit is contained in:
2020-03-25 17:49:00 +01:00
parent d546edaa0d
commit e638370ad4
6 changed files with 154 additions and 160 deletions

View File

@@ -1,5 +1,4 @@
using System;
using System.Collections;
using System.IO;
using System.Net.Http;
using System.Net.Mime;
@@ -69,6 +68,8 @@ namespace FarmmapsApi.Services
contentStream.ThrowIfNull(nameof(contentStream));
_streamLength = ContentStream.CanSeek ? ContentStream.Length : UnknownSize;
body.ChunkSize = ChunkSize;
Body = body;
Path = "api/v1/file";
HttpClient = httpClient;
@@ -93,16 +94,12 @@ namespace FarmmapsApi.Services
/// <summary>Creates a request to initialize a request.</summary>
private HttpRequestMessage CreateInitializeRequest()
{
var baseAddres = HttpClient.BaseAddress;
var uri = new Uri($"{baseAddres.Scheme}://{baseAddres.Host}:{baseAddres.Port}");
var builder = new RequestBuilder()
{
BaseUri = uri,
BaseUri = HttpClient.BaseAddress,
Path = Path,
Method = HttpMethod,
};
SetAllPropertyValues(builder);
HttpRequestMessage request = builder.CreateRequest();
if (ContentType != null)
@@ -121,40 +118,5 @@ namespace FarmmapsApi.Services
return request;
}
/// <summary>
/// Reflectively enumerate the properties of this object looking for all properties containing the
/// RequestParameterAttribute and copy their values into the request builder.
/// </summary>
private void SetAllPropertyValues(RequestBuilder requestBuilder)
{
Type myType = this.GetType();
var properties = myType.GetProperties();
foreach (var property in properties)
{
var attribute = property.GetCustomAttribute<RequestParameterAttribute>();
if (attribute != null)
{
string name = attribute.Name ?? property.Name.ToLower();
object value = property.GetValue(this, null);
if (value != null)
{
if (!(value is string) && value is IEnumerable valueAsEnumerable)
{
foreach (var elem in valueAsEnumerable)
{
requestBuilder.AddParameter(attribute.Type, name, Utilities.ConvertToString(elem));
}
}
else
{
// Otherwise just convert it to a string.
requestBuilder.AddParameter(attribute.Type, name, Utilities.ConvertToString(value));
}
}
}
}
}
}
}