public async Task <AccountConfiguration> CreateAccount() { _oAuthHelper = new OAuthHelper(); var isOk = OAuth2Flow.TryAuthenticate(this); if (!isOk) { return(null); } var api = await OneDriveHelper.GetApi(_accountSession); var drive = await api.Drive.Request().GetAsync().ConfigureAwait(false); var account = new AccountConfiguration { Type = StorageType.OneDrive, Name = drive.Owner.User.DisplayName, Id = drive.Owner.User.Id, Secret = _accountSession.RefreshToken }; return(account); }
public async Task Copy(string sourcePath, string destPath) { var api = await OneDriveHelper.GetApi(_account); var escapedpath = Uri.EscapeDataString(sourcePath); var destFolder = Uri.EscapeDataString(CloudPath.GetDirectoryName(destPath)); var destFilename = CloudPath.GetFileName(destPath); var destItem = await api.Drive.Root.ItemWithPath(destFolder).Request().GetAsync(); if (destItem == null) { throw new FileNotFoundException("OneDrive: Folder not found.", destFolder); } await api .Drive .Root .ItemWithPath(escapedpath) .Copy(destFilename, new ItemReference { Id = destItem.Id }) .Request(/*new[] {new HeaderOption("Prefer", "respond-async"), }*/) .PostAsync(); }
public async Task <OneDriveConsumerApi> GetApi() { if (_api == null) { _api = await OneDriveHelper.GetApi(_account.Secret); } return(_api); }
public async Task <IEnumerable <StorageProviderItem> > GetChildrenByParentPath(string path) { var api = await OneDriveHelper.GetApi(_account); var odChildren = await api.Drive.Root.ItemWithPath(path).Children.Request().GetAsync(); var children = odChildren.Select(odItem => CreateStorageProviderItemFromOneDriveItem(odItem)).ToArray(); return(children); }
public async Task Delete(string path) { var api = await OneDriveHelper.GetApi(_account); var escapedpath = Uri.EscapeDataString(path); await api .Drive .Root .ItemWithPath(escapedpath) .Request() .DeleteAsync(); }
public async Task <Stream> Load(string path) { var api = await OneDriveHelper.GetApi(_account); var escapedpath = Uri.EscapeDataString(path); var stream = await api.Drive .Root .ItemWithPath(escapedpath) .Content .Request() .GetAsync(); return(stream); }
public async Task <StorageProviderItem> GetRootItem() { var api = await OneDriveHelper.GetApi(_account); var odItem = await api.Drive.Root.Request().GetAsync(); if (odItem == null) { return(null); } var item = CreateStorageProviderItemFromOneDriveItem(odItem); return(item); }
public async Task <bool> Save(Stream stream, string path) { var api = await OneDriveHelper.GetApi(_account); var escapedpath = Uri.EscapeDataString(path); var uploadedItem = await api.Drive .Root .ItemWithPath(escapedpath) .Content .Request() .PutAsync <Item>(stream); return(uploadedItem != null); }
public async Task <IEnumerable <StorageProviderItem> > GetChildrenByParentItem(StorageProviderItem parent) { if (parent == null) { throw new ArgumentNullException("parent"); } var api = await OneDriveHelper.GetApi(_account); var odChildren = await api.Drive.Items[parent.Id].Children.Request().GetAsync(); var children = odChildren.Select(odItem => CreateStorageProviderItemFromOneDriveItem(odItem)).ToArray(); return(children); }
public async Task Save(Stream stream, string path) { var api = await OneDriveHelper.GetApi(_account); var escapedpath = Uri.EscapeDataString(path); var uploadedItem = await api.Drive .Root .ItemWithPath(escapedpath) .Content .Request() .PutAsync <DriveItem>(stream); if (uploadedItem == null) { throw new InvalidOperationException("Save to OneDrive failed."); } }