59 lines
2.5 KiB
C#
59 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using ChaosBot.Lodestone;
|
|
|
|
namespace ChaosBot.Services
|
|
{
|
|
public static class LodestoneManager
|
|
{
|
|
private static readonly Dictionary<Endpoints, string> EndpointPaths = new Dictionary<Endpoints, string>
|
|
{
|
|
{Endpoints.CHARACTER_SEARCH_BY_ID, "character/%s"},
|
|
{Endpoints.CHARACTER_SEARCH, "character/search"},
|
|
{Endpoints.FREECOMPANY_SEARCH_BY_ID, "freecompany/%s"},
|
|
{Endpoints.FREECOMPANY_SEARCH, "freecompany/search"},
|
|
};
|
|
|
|
public static string GetEndpointPaths(Endpoints endpoint, params object[] parameters)
|
|
{
|
|
return string.Format(EndpointPaths.GetValueOrDefault(endpoint, string.Empty)!, parameters);
|
|
}
|
|
|
|
public static Character GetCharacter(string server, string name)
|
|
{
|
|
Dictionary<string,string> parameters = new Dictionary<string, string>
|
|
{{"name", name}, {"server", server}};
|
|
|
|
PaginationWrapper<Character> characterWrapper = LodestoneHttpProxy.Fetch<PaginationWrapper<Character>>(GetEndpointPaths(Endpoints.CHARACTER_SEARCH), parameters);
|
|
return characterWrapper.Results.First();
|
|
}
|
|
|
|
public static Character GetCharacter(long id)
|
|
{
|
|
PaginationWrapper<Character> characterWrapper = LodestoneHttpProxy.Fetch<PaginationWrapper<Character>>(GetEndpointPaths(Endpoints.CHARACTER_SEARCH_BY_ID, id.ToString()));
|
|
return characterWrapper.Results.First();
|
|
}
|
|
|
|
public static FreeCompany GetFreeCompany(string server, string name)
|
|
{
|
|
Dictionary<string,string> parameters = new Dictionary<string, string>
|
|
{{"name", name}, {"server", server}};
|
|
|
|
PaginationWrapper<FreeCompany> freeCompanyWrapper = LodestoneHttpProxy.Fetch<PaginationWrapper<FreeCompany>>(GetEndpointPaths(Endpoints.FREECOMPANY_SEARCH), parameters);
|
|
return freeCompanyWrapper.Results.First();
|
|
}
|
|
|
|
public static FreeCompany GetFreeCompanyById(string id) {
|
|
PaginationWrapper<FreeCompany> freeCompanyWrapper = LodestoneHttpProxy.Fetch<PaginationWrapper<FreeCompany>>(GetEndpointPaths(Endpoints.FREECOMPANY_SEARCH_BY_ID, id));
|
|
return freeCompanyWrapper.Results.First();}
|
|
}
|
|
|
|
public enum Endpoints
|
|
{
|
|
CHARACTER_SEARCH_BY_ID,
|
|
CHARACTER_SEARCH,
|
|
FREECOMPANY_SEARCH_BY_ID,
|
|
FREECOMPANY_SEARCH
|
|
}
|
|
} |