Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CocNET/CocNET.Test/CocCoreClansTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class CocCoreClansTest
[OneTimeSetUp]
public void InitializeCore()
{
ClansCore = CocCore.Instance(TOKEN).Container.Resolve<ICocCoreClans>();
ClansCore = new CocCore(TOKEN).Container.Resolve<ICocCoreClans>();
}

[Test, Category("ClansTest")]
Expand Down
2 changes: 1 addition & 1 deletion CocNET/CocNET.Test/CocCoreLeaguesTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class CocCoreLeaguesTest
[OneTimeSetUp]
public void InitializeCore()
{
LeaguesCore = CocCore.Instance(TOKEN).Container.Resolve<ICocCoreLeagues>();
LeaguesCore = new CocCore(TOKEN).Container.Resolve<ICocCoreLeagues>();
}

[Test, Category("LeaguesTest")]
Expand Down
2 changes: 1 addition & 1 deletion CocNET/CocNET.Test/CocCoreLocationsTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class CocCoreLocationsTest
[OneTimeSetUp]
public void InitializeCore()
{
LocationsCore = CocCore.Instance(TOKEN).Container.Resolve<ICocCoreLocations>();
LocationsCore = new CocCore(TOKEN).Container.Resolve<ICocCoreLocations>();
}

[Test, Category("LocationsTest")]
Expand Down
2 changes: 1 addition & 1 deletion CocNET/CocNET.Test/CocCorePlayersTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class CocCorePlayersTest
[OneTimeSetUp]
public void InitializeCore()
{
PlayersCore = CocCore.Instance(TOKEN).Container.Resolve<ICocCorePlayers>();
PlayersCore = new CocCore(TOKEN).Container.Resolve<ICocCorePlayers>();
}

[Test, Category("LocationsTest")]
Expand Down
32 changes: 6 additions & 26 deletions CocNET/CocNET/CocCore.cs
Original file line number Diff line number Diff line change
@@ -1,44 +1,24 @@
using CocNET.Interfaces;
using CocNET.Methods;
using System;
using Funq;
using CocNET.Services;

namespace CocNET
{
public class CocCore
{
private static object syncRoot = new Object();

public Container Container { get; set; }
private static CocCore instance;
public static CocCore Instance(string token)
{
lock (syncRoot)
{
if (instance == null)
{
instance = new CocCore(token);
}
}
return instance;
}
/// <summary>
/// Initialize your core.
/// </summary>
private CocCore(string token)

public CocCore(string token)
{
if (string.IsNullOrEmpty(token))
if (Container == null)
{
throw new ArgumentException("Token is nullable or empty.");
Container = new Container();
}
Container = new Funq.Container();

Container.Register<Request>("Request", new Request(token));

Container.Register<ICocCoreClans>(new CocCoreClans(Container.ResolveNamed<Request>("Request")));
Container.Register<ICocCoreLocations>(new CocCoreLocations(Container.ResolveNamed<Request>("Request")));
Container.Register<ICocCoreLeagues>(new CocCoreLeagues(Container.ResolveNamed<Request>("Request")));
//Container.Register<ICocCoreLocations>(new CocCoreLocations(Container.ResolveNamed<Request>("Request")));
//Container.Register<ICocCoreLeagues>(new CocCoreLeagues(Container.ResolveNamed<Request>("Request")));
Container.Register<ICocCorePlayers>(new CocCorePlayers(Container.ResolveNamed<Request>("Request")));
}
}
Expand Down
7 changes: 6 additions & 1 deletion CocNET/CocNET/CocNET.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
<ItemGroup>
<Reference Include="Funq, Version=1.0.0.0, Culture=neutral, PublicKeyToken=95c13cd3fe8e976a, processorArchitecture=MSIL">
<HintPath>..\packages\Funq.1.0.0\lib\net40\Funq.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="MoreLinq, Version=1.4.18916.0, Culture=neutral, PublicKeyToken=384d532d7e88985d, processorArchitecture=MSIL">
<HintPath>..\packages\morelinq.1.4.0\lib\net35\MoreLinq.dll</HintPath>
Expand Down Expand Up @@ -69,6 +68,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="CocCore.cs" />
<Compile Include="Exception\TokenExpiredException.cs" />
<Compile Include="Includes\Locations.cs" />
<Compile Include="Interfaces\ICocCoreClans.cs" />
<Compile Include="Interfaces\ICocCoreLeagues.cs" />
Expand All @@ -85,6 +85,11 @@
<Compile Include="Types\Clans\CurrentWar\WarAttack.cs" />
<Compile Include="Types\Clans\CurrentWar\WarClan.cs" />
<Compile Include="Types\Clans\CurrentWar\WarMember.cs" />
<Compile Include="Types\Clans\LeagueWar\LeagueClan.cs" />
<Compile Include="Types\Clans\LeagueWar\LeagueMember.cs" />
<Compile Include="Types\Clans\LeagueWar\LeagueRounds.cs" />
<Compile Include="Types\Clans\LeagueWar\LeagueWar.cs" />
<Compile Include="Types\Clans\LeagueWar\LeagueWarRounds.cs" />
<Compile Include="Types\Clans\Opponent.cs" />
<Compile Include="Types\Clans\WarLog.cs" />
<Compile Include="Types\Clans\WarLogs.cs" />
Expand Down
20 changes: 20 additions & 0 deletions CocNET/CocNET/Exception/TokenExpiredException.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CocNET
{
public class TokenExpiredException:Exception
{
public TokenExpiredException() : base()
{

}
public TokenExpiredException(string message):base(message)
{

}
}
}
3 changes: 3 additions & 0 deletions CocNET/CocNET/Interfaces/ICocCoreClans.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using CocNET.Types.Clans;
using CocNET.Types.Clans.CurrentWar;
using CocNET.Types.Clans.LeagueWar;
using CocNET.Types.Other;
using System;
using System.Collections.Generic;
Expand All @@ -17,5 +18,7 @@ public interface ICocCoreClans
SearchClan GetClans(SearchFilter searchFilter, bool withMember);
List<Member> GetClansMembers(string clanTag);
War GetCurrentWar(string clanTag);
LeagueWar GetCurrentWarLeague(string clanTag);
LeagueWarRound GetCurrentWarLeagueRound(string warTag);
}
}
19 changes: 9 additions & 10 deletions CocNET/CocNET/Methods/Request.cs
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using Newtonsoft.Json;
using CocNET.Types;
using RestSharp;
using System.Collections.Specialized;

