IonosDDNSUpdater/DDNSUpdater/APIs/Ionos/V1/Zones/Item/WithZoneItemRequestBuilder.cs
2023-03-24 20:21:33 +01:00

277 lines
15 KiB
C#

using DDNSUpdater.APIs.Ionos.ApiClient.Models;
using DDNSUpdater.APIs.Ionos.ApiClient.V1.Zones.Item.Records;
using Microsoft.Kiota.Abstractions;
using Microsoft.Kiota.Abstractions.Serialization;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace DDNSUpdater.APIs.Ionos.ApiClient.V1.Zones.Item {
/// <summary>
/// Builds and executes requests for operations under \v1\zones\{zoneId}
/// </summary>
public class WithZoneItemRequestBuilder {
/// <summary>Path parameters for the request</summary>
private Dictionary<string, object> PathParameters { get; set; }
/// <summary>The records property</summary>
public RecordsRequestBuilder Records { get =>
new RecordsRequestBuilder(PathParameters, RequestAdapter);
}
/// <summary>The request adapter to use to execute the requests.</summary>
private IRequestAdapter RequestAdapter { get; set; }
/// <summary>Url template to use to build the URL for the current request builder</summary>
private string UrlTemplate { get; set; }
/// <summary>
/// Instantiates a new WithZoneItemRequestBuilder and sets the default values.
/// </summary>
/// <param name="pathParameters">Path parameters for the request</param>
/// <param name="requestAdapter">The request adapter to use to execute the requests.</param>
public WithZoneItemRequestBuilder(Dictionary<string, object> pathParameters, IRequestAdapter requestAdapter) {
_ = pathParameters ?? throw new ArgumentNullException(nameof(pathParameters));
_ = requestAdapter ?? throw new ArgumentNullException(nameof(requestAdapter));
UrlTemplate = "{+baseurl}/v1/zones/{zoneId}{?suffix*,recordName*,recordType*}";
var urlTplParams = new Dictionary<string, object>(pathParameters);
PathParameters = urlTplParams;
RequestAdapter = requestAdapter;
}
/// <summary>
/// Instantiates a new WithZoneItemRequestBuilder and sets the default values.
/// </summary>
/// <param name="rawUrl">The raw URL to use for the request builder.</param>
/// <param name="requestAdapter">The request adapter to use to execute the requests.</param>
public WithZoneItemRequestBuilder(string rawUrl, IRequestAdapter requestAdapter) {
if(string.IsNullOrEmpty(rawUrl)) throw new ArgumentNullException(nameof(rawUrl));
_ = requestAdapter ?? throw new ArgumentNullException(nameof(requestAdapter));
UrlTemplate = "{+baseurl}/v1/zones/{zoneId}{?suffix*,recordName*,recordType*}";
var urlTplParams = new Dictionary<string, object>();
if (!string.IsNullOrWhiteSpace(rawUrl)) urlTplParams.Add("request-raw-url", rawUrl);
PathParameters = urlTplParams;
RequestAdapter = requestAdapter;
}
/// <summary>
/// Returns a customer zone.
/// </summary>
/// <param name="cancellationToken">Cancellation token to use when cancelling requests</param>
/// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
public async Task<CustomerZone?> GetAsync(Action<WithZoneItemRequestBuilderGetRequestConfiguration>? requestConfiguration = default, CancellationToken cancellationToken = default) {
#nullable restore
#else
public async Task<CustomerZone> GetAsync(Action<WithZoneItemRequestBuilderGetRequestConfiguration> requestConfiguration = default, CancellationToken cancellationToken = default) {
#endif
var requestInfo = ToGetRequestInformation(requestConfiguration);
var errorMapping = new Dictionary<string, ParsableFactory<IParsable>> {
{"401", Error.CreateFromDiscriminatorValue},
{"500", Error.CreateFromDiscriminatorValue},
};
return await RequestAdapter.SendAsync<CustomerZone>(requestInfo, CustomerZone.CreateFromDiscriminatorValue, errorMapping, cancellationToken);
}
/// <summary>
/// Replaces all records of the same name and type with the ones provided.
/// </summary>
/// <param name="body">The request body</param>
/// <param name="cancellationToken">Cancellation token to use when cancelling requests</param>
/// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
public async Task<Stream?> PatchAsync(List<Record> body, Action<WithZoneItemRequestBuilderPatchRequestConfiguration>? requestConfiguration = default, CancellationToken cancellationToken = default) {
#nullable restore
#else
public async Task<Stream> PatchAsync(List<Record> body, Action<WithZoneItemRequestBuilderPatchRequestConfiguration> requestConfiguration = default, CancellationToken cancellationToken = default) {
#endif
_ = body ?? throw new ArgumentNullException(nameof(body));
var requestInfo = ToPatchRequestInformation(body, requestConfiguration);
var errorMapping = new Dictionary<string, ParsableFactory<IParsable>> {
{"400", WithZone.CreateFromDiscriminatorValue},
{"401", Error.CreateFromDiscriminatorValue},
{"500", Error.CreateFromDiscriminatorValue},
};
return await RequestAdapter.SendPrimitiveAsync<Stream>(requestInfo, errorMapping, cancellationToken);
}
/// <summary>
/// Replaces all records in the zone with the ones provided
/// </summary>
/// <param name="body">The request body</param>
/// <param name="cancellationToken">Cancellation token to use when cancelling requests</param>
/// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
public async Task<Stream?> PutAsync(List<Record> body, Action<WithZoneItemRequestBuilderPutRequestConfiguration>? requestConfiguration = default, CancellationToken cancellationToken = default) {
#nullable restore
#else
public async Task<Stream> PutAsync(List<Record> body, Action<WithZoneItemRequestBuilderPutRequestConfiguration> requestConfiguration = default, CancellationToken cancellationToken = default) {
#endif
_ = body ?? throw new ArgumentNullException(nameof(body));
var requestInfo = ToPutRequestInformation(body, requestConfiguration);
var errorMapping = new Dictionary<string, ParsableFactory<IParsable>> {
{"400", WithZone.CreateFromDiscriminatorValue},
{"401", Error.CreateFromDiscriminatorValue},
{"500", Error.CreateFromDiscriminatorValue},
};
return await RequestAdapter.SendPrimitiveAsync<Stream>(requestInfo, errorMapping, cancellationToken);
}
/// <summary>
/// Returns a customer zone.
/// </summary>
/// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
public RequestInformation ToGetRequestInformation(Action<WithZoneItemRequestBuilderGetRequestConfiguration>? requestConfiguration = default) {
#nullable restore
#else
public RequestInformation ToGetRequestInformation(Action<WithZoneItemRequestBuilderGetRequestConfiguration> requestConfiguration = default) {
#endif
var requestInfo = new RequestInformation {
HttpMethod = Method.GET,
UrlTemplate = UrlTemplate,
PathParameters = PathParameters,
};
requestInfo.Headers.Add("Accept", "application/json");
if (requestConfiguration != null) {
var requestConfig = new WithZoneItemRequestBuilderGetRequestConfiguration();
requestConfiguration.Invoke(requestConfig);
requestInfo.AddQueryParameters(requestConfig.QueryParameters);
requestInfo.AddRequestOptions(requestConfig.Options);
requestInfo.AddHeaders(requestConfig.Headers);
}
return requestInfo;
}
/// <summary>
/// Replaces all records of the same name and type with the ones provided.
/// </summary>
/// <param name="body">The request body</param>
/// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
public RequestInformation ToPatchRequestInformation(List<Record> body, Action<WithZoneItemRequestBuilderPatchRequestConfiguration>? requestConfiguration = default) {
#nullable restore
#else
public RequestInformation ToPatchRequestInformation(List<Record> body, Action<WithZoneItemRequestBuilderPatchRequestConfiguration> requestConfiguration = default) {
#endif
_ = body ?? throw new ArgumentNullException(nameof(body));
var requestInfo = new RequestInformation {
HttpMethod = Method.PATCH,
UrlTemplate = UrlTemplate,
PathParameters = PathParameters,
};
requestInfo.SetContentFromParsable(RequestAdapter, "application/json", body);
if (requestConfiguration != null) {
var requestConfig = new WithZoneItemRequestBuilderPatchRequestConfiguration();
requestConfiguration.Invoke(requestConfig);
requestInfo.AddRequestOptions(requestConfig.Options);
requestInfo.AddHeaders(requestConfig.Headers);
}
return requestInfo;
}
/// <summary>
/// Replaces all records in the zone with the ones provided
/// </summary>
/// <param name="body">The request body</param>
/// <param name="requestConfiguration">Configuration for the request such as headers, query parameters, and middleware options.</param>
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
public RequestInformation ToPutRequestInformation(List<Record> body, Action<WithZoneItemRequestBuilderPutRequestConfiguration>? requestConfiguration = default) {
#nullable restore
#else
public RequestInformation ToPutRequestInformation(List<Record> body, Action<WithZoneItemRequestBuilderPutRequestConfiguration> requestConfiguration = default) {
#endif
_ = body ?? throw new ArgumentNullException(nameof(body));
var requestInfo = new RequestInformation {
HttpMethod = Method.PUT,
UrlTemplate = UrlTemplate,
PathParameters = PathParameters,
};
requestInfo.SetContentFromParsable(RequestAdapter, "application/json", body);
if (requestConfiguration != null) {
var requestConfig = new WithZoneItemRequestBuilderPutRequestConfiguration();
requestConfiguration.Invoke(requestConfig);
requestInfo.AddRequestOptions(requestConfig.Options);
requestInfo.AddHeaders(requestConfig.Headers);
}
return requestInfo;
}
/// <summary>
/// Returns a customer zone.
/// </summary>
public class WithZoneItemRequestBuilderGetQueryParameters {
/// <summary>The record names that should be included (same as name field of Record)</summary>
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
public string? RecordName { get; set; }
#nullable restore
#else
public string RecordName { get; set; }
#endif
/// <summary>A comma-separated list of record types that should be included</summary>
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
public string? RecordType { get; set; }
#nullable restore
#else
public string RecordType { get; set; }
#endif
/// <summary>The FQDN used to filter all the record names that end with it.</summary>
#if NETSTANDARD2_1_OR_GREATER || NETCOREAPP3_1_OR_GREATER
#nullable enable
public string? Suffix { get; set; }
#nullable restore
#else
public string Suffix { get; set; }
#endif
}
/// <summary>
/// Configuration for the request such as headers, query parameters, and middleware options.
/// </summary>
public class WithZoneItemRequestBuilderGetRequestConfiguration {
/// <summary>Request headers</summary>
public RequestHeaders Headers { get; set; }
/// <summary>Request options</summary>
public IList<IRequestOption> Options { get; set; }
/// <summary>Request query parameters</summary>
public WithZoneItemRequestBuilderGetQueryParameters QueryParameters { get; set; } = new WithZoneItemRequestBuilderGetQueryParameters();
/// <summary>
/// Instantiates a new WithZoneItemRequestBuilderGetRequestConfiguration and sets the default values.
/// </summary>
public WithZoneItemRequestBuilderGetRequestConfiguration() {
Options = new List<IRequestOption>();
Headers = new RequestHeaders();
}
}
/// <summary>
/// Configuration for the request such as headers, query parameters, and middleware options.
/// </summary>
public class WithZoneItemRequestBuilderPatchRequestConfiguration {
/// <summary>Request headers</summary>
public RequestHeaders Headers { get; set; }
/// <summary>Request options</summary>
public IList<IRequestOption> Options { get; set; }
/// <summary>
/// Instantiates a new WithZoneItemRequestBuilderPatchRequestConfiguration and sets the default values.
/// </summary>
public WithZoneItemRequestBuilderPatchRequestConfiguration() {
Options = new List<IRequestOption>();
Headers = new RequestHeaders();
}
}
/// <summary>
/// Configuration for the request such as headers, query parameters, and middleware options.
/// </summary>
public class WithZoneItemRequestBuilderPutRequestConfiguration {
/// <summary>Request headers</summary>
public RequestHeaders Headers { get; set; }
/// <summary>Request options</summary>
public IList<IRequestOption> Options { get; set; }
/// <summary>
/// Instantiates a new WithZoneItemRequestBuilderPutRequestConfiguration and sets the default values.
/// </summary>
public WithZoneItemRequestBuilderPutRequestConfiguration() {
Options = new List<IRequestOption>();
Headers = new RequestHeaders();
}
}
}
}