Skip to content

Use latest C# language feature #19

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Azure.WebJobs.Extensions.HttpApi.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29905.134
# Visual Studio Version 17
VisualStudioVersion = 17.0.31815.197
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.WebJobs.Extensions.HttpApi", "src\Azure.WebJobs.Extensions.HttpApi\Azure.WebJobs.Extensions.HttpApi.csproj", "{312B6D09-BB13-4FD2-A667-8F6E27EA72BC}"
EndProject
Expand Down
4 changes: 2 additions & 2 deletions samples/BasicSample/BasicSample.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29905.134
# Visual Studio Version 17
VisualStudioVersion = 17.0.31815.197
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BasicSample", "BasicSample.csproj", "{B6B3FAEC-193D-49BC-8EBB-BEA0AF7D9E5C}"
EndProject
Expand Down
4 changes: 2 additions & 2 deletions samples/VirtualPathSample/VirtualPathSample.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29926.136
# Visual Studio Version 17
VisualStudioVersion = 17.0.31815.197
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VirtualPathSample", "VirtualPathSample.csproj", "{F4ADFB78-91BB-44F9-9135-0F09998B13D8}"
EndProject
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

<PropertyGroup>
<TargetFrameworks>net6.0;netcoreapp3.1</TargetFrameworks>
<LangVersion>latest</LangVersion>
</PropertyGroup>

<PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@ namespace Azure.WebJobs.Extensions.HttpApi
{
public class HttpApiWebJobsStartup : IWebJobsStartup
{
public void Configure(IWebJobsBuilder builder)
{
builder.AddHttpApi();
}
public void Configure(IWebJobsBuilder builder) => builder.AddHttpApi();
}
}
53 changes: 27 additions & 26 deletions src/Azure.WebJobs.Extensions.HttpApi/HttpFunctionBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ protected HttpFunctionBase(IHttpContextAccessor httpContextAccessor)

private const string DefaultContentType = "application/octet-stream";

private static readonly IFileProvider _fileProvider = new PhysicalFileProvider(FunctionEnvironment.RootPath);
private static readonly IContentTypeProvider _contentTypeProvider = new FileExtensionContentTypeProvider();
private static readonly ProxyInvoker _proxyInvoker = new ProxyInvoker();
private static readonly PhysicalFileProvider _fileProvider = new(FunctionEnvironment.RootPath);
private static readonly FileExtensionContentTypeProvider _contentTypeProvider = new();
private static readonly ProxyInvoker _proxyInvoker = new();

protected HttpContext HttpContext => _httpContextAccessor.HttpContext;
protected HttpRequest Request => HttpContext?.Request;
Expand Down Expand Up @@ -70,8 +70,8 @@ protected ProblemDetailsFactory ProblemDetailsFactory

#region IActionResult helpers

protected StatusCodeResult StatusCode(int statusCode) => new StatusCodeResult(statusCode);
protected ObjectResult StatusCode(int statusCode, object value) => new ObjectResult(value) { StatusCode = statusCode };
protected StatusCodeResult StatusCode(int statusCode) => new(statusCode);
protected ObjectResult StatusCode(int statusCode, object value) => new(value) { StatusCode = statusCode };

protected ContentResult Content(string content) => Content(content, (MediaTypeHeaderValue)null);
protected ContentResult Content(string content, string contentType) => Content(content, MediaTypeHeaderValue.Parse(contentType));
Expand All @@ -84,24 +84,25 @@ protected ContentResult Content(string content, string contentType, Encoding con
}

protected ContentResult Content(string content, MediaTypeHeaderValue contentType)
=> new ContentResult { Content = content, ContentType = contentType?.ToString() };
=> new()
{ Content = content, ContentType = contentType?.ToString() };

protected NoContentResult NoContent() => new NoContentResult();
protected NoContentResult NoContent() => new();

protected OkResult Ok() => new OkResult();
protected OkObjectResult Ok(object value) => new OkObjectResult(value);
protected OkResult Ok() => new();
protected OkObjectResult Ok(object value) => new(value);

protected FileContentResult File(byte[] fileContents, string contentType)
=> File(fileContents, contentType, null);

protected FileContentResult File(byte[] fileContents, string contentType, string fileDownloadName)
=> new FileContentResult(fileContents, contentType) { FileDownloadName = fileDownloadName };
=> new(fileContents, contentType) { FileDownloadName = fileDownloadName };

protected FileStreamResult File(Stream fileStream, string contentType)
=> File(fileStream, contentType, null);

protected FileStreamResult File(Stream fileStream, string contentType, string fileDownloadName)
=> new FileStreamResult(fileStream, contentType) { FileDownloadName = fileDownloadName };
=> new(fileStream, contentType) { FileDownloadName = fileDownloadName };

protected VirtualFileResult File(string virtualPath)
=> File(virtualPath, _contentTypeProvider.TryGetContentType(virtualPath, out var contentType) ? contentType : DefaultContentType);
Expand All @@ -110,21 +111,21 @@ protected VirtualFileResult File(string virtualPath, string contentType)
=> File(virtualPath, contentType, null);

