fixed #91: Added OneDrive support

This commit is contained in:
Jaex 2014-12-25 22:01:22 +02:00
parent 470818f753
commit 43c59a8236
4 changed files with 47 additions and 20 deletions

View file

@ -82,12 +82,12 @@ public enum FileDestination
Dropbox, Dropbox,
[Description("FTP")] [Description("FTP")]
FTP, FTP,
//[Description("OneDrive")] [Description("OneDrive")]
//OneDrive, OneDrive,
[Description("Copy")]
Copy,
[Description("Google Drive")] [Description("Google Drive")]
GoogleDrive, GoogleDrive,
[Description("Copy")]
Copy,
[Description("Box")] [Description("Box")]
Box, Box,
[Description("MEGA")] [Description("MEGA")]

View file

@ -26,11 +26,9 @@ You should have received a copy of the GNU General Public License
using Newtonsoft.Json; using Newtonsoft.Json;
using ShareX.HelpersLib; using ShareX.HelpersLib;
using ShareX.UploadersLib.HelperClasses; using ShareX.UploadersLib.HelperClasses;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO; using System.IO;
using System.Linq;
using System.Text;
namespace ShareX.UploadersLib.FileUploaders namespace ShareX.UploadersLib.FileUploaders
{ {
@ -48,7 +46,7 @@ public string GetAuthorizationURL()
{ {
Dictionary<string, string> args = new Dictionary<string, string>(); Dictionary<string, string> args = new Dictionary<string, string>();
args.Add("client_id", AuthInfo.Client_ID); args.Add("client_id", AuthInfo.Client_ID);
args.Add("scope", "wl.offline_access wl.basic wl.skydrive_update"); args.Add("scope", "wl.offline_access wl.basic wl.skydrive");
args.Add("response_type", "code"); args.Add("response_type", "code");
args.Add("redirect_uri", Links.URL_CALLBACK); args.Add("redirect_uri", Links.URL_CALLBACK);
@ -131,9 +129,40 @@ public bool CheckAuthorization()
return true; return true;
} }
private NameValueCollection GetAuthHeaders()
{
NameValueCollection headers = new NameValueCollection();
headers.Add("Authorization", "Bearer " + AuthInfo.Token.access_token);
return headers;
}
public override UploadResult Upload(Stream stream, string fileName) public override UploadResult Upload(Stream stream, string fileName)
{ {
throw new NotImplementedException(); if (!CheckAuthorization()) return null;
Dictionary<string, string> args = new Dictionary<string, string>();
args.Add("access_token", AuthInfo.Token.access_token);
args.Add("overwrite", "true");
args.Add("downsize_photo_uploads", "false");
string url = CreateQuery("https://apis.live.net/v5.0/me/skydrive/files", args);
UploadResult result = UploadData(stream, url, fileName);
if (result.IsSuccess)
{
OneDriveUploadInfo uploadInfo = JsonConvert.DeserializeObject<OneDriveUploadInfo>(result.Response);
result.URL = uploadInfo.source;
}
return result;
}
private class OneDriveUploadInfo
{
public string id { get; set; }
public string name { get; set; }
public string source { get; set; }
} }
} }
} }

View file

@ -49,13 +49,11 @@ public UploadersConfigForm(UploadersConfig uploadersConfig)
Config = uploadersConfig; Config = uploadersConfig;
InitializeComponent(); InitializeComponent();
// TODO: Add OneDrive support
//tcFileUploaders.TabPages.Remove(tpOneDrive);
if (!string.IsNullOrEmpty(Config.FilePath)) if (!string.IsNullOrEmpty(Config.FilePath))
{ {
Text += " - " + Config.FilePath; Text += " - " + Config.FilePath;
} }
Icon = ShareXResources.Icon; Icon = ShareXResources.Icon;
} }

View file

@ -829,15 +829,8 @@ public UploadResult UploadFile(Stream stream, string fileName)
ShareURLType = Program.UploadersConfig.DropboxURLType ShareURLType = Program.UploadersConfig.DropboxURLType
}; };
break; break;
/*case FileDestination.OneDrive: case FileDestination.OneDrive:
fileUploader = new OneDrive(Program.UploadersConfig.OneDriveOAuth2Info); fileUploader = new OneDrive(Program.UploadersConfig.OneDriveOAuth2Info);
break;*/
case FileDestination.Copy:
fileUploader = new Copy(Program.UploadersConfig.CopyOAuthInfo, Program.UploadersConfig.CopyAccountInfo)
{
UploadPath = NameParser.Parse(NameParserType.URL, Copy.TidyUploadPath(Program.UploadersConfig.CopyUploadPath)),
URLType = Program.UploadersConfig.CopyURLType
};
break; break;
case FileDestination.GoogleDrive: case FileDestination.GoogleDrive:
fileUploader = new GoogleDrive(Program.UploadersConfig.GoogleDriveOAuth2Info) fileUploader = new GoogleDrive(Program.UploadersConfig.GoogleDriveOAuth2Info)
@ -846,6 +839,13 @@ public UploadResult UploadFile(Stream stream, string fileName)
FolderID = Program.UploadersConfig.GoogleDriveUseFolder ? Program.UploadersConfig.GoogleDriveFolderID : null FolderID = Program.UploadersConfig.GoogleDriveUseFolder ? Program.UploadersConfig.GoogleDriveFolderID : null
}; };
break; break;
case FileDestination.Copy:
fileUploader = new Copy(Program.UploadersConfig.CopyOAuthInfo, Program.UploadersConfig.CopyAccountInfo)
{
UploadPath = NameParser.Parse(NameParserType.URL, Copy.TidyUploadPath(Program.UploadersConfig.CopyUploadPath)),
URLType = Program.UploadersConfig.CopyURLType
};
break;
case FileDestination.RapidShare: case FileDestination.RapidShare:
fileUploader = new RapidShare(Program.UploadersConfig.RapidShareUsername, Program.UploadersConfig.RapidSharePassword, Program.UploadersConfig.RapidShareFolderID); fileUploader = new RapidShare(Program.UploadersConfig.RapidShareUsername, Program.UploadersConfig.RapidSharePassword, Program.UploadersConfig.RapidShareFolderID);
break; break;