get servers

This commit is contained in:
Tommy Parnell
2015-07-05 21:29:32 -04:00
parent 278cec65ec
commit 9710e9a48b
5 changed files with 50 additions and 7 deletions

View File

@@ -31,5 +31,13 @@ namespace XIVSync.Net.UnitTests
Assert.AreEqual(res.Ok, 1); Assert.AreEqual(res.Ok, 1);
} }
[Test]
public void DoesGetServersWork()
{
var res = new LodestoneApi().GetServers();
Assert.IsTrue(res.Any());
}
} }
} }

View File

@@ -1,4 +1,10 @@
using System.Net; using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using CsQuery;
using CsQuery.ExtensionMethods;
using CsQuery.Web;
using Newtonsoft.Json; using Newtonsoft.Json;
using RestSharp; using RestSharp;
@@ -6,23 +12,38 @@ namespace XIVSync.Net
{ {
public class LodestoneApi public class LodestoneApi
{ {
readonly RestClient _client = new RestClient("http://xivsync.com/");
public LodestoneSearch SearchCharacter(string character, string server)
{
public LodestoneSearch SearchCharacter(string character, string server, int timeout = 90000)
{
var client = new RestClient("http://xivsync.com/") {Timeout = timeout};
var req = new RestRequest("search/character", Method.GET); var req = new RestRequest("search/character", Method.GET);
req.AddParameter("name", character); req.AddParameter("name", character);
req.AddParameter("server", server); req.AddParameter("server", server);
var response = _client.Execute(req); var response = client.Execute(req);
return response.StatusCode != HttpStatusCode.OK ? null : JsonConvert.DeserializeObject<LodestoneSearch>(response.Content); return response.StatusCode != HttpStatusCode.OK ? null : JsonConvert.DeserializeObject<LodestoneSearch>(response.Content);
} }
public LodestoneCharacter GetCharacter(string characterId) public LodestoneCharacter GetCharacter(string characterId, int timeout = 90000)
{ {
var client = new RestClient("http://xivsync.com/") {Timeout = timeout};
var req = new RestRequest("character/get"); var req = new RestRequest("character/get");
req.AddParameter("lodestone", characterId); req.AddParameter("lodestone", characterId);
var response = _client.Execute(req); var response = client.Execute(req);
return response.StatusCode != HttpStatusCode.OK ? null : JsonConvert.DeserializeObject<LodestoneCharacter>(response.Content); return response.StatusCode != HttpStatusCode.OK ? null : JsonConvert.DeserializeObject<LodestoneCharacter>(response.Content);
} }
public IEnumerable<Server> GetServers(double timeoutSeconds = 90)
{
var dom = CQ.CreateFromUrl("http://na.finalfantasyxiv.com/lodestone/worldstatus/", new ServerConfig() {TimeoutSeconds = timeoutSeconds});
var servers = new List<Server>();
foreach (var node in dom[".worldstatus_1"])
{
var serverName = node.ChildNodes.First(a => a.NodeName == "TD").FirstElementChild.InnerText.Trim();
var online = node.ChildNodes.Last(a => a.NodeName == "TD").FirstElementChild.InnerText.Trim();
servers.Add(new Server() {World = serverName, Online = online.Contains("Online")});
}
return servers;
}
} }
} }

View File

@@ -0,0 +1,8 @@
namespace XIVSync.Net
{
public class Server
{
public string World { get; set; }
public bool Online { get; set; }
}
}

View File

@@ -31,6 +31,10 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="CsQuery, Version=1.3.3.249, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\packages\CsQuery.1.3.4\lib\net40\CsQuery.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <Reference Include="Newtonsoft.Json, Version=7.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> <HintPath>..\..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private> <Private>True</Private>
@@ -53,6 +57,7 @@
<Compile Include="LodestoneApi.cs" /> <Compile Include="LodestoneApi.cs" />
<Compile Include="LodestoneSearch.cs" /> <Compile Include="LodestoneSearch.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Servers.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="packages.config" /> <None Include="packages.config" />

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="CsQuery" version="1.3.4" targetFramework="net45" userInstalled="true" />
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" userInstalled="true" /> <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" userInstalled="true" />
<package id="RestSharp" version="105.1.0" targetFramework="net45" userInstalled="true" /> <package id="RestSharp" version="105.1.0" targetFramework="net45" userInstalled="true" />
</packages> </packages>