Beispiel #1
0
        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 <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 <OneDriveConsumerApi> GetApi()
        {
            if (_api == null)
            {
                _api = await OneDriveHelper.GetApi(_account.Secret);
            }

            return(_api);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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();
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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.");
            }
        }
Beispiel #11
0
        public async Task <AccountConfiguration> CreateAccount()
        {
            var flow = OneDriveHelper.CreateOidcFlow();

            return(await flow.AuthorizeAsync());
        }