[sharedlibrary] add client meta

[application] add gravatar command
This commit is contained in:
RaidMax
2018-06-01 23:48:10 -05:00
parent 6d0f859a93
commit e3dba96d72
14 changed files with 744 additions and 6 deletions

View File

@ -6,6 +6,8 @@ using SharedLibraryCore.Services;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
@ -1181,4 +1183,65 @@ namespace SharedLibraryCore.Commands
}
}
}
public class CSetGravatar : Command
{
public CSetGravatar() : base("setgravatar", Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_GRAVATAR_DESC"], "sg", Player.Permission.User, false, new CommandArgument[]
{
new CommandArgument()
{
Name = Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_ARGS_GRAVATAR"],
Required = true
}
})
{ }
public override async Task ExecuteAsync(GameEvent E)
{
using (var ctx = new DatabaseContext())
{
var iqMeta = from meta in ctx.EFMeta
where meta.ClientId == E.Origin.ClientId
where meta.Key == "GravatarEmail"
select meta;
var gravatarMeta = await iqMeta.FirstOrDefaultAsync();
// gravatar meta has never been added
if (gravatarMeta == null)
{
using (var md5 = MD5.Create())
{
gravatarMeta = new EFMeta()
{
Active = true,
ClientId = E.Origin.ClientId,
Key = "GravatarEmail",
Value = string.Concat(md5.ComputeHash(E.Data.ToLower().Select(d => Convert.ToByte(d)).ToArray())
.Select(h => h.ToString("x2"))),
};
ctx.EFMeta.Add(gravatarMeta);
await ctx.SaveChangesAsync();
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_GRAVATAR_SUCCESS_NEW"]);
return;
}
}
else
{
ctx.EFMeta.Update(gravatarMeta);
using (var md5 = MD5.Create())
{
gravatarMeta.Value = string.Concat(md5.ComputeHash(E.Data.ToLower().Select(d => Convert.ToByte(d)).ToArray())
.Select(h => h.ToString("x2")));
gravatarMeta.Updated = DateTime.UtcNow;
}
await ctx.SaveChangesAsync();
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_GRAVATAR_SUCCESS_UPDATE"]);
}
}
}
}
}