public StatsViewModel()
        {
            _dialogService  = new DialogService();
            oneDriveService = new OneDriveService();

            Setup();
        }
예제 #2
0
        public AuthenticationPage()
        {
            InitializeComponent();

            _service = ((App)Application.Current).ServiceInstance;

            Loaded += (s, e) =>
            {
                var uri = _service.GetStartUri();
                Web.Navigate(uri);
            };

            Web.NavigationCompleted += (s, e) =>
            {
                if (_service.CheckRedirectUrl(e.Uri.AbsoluteUri))
                {
                    _service.ContinueGetTokens(e.Uri);
                }
            };

            Web.NavigationFailed += (s, e) =>
            {
                _service.ContinueGetTokens(null);
            };
        }
예제 #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="OneDriveStorageFilePlatform"/> class.
 /// </summary>
 /// <param name="service">Instance of OneDriveService</param>
 /// <param name="oneDriveStorageFile">Instance of OneDriveStorageFile</param>
 public OneDriveStorageFilePlatform(
     OneDriveService service,
     OneDriveStorageFile oneDriveStorageFile)
 {
     _service             = service;
     _oneDriveStorageFile = oneDriveStorageFile;
 }
예제 #4
0
        internal async void GetSharedDrives_WithValidShares_MustResultAsSpected()
        {
            var drive = new DTOs.SharedDrive
            {
                remoteItem = new DTOs.SharedDriveDetails
                {
                    id     = "driveID",
                    name   = "driveName",
                    folder = new DTOs.DirectoryDetails {
                    },
                    shared = new DTOs.SharedDriveDetailsShared {
                        owner = new DTOs.SharedDriveDetailsSharedOwner {
                            user = new DTOs.Profile {
                                id = "userID"
                            }
                        }
                    }
                }
            };
            var param = new DTOs.SharedDriveSearch {
                value = new DTOs.SharedDrive[] { drive }
            };
            var client  = ClientBuilder.Create().With("me/drive/sharedWithMe", param).Build();
            var service = new OneDriveService(client);

            var value = await service.GetSharedDrives();

            Assert.NotNull(value);
            Assert.NotEmpty(value);
            Assert.Equal("driveID", value[0].ID);
            Assert.Equal("driveName", value[0].Name);
            Assert.Equal("/", value[0].Path);
        }
예제 #5
0
        internal async void SearchFiles_WithSingleFileAndNoChildFolder_MustSingleArray()
        {
            var fileData = new DTOs.FileSearch
            {
                value = new DTOs.File[] {
                    new DTOs.File {
                        file            = new DTOs.FileDetails {
                        },
                        id              = "fileID", name = "fileName.txt",
                        parentReference = new DTOs.DirectoryParent {
                            id = "parentID", path = "/parent/folderName"
                        }
                    }
                }
            };
            var directoryData = new DTOs.DirectorySearch
            {
                value = new DTOs.Directory[] { }
            };
            var client = ClientBuilder.Create()
                         .With("$select=id,name,createdDateTime,size,@microsoft.graph.downloadUrl,file,parentReference&$top=1000", fileData)
                         .With("$select=id,name,folder,parentReference&$top=1000", directoryData)
                         .Build();
            var service   = new OneDriveService(client);
            var directory = new DirectoryVM {
                ID = "driveID!folderID"
            };

            var value = await service.SearchFiles(directory, "*.txt");

            Assert.NotNull(value);
            Assert.Single(value);
            Assert.Equal("fileID", value[0].ID);
        }
예제 #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="OneDriveFileSystem"/> class.
 /// </summary>
 /// <param name="service">The OneDrive service instance to use for communication with the OneDrive API</param>
 /// <param name="supportFactory">A support factory instance to create some classes in a platform-agnostic way</param>
 /// <param name="drive">The drive to use</param>
 /// <param name="rootFolder">The root folder to use</param>
 public OneDriveFileSystem([NotNull] OneDriveService service, [NotNull] OneDriveSupportFactory supportFactory, [NotNull] Drive drive, [NotNull] Item rootFolder)
 {
     Service         = service;
     _supportFactory = supportFactory;
     Drive           = drive;
     RootFolderItem  = rootFolder;
     Root            = new OneDriveDirectoryEntry(this, rootFolder, true);
 }
예제 #7
0
        public App()
        {
            InitializeComponent();

            ServiceInstance = new OneDriveService(_ONEDRIVE_APP_ID);

            MainPage = new NavigationPage(new MainPage());
        }
예제 #8
0
        public StatsView()
        {
            InitializeComponent();

            SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;

            service = new OneDriveService();
        }
