| File: Tasks\OneDeploy\OneDeploy.WebJob.cs | Web Access |
| Project: src\sdk\src\WebSdk\Publish\Tasks\Microsoft.NET.Sdk.Publish.Tasks.csproj (Microsoft.NET.Sdk.Publish.Tasks) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace Microsoft.NET.Sdk.Publish.Tasks.OneDeploy; /// <summary> /// 'OneDeploy' publish task for WebJobs. /// </summary> public partial class OneDeploy { private const string ContinuousWebJobType = "Continuous"; private const string TriggeredWebJobType = "Triggered"; private const string ContinuousWebJobApiPath = "continuouswebjobs"; private const string TriggeredWebJobsApiPath = "triggeredwebjobs"; public string? WebJobName { get; set; } public string? WebJobType { get; set; } /// <summary> /// Whether the name is a non-empty value and type is either 'Continuous' or 'Triggered'. /// </summary> private bool IsWebJobProject(string? webjobName, string? webjobType) => !string.IsNullOrEmpty(webjobName) && (string.Equals(ContinuousWebJobType, webjobType, StringComparison.OrdinalIgnoreCase) || string.Equals(TriggeredWebJobType, webjobType, StringComparison.OrdinalIgnoreCase)); private async Task<IHttpResponse?> DeployWebJobAsync( IHttpClient httpClient, Uri publishUri, string? username, string? password, string? userAgent, string? fileToPublish, FileStream fileToPublishStream, CancellationToken cancellationToken) { var response = await httpClient.PutRequestAsync( publishUri, username, password, DefaultRequestContentType, userAgent, Path.GetFileName(fileToPublish), Encoding.UTF8, fileToPublishStream, cancellationToken); return response; } private bool GetWebJobPublishUri(string publishUrl, string? webjobName, string? webjobType, out Uri publishUri) { // action path differs by WebJob type var path = string.Equals(ContinuousWebJobType, webjobType, StringComparison.OrdinalIgnoreCase) ? ContinuousWebJobApiPath : TriggeredWebJobsApiPath; // Either: // {publishUrl}/api/continuouswebjobs/{WebJobName} // {publishUrl}/api/triggeredwebjobs/{WebJobName} publishUri = new UriBuilder(publishUrl) { Path = $"api/{path}/{webjobName}", Port = -1 }.Uri; return Uri.TryCreate(publishUri.ToString(), UriKind.Absolute, out _); } }