I feel a little scammed

This commit is contained in:
4sval 2022-07-26 18:47:12 +02:00
parent 3bc1d10988
commit ffedb2be90
7 changed files with 55 additions and 15 deletions

16
.github/workflows/autoclose.yml vendored Normal file
View File

@ -0,0 +1,16 @@
name: Issue Auto Closing
on:
issues:
types:
- opened
jobs:
autoclose:
runs-on: ubuntu-latest
steps:
- name: Close Condition
if: contains(toJson(github.event.issue.body), '### Game\r\n\r\nFortnite')
uses: peter-evans/close-issue@v2
with:
comment: Fortnite related issues are not allowed here. Join the [discord server](https://fmodel.app/discord) and read the common errors channel instead.

View File

@ -0,0 +1,19 @@
using System;
using RestSharp;
namespace FModel.Framework;
public class FRestRequest : RestRequest
{
private const int _timeout = 3 * 1000;
public FRestRequest(string url, Method method = Method.Get) : base(url, method)
{
Timeout = _timeout;
}
public FRestRequest(Uri uri, Method method = Method.Get) : base(uri, method)
{
Timeout = _timeout;
}
}

View File

@ -2,6 +2,7 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using FModel.Framework;
using FModel.ViewModels.ApiEndpoints.Models; using FModel.ViewModels.ApiEndpoints.Models;
using RestSharp; using RestSharp;
using Serilog; using Serilog;
@ -16,7 +17,7 @@ public class BenbotApiEndpoint : AbstractApiProvider
public async Task<AesResponse> GetAesKeysAsync(CancellationToken token) public async Task<AesResponse> GetAesKeysAsync(CancellationToken token)
{ {
var request = new RestRequest("https://benbot.app/api/v2/aes") var request = new FRestRequest("https://benbot.app/api/v2/aes")
{ {
OnBeforeDeserialization = resp => { resp.ContentType = "application/json; charset=utf-8"; } OnBeforeDeserialization = resp => { resp.ContentType = "application/json; charset=utf-8"; }
}; };
@ -32,7 +33,7 @@ public class BenbotApiEndpoint : AbstractApiProvider
public async Task<MappingsResponse[]> GetMappingsAsync(CancellationToken token) public async Task<MappingsResponse[]> GetMappingsAsync(CancellationToken token)
{ {
var request = new RestRequest("https://benbot.app/api/v1/mappings") var request = new FRestRequest("https://benbot.app/api/v1/mappings")
{ {
OnBeforeDeserialization = resp => { resp.ContentType = "application/json; charset=utf-8"; } OnBeforeDeserialization = resp => { resp.ContentType = "application/json; charset=utf-8"; }
}; };
@ -48,7 +49,7 @@ public class BenbotApiEndpoint : AbstractApiProvider
public async Task<Dictionary<string, Dictionary<string, string>>> GetHotfixesAsync(CancellationToken token, string language = "en-US") public async Task<Dictionary<string, Dictionary<string, string>>> GetHotfixesAsync(CancellationToken token, string language = "en-US")
{ {
var request = new RestRequest("https://benbot.app/api/v1/hotfixes") var request = new FRestRequest("https://benbot.app/api/v1/hotfixes")
{ {
OnBeforeDeserialization = resp => { resp.ContentType = "application/json; charset=utf-8"; } OnBeforeDeserialization = resp => { resp.ContentType = "application/json; charset=utf-8"; }
}; };
@ -65,7 +66,7 @@ public class BenbotApiEndpoint : AbstractApiProvider
public async Task DownloadFileAsync(string fileLink, string installationPath) public async Task DownloadFileAsync(string fileLink, string installationPath)
{ {
var request = new RestRequest(fileLink); var request = new FRestRequest(fileLink);
var data = _client.DownloadData(request); var data = _client.DownloadData(request);
await File.WriteAllBytesAsync(installationPath, data); await File.WriteAllBytesAsync(installationPath, data);
} }

View File

@ -2,6 +2,7 @@
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using EpicManifestParser.Objects; using EpicManifestParser.Objects;
using FModel.Framework;
using FModel.Settings; using FModel.Settings;
using FModel.ViewModels.ApiEndpoints.Models; using FModel.ViewModels.ApiEndpoints.Models;
using RestSharp; using RestSharp;
@ -30,7 +31,7 @@ public class EpicApiEndpoint : AbstractApiProvider
} }
} }
var request = new RestRequest(_LAUNCHER_ASSETS); var request = new FRestRequest(_LAUNCHER_ASSETS);
request.AddHeader("Authorization", $"bearer {UserSettings.Default.LastAuthResponse.AccessToken}"); request.AddHeader("Authorization", $"bearer {UserSettings.Default.LastAuthResponse.AccessToken}");
var response = await _client.ExecuteAsync(request, token).ConfigureAwait(false); var response = await _client.ExecuteAsync(request, token).ConfigureAwait(false);
Log.Information("[{Method}] [{Status}({StatusCode})] '{Resource}'", request.Method, response.StatusDescription, (int) response.StatusCode, response.ResponseUri?.OriginalString); Log.Information("[{Method}] [{Status}({StatusCode})] '{Resource}'", request.Method, response.StatusDescription, (int) response.StatusCode, response.ResponseUri?.OriginalString);
@ -44,7 +45,7 @@ public class EpicApiEndpoint : AbstractApiProvider
private async Task<AuthResponse> GetAuthAsync(CancellationToken token) private async Task<AuthResponse> GetAuthAsync(CancellationToken token)
{ {
var request = new RestRequest(_OAUTH_URL, Method.Post); var request = new FRestRequest(_OAUTH_URL, Method.Post);
request.AddHeader("Authorization", _BASIC_TOKEN); request.AddHeader("Authorization", _BASIC_TOKEN);
request.AddParameter("grant_type", "client_credentials"); request.AddParameter("grant_type", "client_credentials");
var response = await _client.ExecuteAsync<AuthResponse>(request, token).ConfigureAwait(false); var response = await _client.ExecuteAsync<AuthResponse>(request, token).ConfigureAwait(false);

View File

@ -6,6 +6,7 @@ using System.Threading.Tasks;
using System.Windows; using System.Windows;
using AutoUpdaterDotNET; using AutoUpdaterDotNET;
using FModel.Extensions; using FModel.Extensions;
using FModel.Framework;
using FModel.Services; using FModel.Services;
using FModel.Settings; using FModel.Settings;
using FModel.ViewModels.ApiEndpoints.Models; using FModel.ViewModels.ApiEndpoints.Models;
@ -34,7 +35,7 @@ public class FModelApi : AbstractApiProvider
public async Task<News> GetNewsAsync(CancellationToken token, string game) public async Task<News> GetNewsAsync(CancellationToken token, string game)
{ {
var request = new RestRequest($"https://api.fmodel.app/v1/news/{Constants.APP_VERSION}"); var request = new FRestRequest($"https://api.fmodel.app/v1/news/{Constants.APP_VERSION}");
request.AddParameter("game", game); request.AddParameter("game", game);
var response = await _client.ExecuteAsync<News>(request, token).ConfigureAwait(false); var response = await _client.ExecuteAsync<News>(request, token).ConfigureAwait(false);
Log.Information("[{Method}] [{Status}({StatusCode})] '{Resource}'", request.Method, response.StatusDescription, (int) response.StatusCode, response.ResponseUri?.OriginalString); Log.Information("[{Method}] [{Status}({StatusCode})] '{Resource}'", request.Method, response.StatusDescription, (int) response.StatusCode, response.ResponseUri?.OriginalString);
@ -48,7 +49,7 @@ public class FModelApi : AbstractApiProvider
public async Task<Info> GetInfosAsync(CancellationToken token, EUpdateMode updateMode) public async Task<Info> GetInfosAsync(CancellationToken token, EUpdateMode updateMode)
{ {
var request = new RestRequest($"https://api.fmodel.app/v1/infos/{updateMode}"); var request = new FRestRequest($"https://api.fmodel.app/v1/infos/{updateMode}");
var response = await _client.ExecuteAsync<Info>(request, token).ConfigureAwait(false); var response = await _client.ExecuteAsync<Info>(request, token).ConfigureAwait(false);
Log.Information("[{Method}] [{Status}({StatusCode})] '{Resource}'", request.Method, response.StatusDescription, (int) response.StatusCode, response.ResponseUri?.OriginalString); Log.Information("[{Method}] [{Status}({StatusCode})] '{Resource}'", request.Method, response.StatusDescription, (int) response.StatusCode, response.ResponseUri?.OriginalString);
return response.Data; return response.Data;
@ -61,7 +62,7 @@ public class FModelApi : AbstractApiProvider
public async Task<Backup[]> GetBackupsAsync(CancellationToken token, string gameName) public async Task<Backup[]> GetBackupsAsync(CancellationToken token, string gameName)
{ {
var request = new RestRequest($"https://api.fmodel.app/v1/backups/{gameName}"); var request = new FRestRequest($"https://api.fmodel.app/v1/backups/{gameName}");
var response = await _client.ExecuteAsync<Backup[]>(request, token).ConfigureAwait(false); var response = await _client.ExecuteAsync<Backup[]>(request, token).ConfigureAwait(false);
Log.Information("[{Method}] [{Status}({StatusCode})] '{Resource}'", request.Method, response.StatusDescription, (int) response.StatusCode, response.ResponseUri?.OriginalString); Log.Information("[{Method}] [{Status}({StatusCode})] '{Resource}'", request.Method, response.StatusDescription, (int) response.StatusCode, response.ResponseUri?.OriginalString);
return response.Data; return response.Data;
@ -74,7 +75,7 @@ public class FModelApi : AbstractApiProvider
public async Task<Game> GetGamesAsync(CancellationToken token, string gameName) public async Task<Game> GetGamesAsync(CancellationToken token, string gameName)
{ {
var request = new RestRequest($"https://api.fmodel.app/v1/games/{gameName}"); var request = new FRestRequest($"https://api.fmodel.app/v1/games/{gameName}");
var response = await _client.ExecuteAsync<Game>(request, token).ConfigureAwait(false); var response = await _client.ExecuteAsync<Game>(request, token).ConfigureAwait(false);
Log.Information("[{Method}] [{Status}({StatusCode})] '{Resource}'", request.Method, response.StatusDescription, (int) response.StatusCode, response.ResponseUri?.OriginalString); Log.Information("[{Method}] [{Status}({StatusCode})] '{Resource}'", request.Method, response.StatusDescription, (int) response.StatusCode, response.ResponseUri?.OriginalString);
return response.Data; return response.Data;
@ -87,7 +88,7 @@ public class FModelApi : AbstractApiProvider
public async Task<CommunityDesign> GetDesignAsync(string designName) public async Task<CommunityDesign> GetDesignAsync(string designName)
{ {
var request = new RestRequest($"https://api.fmodel.app/v1/designs/{designName}"); var request = new FRestRequest($"https://api.fmodel.app/v1/designs/{designName}");
var response = await _client.ExecuteAsync<Community>(request).ConfigureAwait(false); var response = await _client.ExecuteAsync<Community>(request).ConfigureAwait(false);
Log.Information("[{Method}] [{Status}({StatusCode})] '{Resource}'", request.Method, response.StatusDescription, (int) response.StatusCode, response.ResponseUri?.OriginalString); Log.Information("[{Method}] [{Status}({StatusCode})] '{Resource}'", request.Method, response.StatusDescription, (int) response.StatusCode, response.ResponseUri?.OriginalString);
return response.Data != null ? new CommunityDesign(response.Data) : null; return response.Data != null ? new CommunityDesign(response.Data) : null;
@ -173,7 +174,7 @@ public class FModelApi : AbstractApiProvider
private void ShowChangelog(UpdateInfoEventArgs args) private void ShowChangelog(UpdateInfoEventArgs args)
{ {
var request = new RestRequest(args.ChangelogURL); var request = new FRestRequest(args.ChangelogURL);
var response = _client.Execute(request); var response = _client.Execute(request);
if (string.IsNullOrEmpty(response.Content)) return; if (string.IsNullOrEmpty(response.Content)) return;

View File

@ -2,6 +2,7 @@
using FModel.ViewModels.ApiEndpoints.Models; using FModel.ViewModels.ApiEndpoints.Models;
using RestSharp; using RestSharp;
using System.Threading.Tasks; using System.Threading.Tasks;
using FModel.Framework;
namespace FModel.ViewModels.ApiEndpoints; namespace FModel.ViewModels.ApiEndpoints;
@ -13,7 +14,7 @@ public class FortniteApiEndpoint : AbstractApiProvider
public async Task<PlaylistResponse> GetPlaylistAsync(string playlistId) public async Task<PlaylistResponse> GetPlaylistAsync(string playlistId)
{ {
var request = new RestRequest($"https://fortnite-api.com/v1/playlists/{playlistId}"); var request = new FRestRequest($"https://fortnite-api.com/v1/playlists/{playlistId}");
var response = await _client.ExecuteAsync<PlaylistResponse>(request).ConfigureAwait(false); var response = await _client.ExecuteAsync<PlaylistResponse>(request).ConfigureAwait(false);
return response.Data; return response.Data;
} }
@ -25,7 +26,7 @@ public class FortniteApiEndpoint : AbstractApiProvider
public bool TryGetBytes(Uri link, out byte[] data) public bool TryGetBytes(Uri link, out byte[] data)
{ {
var request = new RestRequest(link); var request = new FRestRequest(link);
data = _client.DownloadData(request); data = _client.DownloadData(request);
return data != null; return data != null;
} }

View File

@ -13,6 +13,7 @@ using System.Runtime.InteropServices;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using FModel.Framework;
namespace FModel.ViewModels.ApiEndpoints; namespace FModel.ViewModels.ApiEndpoints;
@ -26,7 +27,7 @@ public class ValorantApiEndpoint : AbstractApiProvider
public async Task<VManifest> GetManifestAsync(CancellationToken token) public async Task<VManifest> GetManifestAsync(CancellationToken token)
{ {
var request = new RestRequest(_URL); var request = new FRestRequest(_URL);
var response = await _client.ExecuteAsync(request, token).ConfigureAwait(false); var response = await _client.ExecuteAsync(request, token).ConfigureAwait(false);
return new VManifest(response.RawBytes); return new VManifest(response.RawBytes);
} }