예제 #9
0
        internal async void SearchFiles_WithValidFilesAndFolder_MustResultAsSpected(string searchPattern, int searchLimit)
        {
            var fileData = new DTOs.FileSearch
            {
                value = new DTOs.File[] {
                    new DTOs.File {
                        file            = new DTOs.FileDetails {
                        },
                        id              = "file1ID", name = "file1Name.txt",
                        parentReference = new DTOs.DirectoryParent {
                            id = "parentID", path = "/parent/folderName"
                        }
                    },
                    new DTOs.File {
                        file            = new DTOs.FileDetails {
                        },
                        id              = "file2ID", name = "file2Name.zip",
                        parentReference = new DTOs.DirectoryParent {
                            id = "parentID", path = "/parent/folderName"
                        }
                    },
                    new DTOs.File {
                        file            = new DTOs.FileDetails {
                        },
                        id              = "file3ID", name = "file3Name.txt",
                        parentReference = new DTOs.DirectoryParent {
                            id = "parentID", path = "/parent/folderName"
                        }
                    }
                }
            };
            var directoryData = new DTOs.DirectorySearch
            {
                value = new DTOs.Directory[] {
                    new DTOs.Directory {
                        folder          = new DTOs.DirectoryDetails {
                        },
                        id              = "driveID!folderID", name = "folderName",
                        parentReference = new DTOs.DirectoryParent {
                            path = "/rootName"
                        }
                    }
                }
            };
            var client = ClientBuilder.Create()
                         .With("$select=id,name,createdDateTime,size,@microsoft.graph.downloadUrl,file,parentReference&$top=1000", fileData)
                         .With("$select=id,name,folder,parentReference&$top=1000", directoryData)
                         .Build();
            var service   = new OneDriveService(client);
            var directory = new DirectoryVM {
                ID = "driveID!folderID"
            };

            var value = await service.SearchFiles(directory, searchPattern, searchLimit);

            Assert.NotNull(value);
            Assert.Equal(searchLimit, value.Length);
        }
예제 #10
0
        internal async void GetDrives_WithoutConnection_MustResultNull()
        {
            var client  = ClientBuilder.Create().WithoutConnection().Build();
            var service = new OneDriveService(client);

            var value = await service.GetDrives();

            Assert.Null(value);
        }
        /// <inheritdoc/>
        public async Task <IDriveItem> UploadFileInTeamDrive(Func <Task <string> > tokenProvider, MemoryStream stream, string teamId, string filePath)
        {
            GraphServiceClient client = CreateGraphClient(tokenProvider);
            var res = await OneDriveService.UploadToChannelFolder(client, teamId, stream, filePath);

            var item = MapResult(res);

            return(item);
        }
예제 #12
0
        internal async void GetSharedDrives_WithNullShares_MustResultNull(DTOs.SharedDriveSearch param)
        {
            var client  = ClientBuilder.Create().With("me/drive/sharedWithMe", param).Build();
            var service = new OneDriveService(client);

            var value = await service.GetSharedDrives();

            Assert.Null(value);
        }
        public void GetPath_WithValidArguments_MustResultAsSpected(string path, string expected)
        {
            var client  = ClientBuilder.Create().Build();
            var service = new OneDriveService(client: client);

            var value = service.GetPath(path);

            Assert.Equal(expected, value);
        }
예제 #14
0
 public StatsViewModel(DialogService dialogService)
 {
     _dialogService   = dialogService;
     _gameRepo        = new GameRepository();
     _playerRepo      = new PlayerRepository();
     _achievementRepo = new AchievementRepository();
     _oneDriveService = new OneDriveService();
     Setup();
 }
예제 #15
0
        public async void GetProfilePicture_WithoutConnection_MustResultNull()
        {
            var client  = ClientBuilder.Create().WithoutConnection().Build();
            var service = new OneDriveService(client);

            var value = await service.GetProfilePicture();

            Assert.Null(value);
        }
예제 #16
0
        public async void ConnectAsync_WithDefaultClient_MustResultFalse()
        {
            var client  = ClientBuilder.Create().Build();
            var service = new OneDriveService(client: client);

            var value = await service.ConnectAsync();

            Assert.False(value);
        }
