Skip to content

Commit b2b9caf

Browse files
committed
Adding support for parameter binding as an input to the in-process extension
1 parent 5f91cf5 commit b2b9caf

File tree

4 files changed

+50
-3
lines changed

4 files changed

+50
-3
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using System;
2+
3+
namespace Lib.Azure.WebJobs.Extensions.WebPush.Bindings
4+
{
5+
internal class PushServiceParameterBindingDataContent
6+
{
7+
public string PublicKey { get; set; }
8+
9+
public string PrivateKey { get; set; }
10+
11+
public string Subject { get; set; }
12+
13+
public bool AutoRetryAfter { get; set; }
14+
15+
public int MaxRetriesAfter { get; set; }
16+
17+
public int? DefaultTimeToLive { get; set; }
18+
19+
public PushServiceParameterBindingDataContent(PushServiceAttribute attribute, PushServiceOptions options)
20+
{
21+
PublicKey = !String.IsNullOrEmpty(attribute.PublicKeySetting) ? attribute.PublicKeySetting : options?.PublicKey;
22+
PrivateKey = !String.IsNullOrEmpty(attribute.PrivateKeySetting) ? attribute.PrivateKeySetting : options?.PrivateKey;
23+
Subject = !String.IsNullOrEmpty(attribute.SubjectSetting) ? attribute.SubjectSetting : options?.Subject;
24+
AutoRetryAfter = attribute.AutoRetryAfter;
25+
MaxRetriesAfter = attribute.MaxRetriesAfter;
26+
DefaultTimeToLive = attribute.DefaultTimeToLive;
27+
}
28+
}
29+
}

src/Lib.Azure.WebJobs.Extensions.WebPush/Config/PushServiceExtensionConfigProvider.cs

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
using System;
22
using System.Net.Http;
33
using Microsoft.Extensions.Options;
4+
using Microsoft.Azure.WebJobs;
45
using Microsoft.Azure.WebJobs.Description;
56
using Microsoft.Azure.WebJobs.Host.Config;
67
using Lib.Azure.WebJobs.Extensions.WebPush.Bindings;
78
using Lib.Net.Http.WebPush;
89

910
namespace Lib.Azure.WebJobs.Extensions.WebPush.Config
1011
{
11-
[Extension("PushService")]
12+
[Extension(Constants.PushServiceExtensionName)]
1213
internal class PushServiceExtensionConfigProvider : IExtensionConfigProvider
1314
{
1415
private readonly PushServiceOptions _options;
@@ -32,6 +33,7 @@ public void Initialize(ExtensionConfigContext context)
3233
bindingAttributeBindingRule.AddValidator(ValidateVapidAuthentication);
3334

3435
bindingAttributeBindingRule.BindToInput<PushServiceClient>(typeof(PushServiceClientConverter), _options, _httpClientFactory);
36+
bindingAttributeBindingRule.BindToInput<ParameterBindingData>(CreateParameterBindingData);
3537
}
3638

3739
private void ValidateVapidAuthentication(PushServiceAttribute attribute, Type paramType)
@@ -50,5 +52,14 @@ private void ValidateVapidAuthentication(PushServiceAttribute attribute, Type pa
5052
throw new InvalidOperationException($"The application server private key must be set either via the {attributeProperty} property or via {optionsProperty}.");
5153
}
5254
}
55+
56+
internal ParameterBindingData CreateParameterBindingData(PushServiceAttribute attribute)
57+
{
58+
var pushServiceParameterBindingData = new PushServiceParameterBindingDataContent(attribute, _options);
59+
var pushServiceParameterBinaryData = new BinaryData(pushServiceParameterBindingData);
60+
var parameterBindingData = new ParameterBindingData("1.0", Constants.PushServiceExtensionName, pushServiceParameterBinaryData, "application/json");
61+
62+
return parameterBindingData;
63+
}
5364
}
5465
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace Lib.Azure.WebJobs.Extensions.WebPush
2+
{
3+
internal static class Constants
4+
{
5+
internal const string PushServiceExtensionName = "PushService";
6+
}
7+
}

src/Lib.Azure.WebJobs.Extensions.WebPush/Lib.Azure.WebJobs.Extensions.WebPush.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<Description>This package contains Azure Functions and Azure WebJobs binding extensions for Web Push Protocol based client for Push Service.</Description>
44
<Tags>Azure WebJobs AzureFunctions WebPush</Tags>
55
<Copyright>Copyright © 2019 - 2024 Tomasz Pęczek</Copyright>
6-
<VersionPrefix>1.4.1</VersionPrefix>
6+
<VersionPrefix>1.5.0</VersionPrefix>
77
<Authors>Tomasz Pęczek</Authors>
88
<TargetFramework>netstandard2.0</TargetFramework>
99
<AssemblyTitle>Lib.Azure.WebJobs.Extensions.WebPush</AssemblyTitle>
@@ -29,7 +29,7 @@
2929
<None Include="..\..\README.md" Pack="true" PackagePath="\"/>
3030
</ItemGroup>
3131
<ItemGroup>
32-
<PackageReference Include="Microsoft.Azure.WebJobs" Version="3.0.0" />
32+
<PackageReference Include="Microsoft.Azure.WebJobs" Version="3.0.37" />
3333
<PackageReference Include="Microsoft.Extensions.Http" Version="2.2.0" />
3434
</ItemGroup>
3535
<ItemGroup>

0 commit comments

Comments
 (0)