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);
}
[Test]
public void DoesGetServersWork()
{
var res = new LodestoneApi().GetServers();
Assert.IsTrue(res.Any());
}
}
}

View File

@@ -1,28 +1,49 @@
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 RestSharp;
namespace XIVSync.Net
{
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);
req.AddParameter("name", character);
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);
}
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");
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);
}
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>
</PropertyGroup>
<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">
<HintPath>..\..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
@@ -53,6 +57,7 @@
<Compile Include="LodestoneApi.cs" />
<Compile Include="LodestoneSearch.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Servers.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<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="RestSharp" version="105.1.0" targetFramework="net45" userInstalled="true" />
</packages>