get servers
This commit is contained in:
@@ -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());
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
8
src/XIVSync.Net/Server.cs
Normal file
8
src/XIVSync.Net/Server.cs
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
namespace XIVSync.Net
|
||||||
|
{
|
||||||
|
public class Server
|
||||||
|
{
|
||||||
|
public string World { get; set; }
|
||||||
|
public bool Online { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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" />
|
||||||
|
|||||||
@@ -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>
|
||||||
Reference in New Issue
Block a user