예제 #17
0
        public async Task <ActionResult> ShowDocument(int id = -1, string title = "")
        {
            var  db = new OneDriveDbContext();
            File file;

            if (id != -1)
            {
                //権限がない
                if (User.IsInRole(nameof(Role.アップロード)))
                {
                    return(View("Error"));
                }

                file = db.Files.First(info => info.DocumentId == id);
            }
            else
            {
                if (title == "")
                {
                    var manager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>();
                    var name    = manager.FindByName(User.Identity.Name).Title;
                    //該当する資料が存在しない
                    if (!db.Files.Any(info => info.DocumentName == name))
                    {
                        return(View("Error"));
                    }

                    file = db.Files.First(info => info.DocumentName == name);
                }
                else
                {
                    //権限がない
                    if (User.IsInRole(nameof(Role.アップロード)))
                    {
                        return(View("Error"));
                    }

                    var manager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>();
                    //該当する資料が存在しない
                    if (!db.Files.Any(info => info.DocumentName == title))
                    {
                        return(View("Error"));
                    }

                    file = db.Files.First(info => info.DocumentName == title);
                }
            }

            file.DownloadCount++;
            db.SaveChanges();
            var shareInfo = await OneDriveService.CreateShareLink(file.MicrosoftAccountNum, file.OneDriveFileId);

            _tasks.Add(DeleteShareLinkTask(file.MicrosoftAccountNum, file.OneDriveFileId, shareInfo.PermissionId));
            _tasks = _tasks.Where(x => !x.IsCompleted || !x.IsCanceled || !x.IsFaulted).ToList(); //完了済みのものを取り除く
            return(Redirect(shareInfo.Url));
        }
        /// <summary>
        /// Initialize the O365 binding extension
        /// </summary>
        /// <param name="context">Context containing info relevant to this extension</param>
        public void Initialize(ExtensionConfigContext context)
        {
            _webhookTriggerProvider = new WebhookTriggerBindingProvider();
            _notificationUrl        = context.GetWebhookHandler();

            var graphWebhookConverter = new GraphWebhookSubscriptionConverter(_graphServiceClientManager, _options, _subscriptionStore);

            // Webhooks
            var webhookSubscriptionRule = context.AddBindingRule <GraphWebhookSubscriptionAttribute>();

            webhookSubscriptionRule.BindToInput <Subscription[]>(graphWebhookConverter);
            webhookSubscriptionRule.BindToInput <OpenType[]>(typeof(GenericGraphWebhookSubscriptionConverter <>), _graphServiceClientManager, _options, _subscriptionStore);
            webhookSubscriptionRule.BindToInput <string[]>(graphWebhookConverter);
            webhookSubscriptionRule.BindToInput <JArray>(graphWebhookConverter);
            webhookSubscriptionRule.BindToCollector <string>(CreateCollector);
            context.AddBindingRule <GraphWebhookTriggerAttribute>().BindToTrigger(_webhookTriggerProvider);

            // OneDrive
            var oneDriveService   = new OneDriveService(_graphServiceClientManager);
            var OneDriveRule      = context.AddBindingRule <OneDriveAttribute>();
            var oneDriveConverter = new OneDriveConverter(oneDriveService);

            // OneDrive inputs
            OneDriveRule.BindToInput <byte[]>(oneDriveConverter);
            OneDriveRule.BindToInput <string>(oneDriveConverter);
            OneDriveRule.BindToInput <Stream>(oneDriveConverter);
            OneDriveRule.BindToInput <DriveItem>(oneDriveConverter);
            //OneDriveoutputs
            OneDriveRule.BindToCollector <byte[]>(oneDriveConverter);

            // Excel
            var excelService   = new ExcelService(_graphServiceClientManager);
            var ExcelRule      = context.AddBindingRule <ExcelAttribute>();
            var excelConverter = new ExcelConverter(excelService);

            // Excel Outputs
            ExcelRule.AddConverter <object[][], string>(ExcelService.CreateRows);
            ExcelRule.AddConverter <JObject, string>(excelConverter);
            ExcelRule.AddOpenConverter <OpenType, string>(typeof(ExcelGenericsConverter <>), excelService); // used to append/update arrays of POCOs
            ExcelRule.BindToCollector <string>(excelConverter);
            // Excel Inputs
            ExcelRule.BindToInput <string[][]>(excelConverter);
            ExcelRule.BindToInput <WorkbookTable>(excelConverter);
            ExcelRule.BindToInput <OpenType>(typeof(ExcelGenericsConverter <>), excelService);

            // Outlook
            var outlookService   = new OutlookService(_graphServiceClientManager);
            var OutlookRule      = context.AddBindingRule <OutlookAttribute>();
            var outlookConverter = new OutlookConverter(outlookService);

            // Outlook Outputs
            OutlookRule.AddConverter <JObject, Message>(outlookConverter);
            OutlookRule.AddOpenConverter <OpenType, Message>(typeof(OutlookGenericsConverter <>), outlookService);
            OutlookRule.AddConverter <string, Message>(outlookConverter);
            OutlookRule.BindToCollector <Message>(outlookConverter);
        }
        public void Constructor_WithValidArgument_MustSetProperty()
        {
            var client  = ClientBuilder.Create().Build();
            var service = new OneDriveService(client: client);

            var expected = client;
            var value    = service.Client;

            Assert.Same(expected, value);
        }
        public void GetIDs_WithInvalidArguments_MustThrowException(string itemID)
        {
            var client  = ClientBuilder.Create().Build();
            var service = new OneDriveService(client: client);

            var expected = "The directory ID for the onedrive client is invalid";
            var value    = Assert.Throws <ArgumentException>(() => service.GetIDs(itemID));

            Assert.Equal(expected, value.Message);
        }
