diff --git a/src/Discord.Net.Commands/Discord.Net.Commands.xproj b/src/Discord.Net.Commands/Discord.Net.Commands.xproj
index e6d1163ef..1c104ae22 100644
--- a/src/Discord.Net.Commands/Discord.Net.Commands.xproj
+++ b/src/Discord.Net.Commands/Discord.Net.Commands.xproj
@@ -7,7 +7,7 @@
19793545-ef89-48f4-8100-3ebaad0a9141
- Discord.Net.Commands
+ Discord
..\..\artifacts\obj\$(MSBuildProjectName)
..\..\artifacts\bin\$(MSBuildProjectName)\
diff --git a/src/Discord.Net.Net45/Discord.Net.csproj b/src/Discord.Net.Net45/Discord.Net.csproj
index 51f118503..a8336b3fd 100644
--- a/src/Discord.Net.Net45/Discord.Net.csproj
+++ b/src/Discord.Net.Net45/Discord.Net.csproj
@@ -88,6 +88,9 @@
Helpers\Http.cs
+
+ Helpers\HttpException.cs
+
Invite.cs
diff --git a/src/Discord.Net/Discord.Net.xproj b/src/Discord.Net/Discord.Net.xproj
index 5518fc017..be1dbc400 100644
--- a/src/Discord.Net/Discord.Net.xproj
+++ b/src/Discord.Net/Discord.Net.xproj
@@ -7,7 +7,7 @@
acfb060b-ec8a-4926-b293-04c01e17ee23
- Discord.Net
+ Discord
..\..\artifacts\obj\$(MSBuildProjectName)
..\..\artifacts\bin\$(MSBuildProjectName)\
diff --git a/src/Discord.Net/DiscordClient.cs b/src/Discord.Net/DiscordClient.cs
index 4c7df69df..04f11ca15 100644
--- a/src/Discord.Net/DiscordClient.cs
+++ b/src/Discord.Net/DiscordClient.cs
@@ -596,7 +596,7 @@ namespace Discord
{
await DiscordAPI.LeaveServer(serverId);
}
- catch (WebException ex) when ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) {}
+ catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) {}
return _servers.Remove(serverId);
}
@@ -626,7 +626,7 @@ namespace Discord
{
var response = await DiscordAPI.DestroyChannel(channelId);
}
- catch (WebException ex) when ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) { }
+ catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
return _channels.Remove(channelId);
}
@@ -655,7 +655,7 @@ namespace Discord
{
await DiscordAPI.Unban(serverId, userId);
}
- catch (WebException ex) when ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) { }
+ catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
}
//Invites
@@ -718,7 +718,7 @@ namespace Discord
var response = await DiscordAPI.GetInvite(id);
await DiscordAPI.DeleteInvite(response.Code);
}
- catch (WebException ex) when ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) { }
+ catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
}
//Chat
@@ -781,8 +781,8 @@ namespace Discord
await DiscordAPI.DeleteMessage(channelId, msgId);
return _messages.Remove(msgId);
}
- catch (WebException ex) when ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) { }
- catch (WebException ex) when ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.InternalServerError) { } //TODO: Remove me - temporary fix for deleting nonexisting messages
+ catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.NotFound) { }
+ catch (HttpException ex) when (ex.StatusCode == HttpStatusCode.InternalServerError) { } //TODO: Remove me - temporary fix for deleting nonexisting messages
return null;
}
diff --git a/src/Discord.Net/Helpers/Http.cs b/src/Discord.Net/Helpers/Http.cs
index 676b58757..cc96bd25d 100644
--- a/src/Discord.Net/Helpers/Http.cs
+++ b/src/Discord.Net/Helpers/Http.cs
@@ -134,14 +134,14 @@ namespace Discord.Helpers
{
response = await _client.SendAsync(msg, HttpCompletionOption.ResponseContentRead);
if (!response.IsSuccessStatusCode)
- throw new InvalidOperationException($"The server responded with error {(int)response.StatusCode}.");
+ throw new HttpException(response.StatusCode);
result = await response.Content.ReadAsStringAsync();
}
else
{
response = await _client.SendAsync(msg, HttpCompletionOption.ResponseHeadersRead);
if (!response.IsSuccessStatusCode)
- throw new InvalidOperationException($"The server responded with error {(int)response.StatusCode}.");
+ throw new HttpException(response.StatusCode);
result = null;
}
diff --git a/src/Discord.Net/Helpers/HttpException.cs b/src/Discord.Net/Helpers/HttpException.cs
new file mode 100644
index 000000000..2a6292551
--- /dev/null
+++ b/src/Discord.Net/Helpers/HttpException.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Net;
+
+namespace Discord.Helpers
+{
+ public class HttpException : Exception
+ {
+ public HttpStatusCode StatusCode { get; }
+
+ public HttpException(HttpStatusCode statusCode)
+ : base($"The server responded with error {statusCode}")
+ {
+ StatusCode = statusCode;
+ }
+ }
+}
diff --git a/src/Discord.Net/project.json b/src/Discord.Net/project.json
index 3766a72bf..d3e7a20b3 100644
--- a/src/Discord.Net/project.json
+++ b/src/Discord.Net/project.json
@@ -14,13 +14,20 @@
},
"dependencies": {
- "Newtonsoft.Json": "7.0.1",
- "Microsoft.Net.Http": "2.2.22"
+ "Newtonsoft.Json": "7.0.1"
},
"frameworks": {
- "net45": { },
- "dnx451": { },
+ "net45": {
+ "dependencies": {
+ "Microsoft.Net.Http": "2.2.22"
+ }
+ },
+ "dnx451": {
+ "dependencies": {
+ "Microsoft.Net.Http": "2.2.22"
+ }
+ },
"dnxcore50": {
"dependencies": {
"System.Collections.Concurrent": "4.0.10",
@@ -33,4 +40,4 @@
}
}
}
-}
+ }