Browse Source

Added CreatePMChannel

tags/docs-0.9
Brandon Smith 9 years ago
parent
commit
28d69300b8
5 changed files with 53 additions and 20 deletions
  1. +1
    -1
      Discord.Net.Tests/Tests.cs
  2. +5
    -0
      Discord.Net/API/DiscordAPI.cs
  3. +12
    -8
      Discord.Net/API/Endpoints.cs
  4. +5
    -0
      Discord.Net/API/Models/ApiRequests.cs
  5. +30
    -11
      Discord.Net/DiscordClient.cs

+ 1
- 1
Discord.Net.Tests/Tests.cs View File

@@ -31,7 +31,7 @@ namespace Discord.Net.Tests
Task.WaitAll(_bot2.Servers.Select(x => _bot2.LeaveServer(x)).ToArray()); Task.WaitAll(_bot2.Servers.Select(x => _bot2.LeaveServer(x)).ToArray());


//Create new server and invite other bot to it //Create new server and invite other bot to it
_testServer = _bot1.CreateServer("Discord.Net Testbed", Regions.US_East).Result;
_testServer = _bot1.CreateServer("Discord.Net Testing", Regions.US_East).Result;
_testServerChannel = _testServer.DefaultChannel; _testServerChannel = _testServer.DefaultChannel;
Invite invite = _bot1.CreateInvite(_testServer, 60, 1, false, false).Result; Invite invite = _bot1.CreateInvite(_testServer, 60, 1, false, false).Result;
_bot2.AcceptInvite(invite).Wait(); _bot2.AcceptInvite(invite).Wait();


+ 5
- 0
Discord.Net/API/DiscordAPI.cs View File

@@ -41,6 +41,11 @@ namespace Discord.API
var request = new APIRequests.CreateChannel { Name = name, Type = channelType }; var request = new APIRequests.CreateChannel { Name = name, Type = channelType };
return Http.Post<APIResponses.CreateChannel>(Endpoints.ServerChannels(serverId), request, options); return Http.Post<APIResponses.CreateChannel>(Endpoints.ServerChannels(serverId), request, options);
} }
public static Task<APIResponses.CreateChannel> CreatePMChannel(string myId, string recipientId, HttpOptions options)
{
var request = new APIRequests.CreatePMChannel { RecipientId = recipientId };
return Http.Post<APIResponses.CreateChannel>(Endpoints.UserChannels(myId), request, options);
}
public static Task<APIResponses.DestroyChannel> DestroyChannel(string channelId, HttpOptions options) public static Task<APIResponses.DestroyChannel> DestroyChannel(string channelId, HttpOptions options)
=> Http.Delete<APIResponses.DestroyChannel>(Endpoints.Channel(channelId), options); => Http.Delete<APIResponses.DestroyChannel>(Endpoints.Channel(channelId), options);
public static Task<APIResponses.GetMessages[]> GetMessages(string channelId, HttpOptions options) public static Task<APIResponses.GetMessages[]> GetMessages(string channelId, HttpOptions options)


+ 12
- 8
Discord.Net/API/Endpoints.cs View File

@@ -16,6 +16,14 @@
public static readonly string AuthLogin = $"{Auth}/login"; public static readonly string AuthLogin = $"{Auth}/login";
public static readonly string AuthLogout = $"{Auth}/logout"; public static readonly string AuthLogout = $"{Auth}/logout";


// /api/channels
public static readonly string Channels = $"{BaseApi}/channels";
public static string Channel(string id) => $"{Channels}/{id}";
public static string ChannelTyping(string id) => $"{Channels}/{id}/typing";
public static string ChannelMessages(string id) => $"{Channels}/{id}/messages";
public static string ChannelMessages(string id, int limit) => $"{Channels}/{id}/messages?limit={limit}";
public static string ChannelInvites(string id) => $"{Channels}/{id}/invites";

// /api/guilds // /api/guilds
public static readonly string Servers = $"{BaseApi}/guilds"; public static readonly string Servers = $"{BaseApi}/guilds";
public static string Server(string id) => $"{Servers}/{id}"; public static string Server(string id) => $"{Servers}/{id}";
@@ -27,15 +35,11 @@
public static readonly string Invites = $"{BaseApi}/invite"; public static readonly string Invites = $"{BaseApi}/invite";
public static string Invite(string id) => $"{Invites}/{id}"; public static string Invite(string id) => $"{Invites}/{id}";


