mirror of
https://github.com/BeyondDimension/SteamTools.git
synced 2026-10-19 07:01:35 +08:00
157 lines
5.0 KiB
C#
157 lines
5.0 KiB
C#
using Newtonsoft.Json;
|
|
using Ninject.Modules;
|
|
using SteamTool.Core.Common;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Dynamic;
|
|
using System.IO;
|
|
using System.Net.Http;
|
|
using System.Net.Http.Headers;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace SteamTool.Core
|
|
{
|
|
public class HttpServices
|
|
{
|
|
private readonly HttpClient _client = new HttpClient();
|
|
|
|
public string UserAgent { get; set; } = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko";
|
|
|
|
public string Accept { get; set; } = "application/json";
|
|
|
|
private async Task<string> SendAsync(HttpRequestMessage request)
|
|
{
|
|
try
|
|
{
|
|
var response = await _client.SendAsync(request).ConfigureAwait(false);
|
|
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
return await response.Content.ReadAsStringAsync().ConfigureAwait(false);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Logger.Error(ex);
|
|
}
|
|
return string.Empty;
|
|
}
|
|
private async Task<Stream> SendAsyncAsStream(HttpRequestMessage request)
|
|
{
|
|
try
|
|
{
|
|
var response = await _client.SendAsync(request).ConfigureAwait(false);
|
|
|
|
if (response.IsSuccessStatusCode)
|
|
{
|
|
return await response.Content.ReadAsStreamAsync().ConfigureAwait(false);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Logger.Error(ex);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public async Task<string> Get(string url)
|
|
{
|
|
var request = new HttpRequestMessage(HttpMethod.Get, url);
|
|
request.Headers.Add("User-Agent", UserAgent);
|
|
request.Headers.Add("Accept", Accept);
|
|
return await SendAsync(request);
|
|
}
|
|
public async Task<string> Get(string url, Dictionary<string, string> keyValuePairs)
|
|
{
|
|
var request = new HttpRequestMessage(HttpMethod.Get, url);
|
|
|
|
foreach (var item in keyValuePairs)
|
|
{
|
|
request.Headers.Add(item.Key, item.Value);
|
|
}
|
|
if (!keyValuePairs.ContainsKey("User-Agent"))
|
|
{
|
|
request.Headers.Add("User-Agent", UserAgent);
|
|
}
|
|
if (!keyValuePairs.ContainsKey("Accept"))
|
|
{
|
|
request.Headers.Add("Accept", Accept);
|
|
}
|
|
return await SendAsync(request);
|
|
}
|
|
public async Task<Stream> GetStream(string url, Dictionary<string, string> keyValuePairs)
|
|
{
|
|
var request = new HttpRequestMessage(HttpMethod.Get, url);
|
|
|
|
foreach (var item in keyValuePairs)
|
|
{
|
|
request.Headers.Add(item.Key, item.Value);
|
|
}
|
|
if (!keyValuePairs.ContainsKey("User-Agent"))
|
|
{
|
|
request.Headers.Add("User-Agent", UserAgent);
|
|
}
|
|
if (!keyValuePairs.ContainsKey("Accept"))
|
|
{
|
|
request.Headers.Add("Accept", Accept);
|
|
}
|
|
|
|
return await SendAsyncAsStream(request);
|
|
}
|
|
|
|
public async Task<string> Post(string url, string content)
|
|
{
|
|
var request = new HttpRequestMessage(HttpMethod.Post, url)
|
|
{
|
|
Content = new StringContent(content)
|
|
};
|
|
request.Headers.Add("User-Agent", UserAgent);
|
|
request.Headers.Add("Accept", Accept);
|
|
return await SendAsync(request);
|
|
}
|
|
public async Task<string> Post(string url, Dictionary<string, string> keyValuePairs, string content)
|
|
{
|
|
var request = new HttpRequestMessage(HttpMethod.Post, url)
|
|
{
|
|
Content = new StringContent(content)
|
|
};
|
|
foreach (var item in keyValuePairs)
|
|
{
|
|
request.Headers.Add(item.Key, item.Value);
|
|
}
|
|
if (!keyValuePairs.ContainsKey("User-Agent"))
|
|
{
|
|
request.Headers.Add("User-Agent", UserAgent);
|
|
}
|
|
if (!keyValuePairs.ContainsKey("Accept"))
|
|
{
|
|
request.Headers.Add("Accept", Accept);
|
|
}
|
|
|
|
return await SendAsync(request);
|
|
}
|
|
public async Task<Stream> PostStream(string url, Dictionary<string, string> keyValuePairs, Stream content)
|
|
{
|
|
var request = new HttpRequestMessage(HttpMethod.Post, url)
|
|
{
|
|
Content = new StreamContent(content)
|
|
};
|
|
foreach (var item in keyValuePairs)
|
|
{
|
|
request.Headers.Add(item.Key, item.Value);
|
|
}
|
|
if (!keyValuePairs.ContainsKey("User-Agent"))
|
|
{
|
|
request.Headers.Add("User-Agent", UserAgent);
|
|
}
|
|
if (!keyValuePairs.ContainsKey("Accept"))
|
|
{
|
|
request.Headers.Add("Accept", Accept);
|
|
}
|
|
|
|
return await SendAsyncAsStream(request);
|
|
}
|
|
}
|
|
}
|