Skip to content

Commit 4063c5c

Browse files
committed
Only set auth header when Token property set
1 parent bb048a5 commit 4063c5c

File tree

3 files changed

+42
-7
lines changed

3 files changed

+42
-7
lines changed

Slack.NetStandard.Tests/OauthTests.cs

+27
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Net;
44
using System.Net.Http;
5+
using System.Net.Http.Headers;
56
using System.Text;
67
using System.Threading.Tasks;
78
using Slack.NetStandard.Auth;
@@ -11,6 +12,32 @@ namespace Slack.NetStandard.Tests
1112
{
1213
public class OauthTests
1314
{
15+
[Fact]
16+
public async Task ClientAuthCheck()
17+
{
18+
var client = new HttpClient(new ActionHandler(async req =>
19+
{
20+
Assert.Equal("Bearer", req.Headers.Authorization.Scheme);
21+
Assert.Equal("wibble", req.Headers.Authorization.Parameter);
22+
}));
23+
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "wibble");
24+
var slackClient = new SlackWebApiClient(client);
25+
var response = await slackClient.Auth.Test();
26+
}
27+
28+
[Fact]
29+
public async Task ClientTokenCheck()
30+
{
31+
var client = new HttpClient(new ActionHandler(async req =>
32+
{
33+
Assert.Equal("Bearer", req.Headers.Authorization.Scheme);
34+
Assert.Equal("test", req.Headers.Authorization.Parameter);
35+
}));
36+
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "wibble");
37+
var slackClient = new SlackWebApiClient(client, "test");
38+
var response = await slackClient.Auth.Test();
39+
}
40+
1441
[Fact]
1542
public void AccessTokenInformation()
1643
{

Slack.NetStandard/Slack.NetStandard.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
<PropertyGroup>
44
<TargetFramework>netstandard2.0</TargetFramework>
5-
<Version>3.13.3</Version>
5+
<Version>3.13.4</Version>
66
<Description>.NET Core package that helps with Slack interactions, events and web API</Description>
77
<PackageLicenseFile>LICENSE</PackageLicenseFile>
8-
<PackageReleaseNotes>bot id added to auth test (thanks @zzullick!)</PackageReleaseNotes>
8+
<PackageReleaseNotes>Fix bug where Authorization not being set correctly</PackageReleaseNotes>
99
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
1010
<PackageReadmeFile>README.md</PackageReadmeFile>
1111
<Authors>Steven Pears</Authors>

Slack.NetStandard/SlackWebApiClient.cs

+13-5
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ async Task<TResponse> IWebApiClient.MakeJsonCall<TRequest, TResponse>(string met
125125
content.Headers.ContentType = new MediaTypeHeaderValue("application/json") { CharSet = "utf-8" };
126126

127127
var message = new HttpRequestMessage(HttpMethod.Post, MethodUrl(methodName)) { Content = content };
128-
message.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Token);
129-
128+
HandleAuth(message);
129+
130130
var response = await Client.SendAsync(message);
131131
return await GenerateResponseFromMessage<TResponse>(response);
132132
}
@@ -137,6 +137,14 @@ async Task<TResponse> IWebApiClient.MakeJsonCall<TRequest, TResponse>(string met
137137
}
138138
}
139139

140+
private void HandleAuth(HttpRequestMessage message)
141+
{
142+
if (!string.IsNullOrWhiteSpace(Token))
143+
{
144+
message.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Token);
145+
}
146+
}
147+
140148
private async Task<TResponse> GenerateResponseFromMessage<TResponse>(HttpResponseMessage message) where TResponse : WebApiResponseBase
141149
{
142150
var response = DeserializeResponse<TResponse>(await message.Content.ReadAsStreamAsync());
@@ -166,7 +174,7 @@ Task<HttpResponseMessage> IWebApiClient.MakeRawUrlEncodedCall(string methodName,
166174
content.Headers.ContentType.CharSet = "utf-8";
167175

168176
var message = new HttpRequestMessage(HttpMethod.Post, MethodUrl(methodName)) { Content = content };
169-
message.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Token);
177+
HandleAuth(message);
170178

171179
return Client.SendAsync(message);
172180
}
@@ -183,7 +191,7 @@ async Task<TResponse> IWebApiClient.MakeUrlEncodedCall<TResponse>(string methodN
183191
try
184192
{
185193
var message = new HttpRequestMessage(HttpMethod.Post, MethodUrl(methodName)) { Content = content };
186-
message.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Token);
194+
HandleAuth(message);
187195
var response = await Client.SendAsync(message);
188196
return await GenerateResponseFromMessage<TResponse>(response);
189197
}
@@ -223,7 +231,7 @@ async Task<TResponse> IWebApiClient.MakeMultiPartCall<TResponse>(string methodNa
223231
try
224232
{
225233
var message = new HttpRequestMessage(HttpMethod.Post, MethodUrl(methodName)) { Content = content };
226-
message.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Token);
234+
HandleAuth(message);
227235
var response = await Client.SendAsync(message);
228236
return await GenerateResponseFromMessage<TResponse>(response);
229237
}

0 commit comments

Comments
 (0)