// /api/channels
public static readonly string Channels = $"{BaseApi}/channels";
public static string Channel(string id) => $"{Channels}/{id}";
public static string ChannelTyping(string id) => $"{Channels}/{id}/typing";
public static string ChannelMessages(string id) => $"{Channels}/{id}/messages";
public static string ChannelMessages(string id, int limit) => $"{Channels}/{id}/messages?limit={limit}";
public static string ChannelInvites(string id) => $"{Channels}/{id}/invites";
// /api/users
public static readonly string Users = $"{BaseApi}/users";
public static string UserChannels(string id) => $"{Users}/{id}/channels";


// /api/voice
// /api/voice
public static readonly string Voice = $"{BaseApi}/voice"; public static readonly string Voice = $"{BaseApi}/voice";
public static readonly string VoiceRegions = $"{Voice}/regions"; public static readonly string VoiceRegions = $"{Voice}/regions";
public static readonly string VoiceIce = $"{Voice}/ice"; public static readonly string VoiceIce = $"{Voice}/ice";


+ 5
- 0
Discord.Net/API/Models/ApiRequests.cs View File

@@ -38,6 +38,11 @@ namespace Discord.API.Models
[JsonProperty(PropertyName = "type")] [JsonProperty(PropertyName = "type")]
public string Type; public string Type;
} }
public class CreatePMChannel
{
[JsonProperty(PropertyName = "recipient_id")]
public string RecipientId;
}


public class CreateInvite public class CreateInvite
{ {


+ 30
- 11
Discord.Net/DiscordClient.cs View File

@@ -444,16 +444,15 @@ namespace Discord
} }
public Task<Server> LeaveServer(Server server) public Task<Server> LeaveServer(Server server)
=> LeaveServer(server.Id); => LeaveServer(server.Id);
public async Task<Server> LeaveServer(string id)
public async Task<Server> LeaveServer(string serverId)
{ {
CheckReady(); CheckReady();
try try
{ {
await DiscordAPI.LeaveServer(id, _httpOptions);
await DiscordAPI.LeaveServer(serverId, _httpOptions);
} }
//Happens if the room was destroyed as we try to leave it
catch (WebException ex) when ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) {} catch (WebException ex) when ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) {}
return _servers.Remove(id);
return _servers.Remove(serverId);
} }


//Channels //Channels
@@ -465,13 +464,25 @@ namespace Discord
var response = await DiscordAPI.CreateChannel(serverId, name, region, _httpOptions); var response = await DiscordAPI.CreateChannel(serverId, name, region, _httpOptions);
return _channels.Update(response.Id, response); return _channels.Update(response.Id, response);
} }
public Task<Channel> CreatePMChannel(User user, string name, string region)
=> CreateChannel(user.Id, name, region);
public async Task<Channel> CreatePMChannel(string recipientId, string name, string region)
{
CheckReady();
var response = await DiscordAPI.CreatePMChannel(UserId, recipientId, _httpOptions);
return _channels.Update(response.Id, response);
}
public Task<Channel> DestroyChannel(Channel channel) public Task<Channel> DestroyChannel(Channel channel)
=> DestroyChannel(channel.Id); => DestroyChannel(channel.Id);
public async Task<Channel> DestroyChannel(string channelId) public async Task<Channel> DestroyChannel(string channelId)
{ {
CheckReady(); CheckReady();
var response = await DiscordAPI.DestroyChannel(channelId, _httpOptions);
return _channels.Remove(response.Id);
try
{
var response = await DiscordAPI.DestroyChannel(channelId, _httpOptions);
}
catch (WebException ex) when ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) { }
return _channels.Remove(channelId);
} }


//Bans //Bans
@@ -492,10 +503,14 @@ namespace Discord
=> Unban(server.Id, userId); => Unban(server.Id, userId);
public Task Unban(string server, User user) public Task Unban(string server, User user)
=> Unban(server, user.Id); => Unban(server, user.Id);
public Task Unban(string serverId, string userId)
public async Task Unban(string serverId, string userId)
{ {
CheckReady(); CheckReady();
return DiscordAPI.Unban(serverId, userId, _httpOptions);
try
{
await DiscordAPI.Unban(serverId, userId, _httpOptions);
}
catch (WebException ex) when ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) { }
} }




@@ -553,9 +568,13 @@ namespace Discord
public async Task DeleteInvite(string id) public async Task DeleteInvite(string id)
{ {
CheckReady(); CheckReady();
//Check if this is a human-readable link and get its ID
var response = await DiscordAPI.GetInvite(id, _httpOptions);
await DiscordAPI.DeleteInvite(response.Code, _httpOptions);
try
{
//Check if this is a human-readable link and get its ID
var response = await DiscordAPI.GetInvite(id, _httpOptions);
await DiscordAPI.DeleteInvite(response.Code, _httpOptions);
}
catch (WebException ex) when ((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) { }
} }


//Chat //Chat


Loading…
Cancel
Save