/// <summary> /// Builds an authenticated request. /// </summary> /// <param name="endpoint">The API endpoint.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> public PreparedRequest PrepareRequest(Url endpoint, CancellationToken cancellationToken) { PreparedRequest request = endpoint.Authenticate(_authenticationProvider); SetMicroversion(request); return(request); }
/// <summary> /// Builds the <see cref="ListFloatingIPsAsync{T}"/> request. /// </summary> /// <param name="queryString">Options for filtering.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> public virtual async Task <PreparedRequest> BuildListFloatingIPsRequest(IQueryStringBuilder queryString, CancellationToken cancellationToken = default(CancellationToken)) { PreparedRequest request = await Endpoint.PrepareGetResourceRequest("floatingips", cancellationToken).ConfigureAwait(false); request.Url.SetQueryParams(queryString?.Build()); return(request); }
/// <summary> /// Builds a request to delete a resource. /// </summary> /// <param name="resourcePath">The resource path.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> /// <exception cref="ArgumentNullException">serverId</exception> public virtual async Task <PreparedRequest> PrepareDeleteResourceRequest(string resourcePath, CancellationToken cancellationToken) { PreparedRequest request = await PrepareRequest(resourcePath, cancellationToken); return(request .PrepareDelete(cancellationToken) .AllowHttpStatus(HttpStatusCode.NotFound)); }
/// <summary /> public virtual async Task <PreparedRequest> BuildGetConsoleRequest(string serverId, object protocol, object type, CancellationToken cancellationToken = default(CancellationToken)) { var body = new { remote_console = new { protocol, type } }; PreparedRequest request = await Endpoint.PrepareRequest($"servers/{serverId}/remote-consoles", cancellationToken); return(request.PreparePostJson(body, cancellationToken)); }
/// <summary> /// Sets the microversion header, if present /// </summary> /// <param name="request">The api request.</param> public void SetMicroversion(PreparedRequest request) { if (_microversion == null) { return; } request.WithHeader(_microversionHeader, _microversion); }
/// <summary> /// Applies OpenStack authentication to a request. /// </summary> /// <param name="request">The request.</param> /// <param name="authenticationProvider">The authentication provider.</param> /// <returns> /// An authenticated request. /// </returns> public static PreparedRequest Authenticate(this PreparedRequest request, IAuthenticationProvider authenticationProvider) { var authenticatedMessageHandler = request.HttpMessageHandler as AuthenticatedMessageHandler; if (authenticatedMessageHandler != null) { authenticatedMessageHandler.AuthenticationProvider = authenticationProvider; } return(request); }
/// <summary> /// Builds a request to create a resource /// </summary> /// <param name="resourcePath">The resource path, e.g. "servers".</param> /// <param name="resource">The resource.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> /// <exception cref="ArgumentNullException">resource</exception> public virtual async Task <PreparedRequest> PrepareCreateResourceRequest(string resourcePath, object resource, CancellationToken cancellationToken) { if (resource == null) { throw new ArgumentNullException("resource"); } PreparedRequest request = await PrepareRequest(resourcePath, cancellationToken); return(request.PreparePostJson(resource, cancellationToken)); }
/// <inheritdoc cref="NetworkingApiBuilder.ListNetworksAsync" /> public async Task <IPage <Network> > ListNetworksAsync(Identifier startNetworkId = null, int?pageSize = null, CancellationToken cancellationToken = default(CancellationToken)) { PreparedRequest request = await _networkingApiBuilder.ListNetworksAsync(cancellationToken); request.Url.SetQueryParams(new { marker = startNetworkId, limit = pageSize }); return(await request.SendAsync() .ReceiveJson <NetworkCollection>()); }
/// <summary> /// Gets a page of resources. /// </summary> /// <typeparam name="TPage">The resource type.</typeparam> /// <param name="pageUrl">The page URL.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> public virtual async Task <TPage> GetResourcePageAsync <TPage>(Url pageUrl, CancellationToken cancellationToken) where TPage : IPageBuilder <TPage> { PreparedRequest request = PrepareRequest(pageUrl, cancellationToken); var results = await request .PrepareGet(cancellationToken) .SendAsync() .ReceiveJson <TPage>(); results.SetNextPageHandler(GetResourcePageAsync <TPage>); return(results); }
/// <summary> /// Sends the <see cref="PreparedRequest"/>. /// </summary> /// <param name="requestTask">A task which returns the request.</param> /// <returns>The HTTP response message.</returns> public static async Task <HttpResponseMessage> SendAsync(this Task <PreparedRequest> requestTask) { PreparedRequest request = await requestTask.ConfigureAwait(false); return(await request.SendAsync().ConfigureAwait(false)); }
/// <inheritdoc cref="ClientConfigExtensions.WithHeader(FlurlClient,string,object)" /> public static PreparedRequest WithHeader(this PreparedRequest request, string key, object value) { ((FlurlClient)request).WithHeader(key, value); return(request); }
/// <summary> /// Builds a request to update a resource. /// </summary> /// <param name="resourcePath">The resource path, e.g. "servers".</param> /// <param name="resource">The resource.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> /// <returns></returns> /// <exception cref="ArgumentNullException">resourceId or resource</exception> public virtual async Task <PreparedRequest> PrepareUpdateResourceRequest(string resourcePath, object resource, CancellationToken cancellationToken) { PreparedRequest request = await PrepareRequest(resourcePath, cancellationToken); return(request.PreparePutJson(resource, cancellationToken)); }
/// <summary> /// Builds a request to retrieve a list of resources. /// </summary> /// <param name="resourcePath">The resource path, e.g. "servers".</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> /// <exception cref="ArgumentNullException">resourceId</exception> public async Task <PreparedRequest> PrepareListResourcesRequest(string resourcePath, CancellationToken cancellationToken) { PreparedRequest request = await PrepareRequest(resourcePath, cancellationToken); return(request.PrepareGet(cancellationToken)); }
/// <summary> /// Applies OpenStack authentication to a request. /// </summary> /// <param name="url">The URL.</param> /// <param name="authenticationProvider">The authentication provider.</param> /// <returns> /// An authenticated request. /// </returns> public static PreparedRequest Authenticate(this Url url, IAuthenticationProvider authenticationProvider) { var client = new PreparedRequest(url, autoDispose: true); return(client.Authenticate(authenticationProvider)); }