protected VirtualFileResult File(string virtualPath, string contentType, string fileDownloadName)
=> new VirtualFileResult(virtualPath, contentType) { FileDownloadName = fileDownloadName, FileProvider = _fileProvider };
=> new(virtualPath, contentType) { FileDownloadName = fileDownloadName, FileProvider = _fileProvider };

protected UnauthorizedResult Unauthorized() => new UnauthorizedResult();
protected UnauthorizedObjectResult Unauthorized(object value) => new UnauthorizedObjectResult(value);
protected UnauthorizedResult Unauthorized() => new();
protected UnauthorizedObjectResult Unauthorized(object value) => new(value);

protected NotFoundResult NotFound() => new NotFoundResult();
protected NotFoundObjectResult NotFound(object value) => new NotFoundObjectResult(value);
protected NotFoundResult NotFound() => new();
protected NotFoundObjectResult NotFound(object value) => new(value);

protected BadRequestResult BadRequest() => new BadRequestResult();
protected BadRequestObjectResult BadRequest(object error) => new BadRequestObjectResult(error);
protected BadRequestObjectResult BadRequest(ModelStateDictionary modelState) => new BadRequestObjectResult(modelState);
protected BadRequestResult BadRequest() => new();
protected BadRequestObjectResult BadRequest(object error) => new(error);
protected BadRequestObjectResult BadRequest(ModelStateDictionary modelState) => new(modelState);

protected ConflictResult Conflict() => new ConflictResult();
protected ConflictObjectResult Conflict(object error) => new ConflictObjectResult(error);
protected ConflictObjectResult Conflict(ModelStateDictionary modelState) => new ConflictObjectResult(modelState);
protected ConflictResult Conflict() => new();
protected ConflictObjectResult Conflict(object error) => new(error);
protected ConflictObjectResult Conflict(ModelStateDictionary modelState) => new(modelState);

protected ObjectResult Problem(string detail = null, string instance = null, int? statusCode = null, string title = null, string type = null)
{
Expand Down Expand Up @@ -178,8 +179,8 @@ protected CreatedResult Created(Uri uri, object value)
protected CreatedResult CreatedAtFunction(string functionName, object routeValues, object value)
=> Created(Url.Link(functionName, routeValues), value);

protected AcceptedResult Accepted() => new AcceptedResult();
protected AcceptedResult Accepted(object value) => new AcceptedResult(location: null, value);
protected AcceptedResult Accepted() => new();
protected AcceptedResult Accepted(object value) => new(location: null, value);

protected AcceptedResult Accepted(Uri uri)
{
Expand All @@ -191,7 +192,7 @@ protected AcceptedResult Accepted(Uri uri)
return new AcceptedResult(uri, null);
}

protected AcceptedResult Accepted(string uri) => new AcceptedResult(uri, null);
protected AcceptedResult Accepted(string uri) => new(uri, null);

protected AcceptedResult Accepted(Uri uri, object value)
{
Expand All @@ -203,7 +204,7 @@ protected AcceptedResult Accepted(Uri uri, object value)
return new AcceptedResult(uri, value);
}

protected AcceptedResult Accepted(string uri, object value) => new AcceptedResult(uri, value);
protected AcceptedResult Accepted(string uri, object value) => new(uri, value);

protected AcceptedResult AcceptedAtFunction(string functionName) => AcceptedAtFunction(functionName, null, null);
protected AcceptedResult AcceptedAtFunction(string functionName, object value) => AcceptedAtFunction(functionName, null, value);
Expand Down
4 changes: 2 additions & 2 deletions src/Azure.WebJobs.Extensions.HttpApi/Proxy/ProxyInvoker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,9 @@ private static void CopyResponseHeaders(HttpContext httpContext, HttpResponseMes
}
}

private readonly HttpClient _httpClient = new HttpClient();
private readonly HttpClient _httpClient = new();

private static readonly HashSet<string> _skipHeaders = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
private static readonly HashSet<string> _skipHeaders = new(StringComparer.OrdinalIgnoreCase)
{
"Host",
"Connection",
Expand Down
6 changes: 2 additions & 4 deletions src/Azure.WebJobs.Extensions.HttpApi/Proxy/ProxyResultBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ protected ProxyResultBase(string backendUri)

private readonly string _backendUri;

private static readonly Regex _templateRegex = new Regex(@"\{([^\{\}]+)\}", RegexOptions.Compiled);
private static readonly Regex _templateRegex = new(@"\{([^\{\}]+)\}", RegexOptions.Compiled);

public ProxyInvoker ProxyInvoker { get; set; }

Expand Down Expand Up @@ -46,7 +46,7 @@ private string MakeBackendUri(ActionContext context)
{
var routeValues = context.RouteData.Values;

var backend = _templateRegex.Replace(_backendUri, match =>
return _templateRegex.Replace(_backendUri, match =>
{
if (routeValues.TryGetValue(match.Groups[1].Value, out var value) && value != null)
{
Expand All @@ -55,8 +55,6 @@ private string MakeBackendUri(ActionContext context)

return "";
});

return backend;
}
}
}