예제 #21
0
        public async void DisconnectAsync_WithDefaultClient_MustResultFalse()
        {
            var client  = ClientBuilder.Create().Build();
            var service = new OneDriveService(client: client);

            var expected = false;
            await service.DisconnectAsync();

            Assert.False(expected);
        }
예제 #22
0
        internal async void GetSharedDrives_WithException_MustResultNull()
        {
            var exception = new Exception("Some Dummy Exception");
            var client    = ClientBuilder.Create().With("me/drive/sharedWithMe", exception).Build();
            var service   = new OneDriveService(client);

            var value = await service.GetSharedDrives();

            Assert.Null(value);
        }
예제 #23
0
        internal void GetDetails_WithValidArgument_MustResultSpectedValue(DTOs.File param)
        {
            var client  = ClientBuilder.Create().Build();
            var service = new OneDriveService(client);

            var value = service.GetDetails(param);

            Assert.NotNull(value);
            Assert.Equal("id", value.ID);
        }
예제 #24
0
        internal async void Download_WithInvalidArgument_MustThrowException(string fileID)
        {
            var client           = ClientBuilder.Create().Build();
            var exceptionMessage = $"Error while downloading file [{fileID}] with oneDrive service";
            var service          = new OneDriveService(client);

            var value = await Assert.ThrowsAsync <Exception>(async() => await service.Download(fileID));

            Assert.NotNull(value);
            Assert.Equal(exceptionMessage, value.Message);
        }
예제 #25
0
        public AuthPage()
        {
            InitializeComponent();

            _service = ((App)Application.Current).ServiceInstance;

            // 認証ページを表示
            this.webView.Source = _service.GetStartUri();

            webView.Navigated += WebView_Navigated;
        }
예제 #26
0
        public async void GetProfilePicture_WithException_MustThrowException()
        {
            var exception = new Exception("Some Dummy Exception");
            var client    = ClientBuilder.Create().With("me/photo/$value", exception).Build();
            var service   = new OneDriveService(client);

            var value = await Assert.ThrowsAsync <Exception>(async() => await service.GetProfilePicture());

            Assert.NotNull(value);
            Assert.Equal(exception.Message, value.Message);
        }
예제 #27
0
        internal async void GetDrives_WithException_MustThrowException()
        {
            var exception = new Exception("Some Dummy Exception");
            var client    = ClientBuilder.Create().With("me?$select=id,displayName,userPrincipalName", exception).Build();
            var service   = new OneDriveService(client);

            var value = await Assert.ThrowsAsync <Exception>(async() => await service.GetDrives());

            Assert.NotNull(value);
            Assert.Equal(exception.Message, value.Message);
        }
        public void GetIDs_WithValidRootArguments_MustResultSpectedValue()
        {
            var client  = ClientBuilder.Create().Build();
            var service = new OneDriveService(client: client);

            var expectedDrive = "drive";
            var expectedFile  = "root";
            var value         = service.GetIDs($"{expectedDrive}!{expectedFile}");

            Assert.Equal(expectedDrive, value.DriveID);
            Assert.Equal(expectedFile, value.ID);
        }
예제 #29
0
        internal async void GetDetails_WithException_MustThrowException()
        {
            var fileID    = "driveID!fileID";
            var exception = new Exception($"Error while loading details for file [{fileID}] with oneDrive service");
            var client    = ClientBuilder.Create().With("", exception).Build();
            var service   = new OneDriveService(client);

            var value = await Assert.ThrowsAsync <Exception>(async() => await service.GetDetails(fileID));

            Assert.NotNull(value);
            Assert.Equal(exception.Message, value.Message);
        }
예제 #30
0
        internal async void SearchFiles_WithZeroLimit_MustResultAndEmptyArray()
        {
            var client    = ClientBuilder.Create().Build();
            var service   = new OneDriveService(client);
            var directory = new DirectoryVM {
            };

            var value = await service.SearchFiles(directory, "", 0);

            Assert.NotNull(value);
            Assert.Empty(value);
        }
예제 #31
0
        internal async void Download_WithBadResponse_MustThrowException()
        {
            var fileID           = "driveID!fileID";
            var exceptionMessage = $"Error while downloading file [{fileID}] with oneDrive service";
            var client           = ClientBuilder.Create().With("", new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest)).Build();
            var service          = new OneDriveService(client);

            var value = await Assert.ThrowsAsync <Exception>(async() => await service.Download(fileID));

            Assert.NotNull(value);
            Assert.Equal(exceptionMessage, value.Message);
        }