Storing application version in custom uploader JSON to be able to better support backward compatibility

This commit is contained in:
Jaex 2019-01-04 14:37:24 +03:00
parent b24fbf69b5
commit f4d8ed3b1e
5 changed files with 42 additions and 37 deletions

View file

@ -29,11 +29,15 @@ You should have received a copy of the GNU General Public License
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized; using System.Collections.Specialized;
using System.ComponentModel; using System.ComponentModel;
using System.Windows.Forms;
namespace ShareX.UploadersLib namespace ShareX.UploadersLib
{ {
public class CustomUploaderItem public class CustomUploaderItem
{ {
[DefaultValue("")]
public string Version { get; set; }
[DefaultValue("")] [DefaultValue("")]
public string Name { get; set; } public string Name { get; set; }
@ -48,20 +52,8 @@ public class CustomUploaderItem
[DefaultValue("")] [DefaultValue("")]
public string RequestURL { get; set; } public string RequestURL { get; set; }
private CustomUploaderRequestFormat requestFormat;
[DefaultValue(CustomUploaderRequestFormat.None)] [DefaultValue(CustomUploaderRequestFormat.None)]
public CustomUploaderRequestFormat RequestFormat public CustomUploaderRequestFormat RequestFormat { get; set; }
{
get
{
return CheckRequestFormat(requestFormat);
}
set
{
requestFormat = value;
}
}
[DefaultValue("")] [DefaultValue("")]
public string FileFormName { get; set; } public string FileFormName { get; set; }
@ -141,24 +133,6 @@ public string GetRequestURL(CustomUploaderInput input)
return URLHelpers.FixPrefix(url); return URLHelpers.FixPrefix(url);
} }
private CustomUploaderRequestFormat CheckRequestFormat(CustomUploaderRequestFormat format)
{
// For backward compatibility
if (format == CustomUploaderRequestFormat.None)
{
if (RequestType == HttpMethod.POST)
{
return CustomUploaderRequestFormat.MultipartFormData;
}
else
{
return CustomUploaderRequestFormat.URLQueryString;
}
}
return format;
}
public string GetData(CustomUploaderInput input) public string GetData(CustomUploaderInput input)
{ {
CustomUploaderParser parser = new CustomUploaderParser(input); CustomUploaderParser parser = new CustomUploaderParser(input);
@ -248,5 +222,22 @@ public void ParseResponse(UploadResult result, CustomUploaderInput input, bool i
result.DeletionURL = parser.Parse(DeletionURL); result.DeletionURL = parser.Parse(DeletionURL);
} }
} }
public void CheckBackwardCompatibility()
{
if (string.IsNullOrEmpty(Version) || Helpers.CompareVersion(Version, "12.3.1") <= 0)
{
if (RequestType == HttpMethod.POST)
{
RequestFormat = CustomUploaderRequestFormat.MultipartFormData;
}
else
{
RequestFormat = CustomUploaderRequestFormat.URLQueryString;
}
}
Version = Application.ProductVersion;
}
} }
} }

View file

@ -3481,7 +3481,9 @@ private object eiCustomUploaders_ExportRequested()
private void eiCustomUploaders_ImportRequested(object obj) private void eiCustomUploaders_ImportRequested(object obj)
{ {
CustomUploaderAdd(obj as CustomUploaderItem); CustomUploaderItem uploader = obj as CustomUploaderItem;
uploader.CheckBackwardCompatibility();
CustomUploaderAdd(uploader);
CustomUploaderUpdateStates(); CustomUploaderUpdateStates();
} }

View file

@ -931,7 +931,12 @@ private CustomUploaderItem CustomUploaderGetSelected()
private void CustomUploaderAdd() private void CustomUploaderAdd()
{ {
CustomUploaderAdd(new CustomUploaderItem()); CustomUploaderItem uploader = new CustomUploaderItem()
{
Version = Application.ProductVersion
};
CustomUploaderAdd(uploader);
} }
private void CustomUploaderAdd(CustomUploaderItem uploader) private void CustomUploaderAdd(CustomUploaderItem uploader)

View file

@ -110,15 +110,11 @@ public static void LoadInitialSettings()
{ {
LoadApplicationConfig(); LoadApplicationConfig();
ApplicationConfigBackwardCompatibilityTasks();
Task.Run(() => Task.Run(() =>
{ {
LoadUploadersConfig(); LoadUploadersConfig();
uploadersConfigResetEvent.Set(); uploadersConfigResetEvent.Set();
UploadersConfigBackwardCompatibilityTasks();
LoadHotkeysConfig(); LoadHotkeysConfig();
hotkeysConfigResetEvent.Set(); hotkeysConfigResetEvent.Set();
}); });
@ -143,12 +139,14 @@ public static void WaitHotkeysConfig()
public static void LoadApplicationConfig() public static void LoadApplicationConfig()
{ {
Settings = ApplicationConfig.Load(ApplicationConfigFilePath, BackupFolder, true, true); Settings = ApplicationConfig.Load(ApplicationConfigFilePath, BackupFolder, true, true);
ApplicationConfigBackwardCompatibilityTasks();
DefaultTaskSettings = Settings.DefaultTaskSettings; DefaultTaskSettings = Settings.DefaultTaskSettings;
} }
public static void LoadUploadersConfig() public static void LoadUploadersConfig()
{ {
UploadersConfig = UploadersConfig.Load(UploadersConfigFilePath, BackupFolder, true, true); UploadersConfig = UploadersConfig.Load(UploadersConfigFilePath, BackupFolder, true, true);
UploadersConfigBackwardCompatibilityTasks();
} }
public static void LoadHotkeysConfig() public static void LoadHotkeysConfig()
@ -212,6 +210,14 @@ private static void UploadersConfigBackwardCompatibilityTasks()
} }
} }
} }
if (UploadersConfig.CustomUploadersList != null)
{
foreach (CustomUploaderItem cui in UploadersConfig.CustomUploadersList)
{
cui.CheckBackwardCompatibility();
}
}
} }
public static void SaveAllSettings() public static void SaveAllSettings()

View file

@ -1619,6 +1619,7 @@ public static void AddCustomUploader(string filePath)
} }
} }
cui.CheckBackwardCompatibility();
Program.UploadersConfig.CustomUploadersList.Add(cui); Program.UploadersConfig.CustomUploadersList.Add(cui);
if (activate) if (activate)