namespace CocNET.Methods
{
Expand Down Expand Up @@ -36,21 +28,28 @@ public RestRequest GetRequest(string resource)
RestRequest request = new RestRequest(resource, Method.GET);
request.AddHeader("authorization", string.Format("Bearer {0}", Token));
request.AddHeader("Accept", "application/json");

return request;
}

public T GetResponse<T>(string call, string query)
{
var request = GetRequest(call+query);
var response = Client.Execute(request);
if (response.StatusCode == HttpStatusCode.Forbidden)
{
throw new TokenExpiredException(response.Content);
}
return JsonConvert.DeserializeObject<T>(response.Content);
}

public T GetResponse<T>(string call)
{
var request = GetRequest(call);
var response = Client.Execute(request);
if (response.StatusCode == HttpStatusCode.Forbidden)
{
throw new TokenExpiredException(response.Content);
}
return JsonConvert.DeserializeObject<T>(response.Content);
}
public string GetCall(params object[] values)
Expand Down
28 changes: 24 additions & 4 deletions CocNET/CocNET/Services/CocCoreClans.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,12 @@
using CocNET.Types.Clans;
using CocNET.Types.Clans.CurrentWar;
using CocNET.Types.Other;
using CocNET.Types.Clans.LeagueWar;
using CocNET.Types.Other.Other;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Web;

namespace CocNET.Services
Expand Down Expand Up @@ -117,10 +115,32 @@ public List<WarLog> GetClanWarLogs(string clanTag)
public War GetCurrentWar(string clanTag)
{
var call = Request.GetCall(API_URL_CLANS, HttpUtility.UrlEncode(clanTag), "currentwar");

var currentWar = Request.GetResponse<War>(call);

return currentWar;
}

public LeagueWar GetCurrentWarLeague(string clanTag)
{
var call = Request.GetCall(API_URL_CLANS, HttpUtility.UrlEncode(clanTag), "currentwar", "leaguegroup");

var currentWar = Request.GetResponse<LeagueWar>(call);

return currentWar;
}
/// <summary>
/// Warning! This is war Tag not clan Tag!!
/// </summary>
/// <param name="warTag"></param>
/// <returns></returns>
public LeagueWarRound GetCurrentWarLeagueRound(string warTag)
{
var call = Request.GetCall("clanwarleagues", "wars", HttpUtility.UrlEncode(warTag));

var currentWar = Request.GetResponse<LeagueWarRound>(call);

return currentWar;
}
}
}
9 changes: 2 additions & 7 deletions CocNET/CocNET/Services/CocCorePlayers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,6 @@
using CocNET.Methods;
using CocNET.Types.Players;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Web;

