diff --git a/GreenshotImgurPlugin/Forms/SettingsForm.Designer.cs b/GreenshotImgurPlugin/Forms/SettingsForm.Designer.cs
index 4e6335483..a1851fdc2 100644
--- a/GreenshotImgurPlugin/Forms/SettingsForm.Designer.cs
+++ b/GreenshotImgurPlugin/Forms/SettingsForm.Designer.cs
@@ -48,8 +48,6 @@ namespace GreenshotImgurPlugin {
{
this.buttonOK = new GreenshotPlugin.Controls.GreenshotButton();
this.buttonCancel = new GreenshotPlugin.Controls.GreenshotButton();
- this.label_url = new GreenshotPlugin.Controls.GreenshotLabel();
- this.textBoxUrl = new GreenshotPlugin.Controls.GreenshotTextBox();
this.combobox_uploadimageformat = new GreenshotPlugin.Controls.GreenshotComboBox();
this.label_upload_format = new GreenshotPlugin.Controls.GreenshotLabel();
this.historyButton = new GreenshotPlugin.Controls.GreenshotButton();
@@ -61,7 +59,7 @@ namespace GreenshotImgurPlugin {
//
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonOK.LanguageKey = "imgur.OK";
- this.buttonOK.Location = new System.Drawing.Point(222, 129);
+ this.buttonOK.Location = new System.Drawing.Point(222, 88);
this.buttonOK.Name = "buttonOK";
this.buttonOK.Size = new System.Drawing.Size(75, 23);
this.buttonOK.TabIndex = 2;
@@ -72,36 +70,18 @@ namespace GreenshotImgurPlugin {
//
this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.buttonCancel.LanguageKey = "imgur.CANCEL";
- this.buttonCancel.Location = new System.Drawing.Point(303, 129);
+ this.buttonCancel.Location = new System.Drawing.Point(303, 88);
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.Size = new System.Drawing.Size(75, 23);
this.buttonCancel.TabIndex = 3;
this.buttonCancel.UseVisualStyleBackColor = true;
this.buttonCancel.Click += new System.EventHandler(this.ButtonCancelClick);
//
- // label_url
- //
- this.label_url.LanguageKey = "imgur.label_url";
- this.label_url.Location = new System.Drawing.Point(12, 21);
- this.label_url.Name = "label_url";
- this.label_url.Size = new System.Drawing.Size(84, 20);
- this.label_url.TabIndex = 7;
- //
- // textBoxUrl
- //
- this.textBoxUrl.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.textBoxUrl.Location = new System.Drawing.Point(102, 21);
- this.textBoxUrl.Name = "textBoxUrl";
- this.textBoxUrl.PropertyName = "ImgurApiUrl";
- this.textBoxUrl.SectionName = "Imgur";
- this.textBoxUrl.Size = new System.Drawing.Size(276, 20);
- this.textBoxUrl.TabIndex = 6;
- //
// combobox_uploadimageformat
//
this.combobox_uploadimageformat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.combobox_uploadimageformat.FormattingEnabled = true;
- this.combobox_uploadimageformat.Location = new System.Drawing.Point(102, 47);
+ this.combobox_uploadimageformat.Location = new System.Drawing.Point(102, 7);
this.combobox_uploadimageformat.Name = "combobox_uploadimageformat";
this.combobox_uploadimageformat.PropertyName = "UploadFormat";
this.combobox_uploadimageformat.SectionName = "Imgur";
@@ -111,7 +91,7 @@ namespace GreenshotImgurPlugin {
// label_upload_format
//
this.label_upload_format.LanguageKey = "imgur.label_upload_format";
- this.label_upload_format.Location = new System.Drawing.Point(12, 50);
+ this.label_upload_format.Location = new System.Drawing.Point(12, 10);
this.label_upload_format.Name = "label_upload_format";
this.label_upload_format.Size = new System.Drawing.Size(84, 20);
this.label_upload_format.TabIndex = 9;
@@ -120,7 +100,7 @@ namespace GreenshotImgurPlugin {
//
this.historyButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.historyButton.LanguageKey = "imgur.history";
- this.historyButton.Location = new System.Drawing.Point(13, 129);
+ this.historyButton.Location = new System.Drawing.Point(13, 88);
this.historyButton.Name = "historyButton";
this.historyButton.Size = new System.Drawing.Size(75, 23);
this.historyButton.TabIndex = 11;
@@ -131,11 +111,11 @@ namespace GreenshotImgurPlugin {
//
this.checkbox_anonymous_access.AutoSize = true;
this.checkbox_anonymous_access.LanguageKey = "imgur.anonymous_access";
- this.checkbox_anonymous_access.Location = new System.Drawing.Point(15, 80);
+ this.checkbox_anonymous_access.Location = new System.Drawing.Point(15, 38);
this.checkbox_anonymous_access.Name = "checkbox_anonymous_access";
this.checkbox_anonymous_access.PropertyName = "AnonymousAccess";
this.checkbox_anonymous_access.SectionName = "Imgur";
- this.checkbox_anonymous_access.Size = new System.Drawing.Size(297, 17);
+ this.checkbox_anonymous_access.Size = new System.Drawing.Size(139, 17);
this.checkbox_anonymous_access.TabIndex = 13;
this.checkbox_anonymous_access.UseVisualStyleBackColor = true;
//
@@ -143,11 +123,11 @@ namespace GreenshotImgurPlugin {
//
this.checkbox_usepagelink.AutoSize = true;
this.checkbox_usepagelink.LanguageKey = "imgur.use_page_link";
- this.checkbox_usepagelink.Location = new System.Drawing.Point(15, 97);
+ this.checkbox_usepagelink.Location = new System.Drawing.Point(15, 57);
this.checkbox_usepagelink.Name = "checkbox_usepagelink";
this.checkbox_usepagelink.PropertyName = "UsePageLink";
this.checkbox_usepagelink.SectionName = "Imgur";
- this.checkbox_usepagelink.Size = new System.Drawing.Size(297, 17);
+ this.checkbox_usepagelink.Size = new System.Drawing.Size(251, 17);
this.checkbox_usepagelink.TabIndex = 13;
this.checkbox_usepagelink.UseVisualStyleBackColor = true;
//
@@ -155,14 +135,12 @@ namespace GreenshotImgurPlugin {
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
- this.ClientSize = new System.Drawing.Size(387, 168);
+ this.ClientSize = new System.Drawing.Size(387, 123);
this.Controls.Add(this.checkbox_anonymous_access);
this.Controls.Add(this.checkbox_usepagelink);
this.Controls.Add(this.historyButton);
this.Controls.Add(this.label_upload_format);
this.Controls.Add(this.combobox_uploadimageformat);
- this.Controls.Add(this.label_url);
- this.Controls.Add(this.textBoxUrl);
this.Controls.Add(this.buttonCancel);
this.Controls.Add(this.buttonOK);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
@@ -177,8 +155,6 @@ namespace GreenshotImgurPlugin {
private GreenshotPlugin.Controls.GreenshotButton historyButton;
private GreenshotPlugin.Controls.GreenshotComboBox combobox_uploadimageformat;
private GreenshotPlugin.Controls.GreenshotLabel label_upload_format;
- private GreenshotPlugin.Controls.GreenshotTextBox textBoxUrl;
- private GreenshotPlugin.Controls.GreenshotLabel label_url;
private GreenshotPlugin.Controls.GreenshotButton buttonCancel;
private GreenshotPlugin.Controls.GreenshotButton buttonOK;
private GreenshotPlugin.Controls.GreenshotCheckBox checkbox_anonymous_access;
diff --git a/GreenshotImgurPlugin/ImgurUtils.cs b/GreenshotImgurPlugin/ImgurUtils.cs
index 7a0740720..a30224b36 100644
--- a/GreenshotImgurPlugin/ImgurUtils.cs
+++ b/GreenshotImgurPlugin/ImgurUtils.cs
@@ -58,7 +58,7 @@ namespace GreenshotImgurPlugin {
if (config.runtimeImgurHistory.ContainsKey(hash)) {
// Already loaded
continue;
- }
+ }
try {
ImgurInfo imgurInfo = ImgurUtils.RetrieveImgurInfo(hash, config.ImgurUploadHistory[hash]);
if (imgurInfo != null) {
@@ -92,35 +92,7 @@ namespace GreenshotImgurPlugin {
IniConfig.Save();
}
}
-
- ///
- /// A wrapper around the EscapeDataString, as the limit is 32766 characters
- /// See: http://msdn.microsoft.com/en-us/library/system.uri.escapedatastring%28v=vs.110%29.aspx
- ///
- ///
- /// escaped data string
- private static StringBuilder EscapeDataStringToStringBuilder(string dataString) {
- StringBuilder result = new StringBuilder();
- int currentLocation = 0;
- while (currentLocation < dataString.Length) {
- string process = dataString.Substring(currentLocation,Math.Min(16384, dataString.Length-currentLocation));
- result.Append(Uri.EscapeDataString(process));
- currentLocation = currentLocation + 16384;
- }
- return result;
- }
-
- private static string EscapeText(string text) {
- string[] UriRfc3986CharsToEscape = new[] { "!", "*", "'", "(", ")" };
- LOG.DebugFormat("Text size {0}", text.Length);
- StringBuilder escaped = EscapeDataStringToStringBuilder(text);
-
- for (int i = 0; i < UriRfc3986CharsToEscape.Length; i++) {
- escaped.Replace(UriRfc3986CharsToEscape[i], Uri.HexEscape(UriRfc3986CharsToEscape[i][0]));
- }
- return escaped.ToString();
- }
-
+
///
/// Do the actual upload to Imgur
/// For more details on the available parameters, see: http://api.imgur.com/resources_anon
@@ -131,19 +103,19 @@ namespace GreenshotImgurPlugin {
StringBuilder uploadRequest = new StringBuilder();
// Add image
uploadRequest.Append("image=");
- uploadRequest.Append(EscapeText(System.Convert.ToBase64String(imageData, 0, dataLength)));
+ uploadRequest.Append(OAuthHelper.UrlEncode3986(System.Convert.ToBase64String(imageData, 0, dataLength)));
// add type
uploadRequest.Append("&type=base64");
// add title
if (title != null) {
uploadRequest.Append("&title=");
- uploadRequest.Append(EscapeText(title));
+ uploadRequest.Append(OAuthHelper.UrlEncode3986(title));
}
// add filename
if (filename != null) {
uploadRequest.Append("&name=");
- uploadRequest.Append(EscapeText(filename));
+ uploadRequest.Append(OAuthHelper.UrlEncode3986(filename));
}
string url;
string responseString;
@@ -178,8 +150,8 @@ namespace GreenshotImgurPlugin {
oAuth.AccessTokenUrl = "http://api.imgur.com/oauth/access_token";
oAuth.AuthorizeUrl = "http://api.imgur.com/oauth/authorize";
oAuth.RequestTokenUrl = "http://api.imgur.com/oauth/request_token";
- oAuth.ConsumerKey = "fill-in";
- oAuth.ConsumerSecret = "fill-in";
+ oAuth.ConsumerKey = fill in;
+ oAuth.ConsumerSecret = fill in;
oAuth.UserAgent = "Greenshot";
if (string.IsNullOrEmpty(config.ImgurToken)) {
LOG.Debug("Creating Imgur Token");
diff --git a/GreenshotPlugin/Core/OAuthHelper.cs b/GreenshotPlugin/Core/OAuthHelper.cs
index 49c896a5d..f89fd10da 100644
--- a/GreenshotPlugin/Core/OAuthHelper.cs
+++ b/GreenshotPlugin/Core/OAuthHelper.cs
@@ -209,26 +209,39 @@ namespace GreenshotPlugin.Core {
return result;
}
+ ///
+ /// A wrapper around the EscapeDataString, as the limit is 32766 characters
+ /// See: http://msdn.microsoft.com/en-us/library/system.uri.escapedatastring%28v=vs.110%29.aspx
+ ///
+ ///
+ /// escaped data string
+ private static StringBuilder EscapeDataStringToStringBuilder(string dataString) {
+ StringBuilder result = new StringBuilder();
+ int currentLocation = 0;
+ while (currentLocation < dataString.Length) {
+ string process = dataString.Substring(currentLocation, Math.Min(16384, dataString.Length - currentLocation));
+ result.Append(Uri.EscapeDataString(process));
+ currentLocation = currentLocation + 16384;
+ }
+ return result;
+ }
+
///
/// This is a different Url Encode implementation since the default .NET one outputs the percent encoding in lower case.
/// While this is not a problem with the percent encoding spec, it is used in upper case throughout OAuth
///
/// The value to Url encode
/// Returns a Url encoded string
- public static string UrlEncode3986(string value) {
- StringBuilder result = new StringBuilder();
+ public static string UrlEncode3986(string text) {
+ string[] UriRfc3986CharsToEscape = new[] { "!", "*", "'", "(", ")" };
+ LOG.DebugFormat("Text size {0}", text.Length);
+ StringBuilder escaped = EscapeDataStringToStringBuilder(text);
- foreach (char symbol in value) {
- if (unreservedChars.IndexOf(symbol) != -1) {
- result.Append(symbol);
- } else {
- result.Append('%' + String.Format("{0:X2}", (int)symbol));
- }
+ for (int i = 0; i < UriRfc3986CharsToEscape.Length; i++) {
+ escaped.Replace(UriRfc3986CharsToEscape[i], Uri.HexEscape(UriRfc3986CharsToEscape[i][0]));
}
-
- return result.ToString();
+ return escaped.ToString();
}
-
///
/// Normalizes the request parameters according to the spec
///