Skip to content

Commit 66db99f

Browse files
committed
FcmSender bugfixes. CorePush Tester added
1 parent 21a1bc2 commit 66db99f

File tree

6 files changed

+103
-8
lines changed

6 files changed

+103
-8
lines changed

Diff for: .vscode/launch.json

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"version": "0.2.0",
3+
"configurations": [
4+
{
5+
// Use IntelliSense to find out which attributes exist for C# debugging
6+
// Use hover for the description of the existing attributes
7+
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
8+
"name": ".NET Core Launch (console)",
9+
"type": "coreclr",
10+
"request": "launch",
11+
"preLaunchTask": "build",
12+
// If you have changed target frameworks, make sure to update the program path.
13+
"program": "${workspaceFolder}/CorePush.Tester/bin/Debug/net5.0/CorePush.Tester.dll",
14+
"args": [],
15+
"cwd": "${workspaceFolder}/CorePush.Tester",
16+
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
17+
"console": "internalConsole",
18+
"stopAtEntry": false
19+
},
20+
{
21+
"name": ".NET Core Attach",
22+
"type": "coreclr",
23+
"request": "attach",
24+
"processId": "${command:pickProcess}"
25+
}
26+
]
27+
}

Diff for: CorePush.Tester/CorePush.Tester.csproj

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net5.0</TargetFramework>
6+
</PropertyGroup>
7+
8+
<ItemGroup>
9+
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
10+
</ItemGroup>
11+
12+
<ItemGroup>
13+
<ProjectReference Include="..\CorePush\CorePush.csproj" />
14+
</ItemGroup>
15+
16+
</Project>

Diff for: CorePush.Tester/Program.cs

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using System;
2+
using System.Net.Http;
3+
using System.Threading.Tasks;
4+
using CorePush.Google;
5+
6+
namespace CorePush.Tester
7+
{
8+
class Program
9+
{
10+
private const string fcmReceiverToken = "TODO";
11+
private const string fcmSenderId = "TODO";
12+
private const string fcmServerKey = "TODO";
13+
14+
static async Task Main()
15+
{
16+
await SendFcmNotificationAsync();
17+
18+
Console.WriteLine("Done!");
19+
}
20+
21+
private static async Task SendFcmNotificationAsync()
22+
{
23+
var settings = new FcmSettings
24+
{
25+
SenderId = fcmSenderId,
26+
ServerKey = fcmServerKey
27+
};
28+
29+
var payload = new
30+
{
31+
notification = new { body = "Hello World!" }
32+
};
33+
34+
var fcm = new FcmSender(settings, new HttpClient());
35+
var response = await fcm.SendAsync(fcmReceiverToken, payload);
36+
}
37+
}
38+
}

Diff for: CorePush.sln

+6
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Files", "Files", "{22465E2A
1010
README.md = README.md
1111
EndProjectSection
1212
EndProject
13+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CorePush.Tester", "CorePush.Tester\CorePush.Tester.csproj", "{B32AD461-F300-4FB2-839E-06F40DF2B9FE}"
14+
EndProject
1315
Global
1416
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1517
Debug|Any CPU = Debug|Any CPU
@@ -20,6 +22,10 @@ Global
2022
{86A365CA-4460-428B-BC5C-027DEF70FFE8}.Debug|Any CPU.Build.0 = Debug|Any CPU
2123
{86A365CA-4460-428B-BC5C-027DEF70FFE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
2224
{86A365CA-4460-428B-BC5C-027DEF70FFE8}.Release|Any CPU.Build.0 = Release|Any CPU
25+
{B32AD461-F300-4FB2-839E-06F40DF2B9FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
26+
{B32AD461-F300-4FB2-839E-06F40DF2B9FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
27+
{B32AD461-F300-4FB2-839E-06F40DF2B9FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
28+
{B32AD461-F300-4FB2-839E-06F40DF2B9FE}.Release|Any CPU.Build.0 = Release|Any CPU
2329
EndGlobalSection
2430
GlobalSection(SolutionProperties) = preSolution
2531
HideSolutionNode = FALSE

Diff for: CorePush/CorePush.csproj

+7-3
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,17 @@
66
<Authors>andrei-m-code</Authors>
77
<Company />
88
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
9-
<AssemblyVersion>3.0.3.0</AssemblyVersion>
10-
<FileVersion>3.0.3.0</FileVersion>
11-
<Version>3.0.3</Version>
9+
<AssemblyVersion>3.0.4.0</AssemblyVersion>
10+
<FileVersion>3.0.4.0</FileVersion>
11+
<Version>3.0.4</Version>
1212
<PackageId>CorePush</PackageId>
1313
<PackageProjectUrl>https://github.com/andrei-m-code/CorePush</PackageProjectUrl>
1414
<PackageLicenseExpression>MIT</PackageLicenseExpression>
1515
<PackageReleaseNotes>
16+
v3.0.4
17+
- Bugfixes with FcmSender authorization and serialization
18+
- CorePush.Tester added to make testing easier
19+
1620
v3.0.3
1721
- Cancellation tokens added to the interface with CancellationToken.None by default
1822

Diff for: CorePush/Google/FcmSender.cs

+9-5
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public Task<FcmResponse> SendAsync(string deviceId, object payload, Cancellation
3838
jsonObject.Remove("to");
3939
jsonObject.Add("to", JToken.FromObject(deviceId));
4040

41-
return SendAsync(jsonObject.ToString(), cancellationToken);
41+
return SendAsync(jsonObject, cancellationToken);
4242
}
4343

4444
/// <summary>
@@ -55,20 +55,24 @@ public async Task<FcmResponse> SendAsync(object payload, CancellationToken cance
5555

5656
using (var httpRequest = new HttpRequestMessage(HttpMethod.Post, fcmUrl))
5757
{
58-
httpRequest.Headers.Add("Authorization", $"key={settings.ServerKey}");
58+
httpRequest.Headers.Add("Authorization", $"key = {settings.ServerKey}");
5959

60-
if (string.IsNullOrEmpty(settings.SenderId))
60+
if (!string.IsNullOrEmpty(settings.SenderId))
6161
{
62-
httpRequest.Headers.Add("Sender", $"id={settings.SenderId}");
62+
httpRequest.Headers.Add("Sender", $"id = {settings.SenderId}");
6363
}
6464

6565
httpRequest.Content = new StringContent(serialized, Encoding.UTF8, "application/json");
6666

6767
using (var response = await http.SendAsync(httpRequest, cancellationToken))
6868
{
69-
response.EnsureSuccessStatusCode();
7069
var responseString = await response.Content.ReadAsStringAsync();
7170

71+
if (!response.IsSuccessStatusCode)
72+
{
73+
throw new HttpRequestException("Firebase notification error: " + responseString);
74+
}
75+
7276
return JsonHelper.Deserialize<FcmResponse>(responseString);
7377
}
7478
}

0 commit comments

Comments
 (0)