namespace CocNET.Services
Expand All @@ -23,8 +18,8 @@ public CocCorePlayers(Request requestClient)
public Player GetPlayer(string playerTag)
{
var call = REQUEST.GetCall(API_URL_PLAYERS, HttpUtility.UrlEncode(playerTag));

return REQUEST.GetResponse<Player>(call); ;
var result = REQUEST.GetResponse<Player>(call);
return result;
}
}
}
3 changes: 3 additions & 0 deletions CocNET/CocNET/Types/Clans/CurrentWar/WarClan.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ public class WarClan : BadRequest
[JsonProperty("destructionPercentage")]
public decimal DestructionPercentage { get; set; }

[JsonProperty("expEarned")]
public decimal ExpEarned { get; set; }

[JsonProperty("members")]
public List<WarMember> Members { get; set; }
}
Expand Down
32 changes: 32 additions & 0 deletions CocNET/CocNET/Types/Clans/LeagueWar/LeagueClan.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CocNET.Types.Clans.LeagueWar
{
public class LeagueClan
{
[JsonProperty("tag")]
public string Tag { get; set; }

[JsonProperty("name")]
public string Name { get; set; }

[JsonProperty("clanLevel")]
public int ClanLevel { get; set; }

[JsonProperty("badgeUrls")]
public Dictionary<string, string> BadgeUrls { get; set; }

[JsonProperty("attacks")]
public int Attacks { get; set; }

[JsonProperty("stars")]
public int Stars { get; set; }

[JsonProperty("members")]
public LeagueMember[] Members { get; set; }
}
}
23 changes: 23 additions & 0 deletions CocNET/CocNET/Types/Clans/LeagueWar/LeagueMember.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using CocNET.Types.Clans.CurrentWar;
using Newtonsoft.Json;

namespace CocNET.Types.Clans.LeagueWar
{
public class LeagueMember
{
[JsonProperty("tag")]
public string Tag { get; set; }

[JsonProperty("name")]
public string Name { get; set; }

[JsonProperty("townhallLevel")]
public int TownhallLevel { get; set; }

[JsonProperty("mapPosition")]
public int MapPosition { get; set; }

[JsonProperty("attacks")]
public WarAttack[] Attacks { get; set; }
}
}
11 changes: 11 additions & 0 deletions CocNET/CocNET/Types/Clans/LeagueWar/LeagueRounds.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using CocNET.Types.Other;
using Newtonsoft.Json;

namespace CocNET.Types.Clans.LeagueWar
{
public class LeagueRounds : BadRequest
{
[JsonProperty("warTags")]
public string[] warTags { get; set; }
}
}
20 changes: 20 additions & 0 deletions CocNET/CocNET/Types/Clans/LeagueWar/LeagueWar.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using CocNET.Types.Other;
using Newtonsoft.Json;

namespace CocNET.Types.Clans.LeagueWar
{
public class LeagueWar : BadRequest
{
[JsonProperty("state")]
public string State { get; set; }

[JsonProperty("season")]
public string Season { get; set; }

[JsonProperty("clans")]
public LeagueClan[] Clans { get; set; }

[JsonProperty("rounds")]
public LeagueRounds[] Rounds { get; set; }
}
}
28 changes: 28 additions & 0 deletions CocNET/CocNET/Types/Clans/LeagueWar/LeagueWarRounds.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
using CocNET.Types.Other;
using Newtonsoft.Json;
using System;

namespace CocNET.Types.Clans.LeagueWar
{
public class LeagueWarRound:BadRequest
{
public string state { get; set; }

public int teamSize { get; set; }

[JsonProperty("preparationStartTime"), JsonConverter(typeof(CustomDateTimeConverter))]
public DateTime preparationStartTime { get; set; }

[JsonProperty("startTime"), JsonConverter(typeof(CustomDateTimeConverter))]
public DateTime StartTime { get; set; }

[JsonProperty("endTime"), JsonConverter(typeof(CustomDateTimeConverter))]
public DateTime EndTime { get; set; }

[JsonProperty("clan")]
public LeagueClan clan { get; set; }

[JsonProperty("opponent")]
public LeagueClan opponent { get; set; }
}
}
Loading