Added EditServer(icon), Renamed AvatarImageType to ImageType
This commit is contained in:
@@ -40,7 +40,7 @@ namespace Discord.API
|
|||||||
public bool IsPrivate;
|
public bool IsPrivate;
|
||||||
[JsonProperty("position")]
|
[JsonProperty("position")]
|
||||||
public int? Position;
|
public int? Position;
|
||||||
[JsonProperty(PropertyName = "topic")]
|
[JsonProperty("topic")]
|
||||||
public string Topic;
|
public string Topic;
|
||||||
[JsonProperty("permission_overwrites")]
|
[JsonProperty("permission_overwrites")]
|
||||||
public PermissionOverwrite[] PermissionOverwrites;
|
public PermissionOverwrite[] PermissionOverwrites;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
namespace Discord
|
namespace Discord
|
||||||
{
|
{
|
||||||
public enum AvatarImageType
|
public enum ImageType
|
||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
Jpeg,
|
Jpeg,
|
||||||
|
|||||||
@@ -72,11 +72,11 @@ namespace Discord.API
|
|||||||
|
|
||||||
public class EditMemberRequest
|
public class EditMemberRequest
|
||||||
{
|
{
|
||||||
[JsonProperty(PropertyName = "mute", NullValueHandling = NullValueHandling.Ignore)]
|
[JsonProperty("mute", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public bool? Mute;
|
public bool? Mute;
|
||||||
[JsonProperty(PropertyName = "deaf", NullValueHandling = NullValueHandling.Ignore)]
|
[JsonProperty("deaf", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public bool? Deaf;
|
public bool? Deaf;
|
||||||
[JsonProperty(PropertyName = "roles", NullValueHandling = NullValueHandling.Ignore)]
|
[JsonProperty("roles", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public IEnumerable<string> Roles;
|
public IEnumerable<string> Roles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,6 +67,8 @@ namespace Discord.API
|
|||||||
public string Name;
|
public string Name;
|
||||||
[JsonProperty("region", NullValueHandling = NullValueHandling.Ignore)]
|
[JsonProperty("region", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string Region;
|
public string Region;
|
||||||
|
[JsonProperty("icon", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
|
public string Icon;
|
||||||
}
|
}
|
||||||
public sealed class EditServerResponse : GuildInfo { }
|
public sealed class EditServerResponse : GuildInfo { }
|
||||||
|
|
||||||
|
|||||||
@@ -29,15 +29,15 @@ namespace Discord.API
|
|||||||
//Edit
|
//Edit
|
||||||
internal sealed class EditUserRequest
|
internal sealed class EditUserRequest
|
||||||
{
|
{
|
||||||
[JsonProperty(PropertyName = "password")]
|
[JsonProperty("password")]
|
||||||
public string CurrentPassword;
|
public string CurrentPassword;
|
||||||
[JsonProperty(PropertyName = "email", NullValueHandling = NullValueHandling.Ignore)]
|
[JsonProperty("email", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string Email;
|
public string Email;
|
||||||
[JsonProperty(PropertyName = "new_password")]
|
[JsonProperty("new_password")]
|
||||||
public string Password;
|
public string Password;
|
||||||
[JsonProperty(PropertyName = "username", NullValueHandling = NullValueHandling.Ignore)]
|
[JsonProperty("username", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string Username;
|
public string Username;
|
||||||
[JsonProperty(PropertyName = "avatar", NullValueHandling = NullValueHandling.Ignore)]
|
[JsonProperty("avatar", NullValueHandling = NullValueHandling.Ignore)]
|
||||||
public string Avatar;
|
public string Avatar;
|
||||||
}
|
}
|
||||||
public sealed class EditUserResponse : UserInfo { }
|
public sealed class EditUserResponse : UserInfo { }
|
||||||
|
|||||||
@@ -279,31 +279,22 @@ namespace Discord
|
|||||||
|
|
||||||
return _rest.Delete<DeleteServerResponse>(Endpoints.Server(serverId));
|
return _rest.Delete<DeleteServerResponse>(Endpoints.Server(serverId));
|
||||||
}
|
}
|
||||||
public Task<EditServerResponse> EditServer(string serverId, string name = null, string region = null)
|
public Task<EditServerResponse> EditServer(string serverId, string name = null, string region = null, ImageType iconType = ImageType.Png, byte[] icon = null)
|
||||||
{
|
{
|
||||||
if (serverId == null) throw new ArgumentNullException(nameof(serverId));
|
if (serverId == null) throw new ArgumentNullException(nameof(serverId));
|
||||||
|
|
||||||
var request = new EditServerRequest { Name = name, Region = region };
|
var request = new EditServerRequest { Name = name, Region = region, Icon = Base64Picture(iconType, icon) };
|
||||||
return _rest.Patch<EditServerResponse>(Endpoints.Server(serverId), request);
|
return _rest.Patch<EditServerResponse>(Endpoints.Server(serverId), request);
|
||||||
}
|
}
|
||||||
|
|
||||||
//User
|
//User
|
||||||
public Task<EditUserResponse> EditUser(string currentPassword = "",
|
public Task<EditUserResponse> EditUser(string currentPassword = "",
|
||||||
string username = null, string email = null, string password = null,
|
string username = null, string email = null, string password = null,
|
||||||
AvatarImageType avatarType = AvatarImageType.Png, byte[] avatar = null)
|
ImageType avatarType = ImageType.Png, byte[] avatar = null)
|
||||||
{
|
{
|
||||||
if (currentPassword == null) throw new ArgumentNullException(nameof(currentPassword));
|
if (currentPassword == null) throw new ArgumentNullException(nameof(currentPassword));
|
||||||
|
|
||||||
string avatarBase64 = null;
|
var request = new EditUserRequest { CurrentPassword = currentPassword, Username = username, Email = email, Password = password, Avatar = Base64Picture(avatarType, avatar) };
|
||||||
if (avatarType == AvatarImageType.None)
|
|
||||||
avatarBase64 = "";
|
|
||||||
else if (avatar != null)
|
|
||||||
{
|
|
||||||
string base64 = Convert.ToBase64String(avatar);
|
|
||||||
string type = avatarType == AvatarImageType.Jpeg ? "image/jpeg;base64" : "image/png;base64";
|
|
||||||
avatarBase64 = $"data:{type},{base64}";
|
|
||||||
}
|
|
||||||
var request = new EditUserRequest { CurrentPassword = currentPassword, Username = username, Email = email, Password = password, Avatar = avatarBase64 };
|
|
||||||
return _rest.Patch<EditUserResponse>(Endpoints.UserMe, request);
|
return _rest.Patch<EditUserResponse>(Endpoints.UserMe, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -312,5 +303,18 @@ namespace Discord
|
|||||||
=> _rest.Get<GetRegionsResponse>(Endpoints.VoiceRegions);
|
=> _rest.Get<GetRegionsResponse>(Endpoints.VoiceRegions);
|
||||||
/*public Task<GetIceResponse> GetVoiceIce()
|
/*public Task<GetIceResponse> GetVoiceIce()
|
||||||
=> _rest.Get<GetIceResponse>(Endpoints.VoiceIce);*/
|
=> _rest.Get<GetIceResponse>(Endpoints.VoiceIce);*/
|
||||||
|
|
||||||
|
private string Base64Picture(ImageType type, byte[] data)
|
||||||
|
{
|
||||||
|
if (type == ImageType.None)
|
||||||
|
return "";
|
||||||
|
else if (data != null)
|
||||||
|
{
|
||||||
|
string base64 = Convert.ToBase64String(data);
|
||||||
|
string imageType = type == ImageType.Jpeg ? "image/jpeg;base64" : "image/png;base64";
|
||||||
|
return $"data:{imageType},{base64}";
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -596,7 +596,7 @@ namespace Discord
|
|||||||
//Profile
|
//Profile
|
||||||
public Task<EditUserResponse> EditProfile(string currentPassword = "",
|
public Task<EditUserResponse> EditProfile(string currentPassword = "",
|
||||||
string username = null, string email = null, string password = null,
|
string username = null, string email = null, string password = null,
|
||||||
AvatarImageType avatarType = AvatarImageType.Png, byte[] avatar = null)
|
ImageType avatarType = ImageType.Png, byte[] avatar = null)
|
||||||
{
|
{
|
||||||
if (currentPassword == null) throw new ArgumentNullException(nameof(currentPassword));
|
if (currentPassword == null) throw new ArgumentNullException(nameof(currentPassword));
|
||||||
|
|
||||||
@@ -727,18 +727,16 @@ namespace Discord
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Edits the provided server, changing only non-null attributes. </summary>
|
/// <summary> Edits the provided server, changing only non-null attributes. </summary>
|
||||||
public Task EditServer(Server server)
|
public Task EditServer(string serverId, string name = null, string region = null, ImageType iconType = ImageType.Png, byte[] icon = null)
|
||||||
=> EditServer(server?.Id);
|
=> EditServer(_servers[serverId], name: name, region: region, iconType: iconType, icon: icon);
|
||||||
/// <summary> Edits the provided server, changing only non-null attributes. </summary>
|
/// <summary> Edits the provided server, changing only non-null attributes. </summary>
|
||||||
public async Task EditServer(string serverId, string name = null, string region = null)
|
public async Task EditServer(Server server, string name = null, string region = null, ImageType iconType = ImageType.Png, byte[] icon = null)
|
||||||
{
|
{
|
||||||
CheckReady();
|
CheckReady();
|
||||||
if (serverId == null) throw new ArgumentNullException(nameof(serverId));
|
if (server == null) throw new ArgumentNullException(nameof(server));
|
||||||
|
|
||||||
var response = await _api.EditServer(serverId, name: name, region: region);
|
var response = await _api.EditServer(server.Id, name: name ?? server.Name, region: region, iconType: iconType, icon: icon);
|
||||||
var server = _servers[response.Id];
|
server.Update(response);
|
||||||
if (server != null)
|
|
||||||
server.Update(response);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Leaves the provided server, destroying it if you are the owner. </summary>
|
/// <summary> Leaves the provided server, destroying it if you are the owner. </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user