Skip to content

Commit 1a6724a

Browse files
committed
use https ribbit by default
1 parent f6ce74d commit 1a6724a

File tree

6 files changed

+57
-14
lines changed

6 files changed

+57
-14
lines changed

TACTLib/Client/ClientCreateArgs.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ public enum InstallMode {
1919
public const string KR_NGDP = "http://kr.patch.battle.net:1119";
2020
public const string TW_NGDP = "http://tw.patch.battle.net:1119";
2121

22-
public const string US_RIBBIT = "ribbit://us.version.battle.net:1119";
23-
public const string EU_RIBBIT = "ribbit://eu.version.battle.net:1119";
24-
public const string CN_RIBBIT = "ribbit://cn.version.battle.net:1119";
25-
public const string KR_RIBBIT = "ribbit://kr.version.battle.net:1119";
26-
public const string TW_RIBBIT = "ribbit://tw.version.battle.net:1119";
22+
public const string US_RIBBIT = "https://us.version.battle.net";
23+
public const string EU_RIBBIT = "https://eu.version.battle.net";
24+
public const string CN_RIBBIT = "https://cn.version.battle.net";
25+
public const string KR_RIBBIT = "https://kr.version.battle.net";
26+
public const string TW_RIBBIT = "https://tw.version.battle.net";
2727

2828
/// <summary>
2929
/// Root host for online download
@@ -35,6 +35,7 @@ public enum InstallMode {
3535
/// </summary>
3636
/// <seealso cref="TACTLib.Client.HandlerArgs.ClientCreateArgs_Tank"/>
3737
/// <seealso cref="TACTLib.Client.HandlerArgs.ClientCreateArgs_WorldOfWarcraftV6"/>
38+
/// <seealso cref="TACTLib.Client.HandlerArgs.ClientCreateArgs_Fenris"/>
3839
public IHandlerArgs? HandlerArgs { get; set; } = null;
3940

4041
public InstallMode VersionSource { get; set; } = InstallMode.Local;

TACTLib/Client/ClientHandler.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,10 @@ public ClientHandler(string? basePath, ClientCreateArgs createArgs) {
143143
NGDPClientBase ngdpClient;
144144
if (createArgs.CustomNGDPClient != null) {
145145
ngdpClient = createArgs.CustomNGDPClient;
146+
} else if (CreateArgs.OnlineRootHost.StartsWith("https:")) {
147+
ngdpClient = new RibbitHttpClient(CreateArgs.OnlineRootHost);
146148
} else if (CreateArgs.OnlineRootHost.StartsWith("ribbit:")) {
147-
ngdpClient = new RibbitClient(CreateArgs.OnlineRootHost);
149+
ngdpClient = new RibbitTcpClient(CreateArgs.OnlineRootHost);
148150
} else {
149151
ngdpClient = new NGDPClient(CreateArgs.OnlineRootHost);
150152
}

TACTLib/Protocol/NGDP/NGDPClient.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Net.Http;
23
using System.Threading;
34
using System.Threading.Tasks;
@@ -28,6 +29,7 @@ public override async Task<string> GetAsync(string query, CancellationToken canc
2829
return await response.Content.ReadAsStringAsync(cancellationToken);
2930
}
3031

32+
public override string GetSummaryQuery() => throw new NotSupportedException("Legacy patch endpoint does have a summary");
3133
public override string GetVersionsQuery(string product) => $"{product}/versions";
3234
public override string GetCDNsQuery(string product) => $"{product}/cdns";
3335
public override string GetBGDLsQuery(string product) => $"{product}/bgdl";

TACTLib/Protocol/NGDP/NGDPClientBase.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@ public async Task<List<Dictionary<string, string>>> GetKVAsync(string query, Can
2626
return InstallationInfo.ParseToDict(streamReader);
2727
}
2828

29+
public abstract string GetSummaryQuery();
2930
public abstract string GetVersionsQuery(string product);
3031
public abstract string GetCDNsQuery(string product);
3132
public abstract string GetBGDLsQuery(string product);
3233

34+
public List<Dictionary<string, string>> GetSummary() => GetKV(GetSummaryQuery());
3335
public List<Dictionary<string, string>> GetVersions(string product) => GetKV(GetVersionsQuery(product));
3436
public List<Dictionary<string, string>> GetCDNs(string product) => GetKV(GetCDNsQuery(product));
3537
public List<Dictionary<string, string>> GetBGDLs(string product) => GetKV(GetBGDLsQuery(product));
@@ -38,6 +40,7 @@ public async Task<List<Dictionary<string, string>>> GetKVAsync(string query, Can
3840
public Dictionary<string, string>? GetCDN(string product, string region) => GetCDNs(product).FirstOrDefault(x => x["Name"] == region);
3941
public Dictionary<string, string>? GetBGDL(string product, string region) => GetBGDLs(product).FirstOrDefault(x => x["Region"] == region);
4042

43+
public Task<List<Dictionary<string, string>>> GetSummaryAsync(CancellationToken cancellationToken=default) => GetKVAsync(GetSummaryQuery(), cancellationToken);
4144
public Task<List<Dictionary<string, string>>> GetVersionsAsync(string product, CancellationToken cancellationToken=default) => GetKVAsync(GetVersionsQuery(product), cancellationToken);
4245
public Task<List<Dictionary<string, string>>> GetCDNsAsync(string product, CancellationToken cancellationToken=default) => GetKVAsync(GetCDNsQuery(product), cancellationToken);
4346
public Task<List<Dictionary<string, string>>> GetBGDLsAsync(string product, CancellationToken cancellationToken=default) => GetKVAsync(GetBGDLsQuery(product), cancellationToken);
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using System.Net.Http;
2+
using System.Threading;
3+
using System.Threading.Tasks;
4+
5+
namespace TACTLib.Protocol.NGDP
6+
{
7+
public class RibbitHttpClient : NGDPClientBase
8+
{
9+
private readonly HttpClient m_httpClient;
10+
private readonly string m_host;
11+
12+
public RibbitHttpClient(string host, HttpClient? httpClient=null)
13+
{
14+
m_httpClient = httpClient ?? new HttpClient();
15+
m_host = host;
16+
}
17+
18+
public override string Get(string query)
19+
{
20+
Logger.Info(nameof(RibbitHttpClient), $"Fetching Ribbit {query}");
21+
using var response = m_httpClient.Send(new HttpRequestMessage(HttpMethod.Get, $"{m_host}/{query}"));
22+
return response.Content.ReadAsStringAsync().Result; // todo: async over sync
23+
}
24+
25+
public override async Task<string> GetAsync(string query, CancellationToken cancellationToken = default)
26+
{
27+
Logger.Info(nameof(RibbitHttpClient), $"Fetching Ribbit {query}");
28+
using var response = await m_httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Get, $"{m_host}/{query}"), cancellationToken);
29+
return await response.Content.ReadAsStringAsync(cancellationToken);
30+
}
31+
32+
public override string GetSummaryQuery() => "v2/summary";
33+
public override string GetVersionsQuery(string product) => $"v2/products/{product}/versions";
34+
public override string GetCDNsQuery(string product) => $"v2/products/{product}/cdns";
35+
public override string GetBGDLsQuery(string product) => $"v2/products/{product}/bgdl";
36+
}
37+
}
Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using System.Collections.Generic;
32
using System.IO;
43
using System.Net.Sockets;
54
using System.Text;
@@ -10,11 +9,12 @@
109

1110
namespace TACTLib.Protocol.NGDP
1211
{
13-
public class RibbitClient : NGDPClientBase
12+
[Obsolete("Blizzard's Ribbit TCP server is no longer online")]
13+
public class RibbitTcpClient : NGDPClientBase
1414
{
1515
public readonly Uri m_uri;
1616

17-
public RibbitClient(string host)
17+
public RibbitTcpClient(string host)
1818
{
1919
if (!Uri.TryCreate(host, UriKind.RelativeOrAbsolute, out var uri)) {
2020
throw new Exception($"unable to create uri from ribbit host: \"{host}\"");
@@ -24,7 +24,7 @@ public RibbitClient(string host)
2424

2525
public override string Get(string query)
2626
{
27-
Logger.Info(nameof(RibbitClient), $"Fetching Ribbit {query}");
27+
Logger.Info(nameof(RibbitTcpClient), $"Fetching Ribbit {query}");
2828

2929
using var client = new TcpClient();
3030
client.Connect(m_uri.Host, m_uri.Port);
@@ -42,7 +42,7 @@ public override string Get(string query)
4242

4343
public override async Task<string> GetAsync(string query, CancellationToken cancellationToken=default)
4444
{
45-
Logger.Info(nameof(RibbitClient), $"Fetching Ribbit {query}");
45+
Logger.Info(nameof(RibbitTcpClient), $"Fetching Ribbit {query}");
4646

4747
using var client = new TcpClient();
4848
await client.ConnectAsync(m_uri.Host, m_uri.Port, cancellationToken);
@@ -72,11 +72,9 @@ private static string GetTextBody(MimeMessage message)
7272
return textPart.GetText(Encoding.UTF8);
7373
}
7474

75+
public override string GetSummaryQuery() => "v1/summary";
7576
public override string GetVersionsQuery(string product) => $"v1/products/{product}/versions";
7677
public override string GetCDNsQuery(string product) => $"v1/products/{product}/cdns";
7778
public override string GetBGDLsQuery(string product) => $"v1/products/{product}/bgdl";
78-
79-
public List<Dictionary<string, string>> GetSummary() => GetKV("v1/summary");
80-
public Task<List<Dictionary<string, string>>> GetSummaryAsync(CancellationToken cancellationToken=default) => GetKVAsync("v1/summary", cancellationToken);
8179
}
8280
}

0 commit comments

Comments
 (0)