mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Merge pull request #335 from wabbajack-tools/improved-metrics
Improved metrics
This commit is contained in:
commit
2aa18b16ce
@ -12,5 +12,6 @@ namespace Wabbajack.CacheServer.DTOs
|
||||
public DateTime Timestamp;
|
||||
public string Action;
|
||||
public string Subject;
|
||||
public string MetricsKey;
|
||||
}
|
||||
}
|
||||
|
@ -19,12 +19,12 @@ namespace Wabbajack.CacheServer
|
||||
{
|
||||
private static SemaphoreSlim _lockObject = new SemaphoreSlim(1);
|
||||
|
||||
public static async Task Log(DateTime timestamp, string action, string subject)
|
||||
public static async Task Log(DateTime timestamp, string action, string subject, string metricsKey = null)
|
||||
{
|
||||
var msg = new[] {string.Join("\t", new[]{timestamp.ToString(), action, subject})};
|
||||
var msg = new[] {string.Join("\t", new[]{timestamp.ToString(), metricsKey, action, subject})};
|
||||
Utils.Log(msg.First());
|
||||
var db = Server.Config.Metrics.Connect();
|
||||
await db.InsertOneAsync(new Metric {Timestamp = timestamp, Action = action, Subject = subject});
|
||||
await db.InsertOneAsync(new Metric {Timestamp = timestamp, Action = action, Subject = subject, MetricsKey = metricsKey});
|
||||
}
|
||||
|
||||
public static Task Log(string action, string subject)
|
||||
@ -63,7 +63,7 @@ namespace Wabbajack.CacheServer
|
||||
private async Task<string> HandleMetrics(dynamic arg)
|
||||
{
|
||||
var date = DateTime.UtcNow;
|
||||
await Log(date, arg.Action, arg.Value);
|
||||
await Log(date, arg.Action, arg.Value, Request.Headers[Consts.MetricsKeyHeader].FirstOrDefault());
|
||||
return date.ToString();
|
||||
}
|
||||
|
||||
|
@ -90,6 +90,7 @@ namespace Wabbajack.Common
|
||||
|
||||
public static string HashFileExtension => ".xxHash";
|
||||
public static string LocalAppDataPath => Path.Combine(KnownFolders.LocalAppData.Path, "Wabbajack");
|
||||
public static string MetricsKeyHeader => "x-metrics-key";
|
||||
|
||||
public static string WabbajackCacheLocation = "http://build.wabbajack.org/nexus_api_cache/";
|
||||
|
||||
|
@ -9,6 +9,13 @@ namespace Wabbajack.Common
|
||||
{
|
||||
public class Metrics
|
||||
{
|
||||
static Metrics()
|
||||
{
|
||||
if (!Utils.HaveEncryptedJson(Consts.MetricsKeyHeader))
|
||||
{
|
||||
Utils.ToEcryptedJson(Consts.MetricsKeyHeader, Utils.MakeRandomKey());
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// This is all we track for metrics, action, and value. The action will be like
|
||||
/// "downloaded", the value "Joe's list".
|
||||
@ -20,6 +27,7 @@ namespace Wabbajack.Common
|
||||
var client = new HttpClient();
|
||||
try
|
||||
{
|
||||
client.DefaultRequestHeaders.Add(Consts.MetricsKeyHeader, Utils.FromEncryptedJson<string>(Consts.MetricsKeyHeader));
|
||||
await client.GetAsync($"http://build.wabbajack.org/metrics/{action}/{value}");
|
||||
}
|
||||
catch (Exception) { }
|
||||
|
@ -1123,5 +1123,13 @@ namespace Wabbajack.Common
|
||||
GlobalMemoryStatusEx(mstat);
|
||||
return mstat;
|
||||
}
|
||||
|
||||
public static string MakeRandomKey()
|
||||
{
|
||||
var random = new Random();
|
||||
byte[] bytes = new byte[32];
|
||||
random.NextBytes(bytes);
|
||||
return bytes.ToHex();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
using System.Net.Http;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using Wabbajack.Common;
|
||||
using Wabbajack.Lib.Validation;
|
||||
|
||||
@ -53,9 +54,11 @@ namespace Wabbajack.Lib.Downloaders
|
||||
{
|
||||
var initialURL = $"https://drive.google.com/uc?id={Id}&export=download";
|
||||
var client = new HttpClient();
|
||||
var result = await client.GetStringAsync(initialURL);
|
||||
var response = await client.GetAsync(initialURL);
|
||||
if (!response.IsSuccessStatusCode)
|
||||
throw new HttpException((int)response.StatusCode, response.ReasonPhrase);
|
||||
var regex = new Regex("(?<=/uc\\?export=download&confirm=).*(?=;id=)");
|
||||
var confirm = regex.Match(result);
|
||||
var confirm = regex.Match(await response.Content.ReadAsStringAsync());
|
||||
var url = $"https://drive.google.com/uc?export=download&confirm={confirm}&id={Id}";
|
||||
var httpState = new HTTPDownloader.State {Url = url, Client = client};
|
||||
return httpState;
|
||||
|
@ -289,11 +289,19 @@ namespace Wabbajack.Lib
|
||||
foreach (var file in Directory.EnumerateFiles(Path.Combine(OutputFolder, "profiles"), "*refs.ini",
|
||||
DirectoryEnumerationOptions.Recursive))
|
||||
{
|
||||
IniData data;
|
||||
var parser = new FileIniDataParser(new IniDataParser(config));
|
||||
try
|
||||
{
|
||||
IniData data;
|
||||
var parser = new FileIniDataParser(new IniDataParser(config));
|
||||
data = parser.ReadFile(file);
|
||||
|
||||
if (data.Sections["Display"]["iSize W"] != null && data.Sections["Display"]["iSize H"] != null)
|
||||
{
|
||||
data.Sections["Display"]["iSize W"] = SystemParameters.PrimaryScreenWidth.ToString();
|
||||
data.Sections["Display"]["iSize H"] = SystemParameters.PrimaryScreenHeight.ToString();
|
||||
}
|
||||
|
||||
parser.WriteFile(file, data);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -301,13 +309,6 @@ namespace Wabbajack.Lib
|
||||
continue;
|
||||
}
|
||||
|
||||
if (data.Sections["Display"]["iSize W"] != null && data.Sections["Display"]["iSize H"] != null)
|
||||
{
|
||||
data.Sections["Display"]["iSize W"] = SystemParameters.PrimaryScreenWidth.ToString();
|
||||
data.Sections["Display"]["iSize H"] = SystemParameters.PrimaryScreenHeight.ToString();
|
||||
}
|
||||
|
||||
parser.WriteFile(file, data);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user