summaryrefslogtreecommitdiff
path: root/src/SMAPI.Web/Framework/Clients/Pastebin
diff options
context:
space:
mode:
Diffstat (limited to 'src/SMAPI.Web/Framework/Clients/Pastebin')
-rw-r--r--src/SMAPI.Web/Framework/Clients/Pastebin/IPastebinClient.cs3
-rw-r--r--src/SMAPI.Web/Framework/Clients/Pastebin/PastebinClient.cs35
2 files changed, 12 insertions, 26 deletions
diff --git a/src/SMAPI.Web/Framework/Clients/Pastebin/IPastebinClient.cs b/src/SMAPI.Web/Framework/Clients/Pastebin/IPastebinClient.cs
index 630dfb76..a635abe3 100644
--- a/src/SMAPI.Web/Framework/Clients/Pastebin/IPastebinClient.cs
+++ b/src/SMAPI.Web/Framework/Clients/Pastebin/IPastebinClient.cs
@@ -11,7 +11,8 @@ namespace StardewModdingAPI.Web.Framework.Clients.Pastebin
Task<PasteInfo> GetAsync(string id);
/// <summary>Save a paste to Pastebin.</summary>
+ /// <param name="name">The paste name.</param>
/// <param name="content">The paste content.</param>
- Task<SavePasteResult> PostAsync(string content);
+ Task<SavePasteResult> PostAsync(string name, string content);
}
}
diff --git a/src/SMAPI.Web/Framework/Clients/Pastebin/PastebinClient.cs b/src/SMAPI.Web/Framework/Clients/Pastebin/PastebinClient.cs
index 12c3e83f..2e8a8c68 100644
--- a/src/SMAPI.Web/Framework/Clients/Pastebin/PastebinClient.cs
+++ b/src/SMAPI.Web/Framework/Clients/Pastebin/PastebinClient.cs
@@ -1,11 +1,8 @@
using System;
-using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
-using System.Text;
using System.Threading.Tasks;
-using System.Web;
using Pathoschild.Http.Client;
namespace StardewModdingAPI.Web.Framework.Clients.Pastebin
@@ -70,8 +67,9 @@ namespace StardewModdingAPI.Web.Framework.Clients.Pastebin
}
/// <summary>Save a paste to Pastebin.</summary>
+ /// <param name="name">The paste name.</param>
/// <param name="content">The paste content.</param>
- public async Task<SavePasteResult> PostAsync(string content)
+ public async Task<SavePasteResult> PostAsync(string name, string content)
{
try
{
@@ -82,15 +80,15 @@ namespace StardewModdingAPI.Web.Framework.Clients.Pastebin
// post to API
string response = await this.Client
.PostAsync("api/api_post.php")
- .WithBodyContent(this.GetFormUrlEncodedContent(new Dictionary<string, string>
+ .WithBody(p => p.FormUrlEncoded(new
{
- ["api_option"] = "paste",
- ["api_user_key"] = this.UserKey,
- ["api_dev_key"] = this.DevKey,
- ["api_paste_private"] = "1", // unlisted
- ["api_paste_name"] = $"SMAPI log {DateTime.UtcNow:s}",
- ["api_paste_expire_date"] = "N", // never expire
- ["api_paste_code"] = content
+ api_option = "paste",
+ api_user_key = this.UserKey,
+ api_dev_key = this.DevKey,
+ api_paste_private = 1, // unlisted
+ api_paste_name = name,
+ api_paste_expire_date = "N", // never expire
+ api_paste_code = content
}))
.AsString();
@@ -117,18 +115,5 @@ namespace StardewModdingAPI.Web.Framework.Clients.Pastebin
{
this.Client.Dispose();
}
-
-
- /*********
- ** Private methods
- *********/
- /// <summary>Build an HTTP content body with form-url-encoded content.</summary>
- /// <param name="data">The content to encode.</param>
- /// <remarks>This bypasses an issue where <see cref="FormUrlEncodedContent"/> restricts the body length to the maximum size of a URL, which isn't applicable here.</remarks>
- private HttpContent GetFormUrlEncodedContent(IDictionary<string, string> data)
- {
- string body = string.Join("&", from arg in data select $"{HttpUtility.UrlEncode(arg.Key)}={HttpUtility.UrlEncode(arg.Value)}");
- return new StringContent(body, Encoding.UTF8, "application/x-www-form-urlencoded");
- }
}
}