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.Specialized;
using System.ComponentModel;
using System.Windows.Forms;
namespace ShareX.UploadersLib
{
public class CustomUploaderItem
{
[DefaultValue("")]
public string Version { get; set; }
[DefaultValue("")]
public string Name { get; set; }
@ -48,20 +52,8 @@ public class CustomUploaderItem
[DefaultValue("")]
public string RequestURL { get; set; }
private CustomUploaderRequestFormat requestFormat;
[DefaultValue(CustomUploaderRequestFormat.None)]
public CustomUploaderRequestFormat RequestFormat
{
get
{
return CheckRequestFormat(requestFormat);
}
set
{
requestFormat = value;
}
}
public CustomUploaderRequestFormat RequestFormat { get; set; }
[DefaultValue("")]
public string FileFormName { get; set; }
@ -141,24 +133,6 @@ public string GetRequestURL(CustomUploaderInput input)
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)
{
CustomUploaderParser parser = new CustomUploaderParser(input);
@ -248,5 +222,22 @@ public void ParseResponse(UploadResult result, CustomUploaderInput input, bool i
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)
{
CustomUploaderAdd(obj as CustomUploaderItem);
CustomUploaderItem uploader = obj as CustomUploaderItem;
uploader.CheckBackwardCompatibility();
CustomUploaderAdd(uploader);
CustomUploaderUpdateStates();
}

View file

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

View file

@ -110,15 +110,11 @@ public static void LoadInitialSettings()
{
LoadApplicationConfig();
ApplicationConfigBackwardCompatibilityTasks();
Task.Run(() =>
{
LoadUploadersConfig();
uploadersConfigResetEvent.Set();
UploadersConfigBackwardCompatibilityTasks();
LoadHotkeysConfig();
hotkeysConfigResetEvent.Set();
});
@ -143,12 +139,14 @@ public static void WaitHotkeysConfig()
public static void LoadApplicationConfig()
{
Settings = ApplicationConfig.Load(ApplicationConfigFilePath, BackupFolder, true, true);
ApplicationConfigBackwardCompatibilityTasks();
DefaultTaskSettings = Settings.DefaultTaskSettings;
}
public static void LoadUploadersConfig()
{
UploadersConfig = UploadersConfig.Load(UploadersConfigFilePath, BackupFolder, true, true);
UploadersConfigBackwardCompatibilityTasks();
}
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()

View file

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