public FolderBuilder(DeserializedItem item) { Id = item.Id; Name = item.Name; Type = StorageItemTypeEnum.Directory; PublicUrl = item.WebUrl; CreateDate = DateTime.Parse(item.CreatedDateTime); Path = item.ParentReference.Path; }
public async Task <FileStorages.IFileStorageFolder> CreateFolder(string name) { var httpClient = new System.Net.Http.HttpClient(); string fullPath; if (String.IsNullOrEmpty(Name)) { fullPath = "/drive/root"; } else { fullPath = AddBackslash(Path); fullPath += Name + ":"; } string url = "https://graph.microsoft.com/v1.0/me" + fullPath + "/children"; var request = new System.Net.Http.HttpRequestMessage(HttpMethod.Post, url); request.Version = Version.Parse("1.0"); request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", Account.Token); string content = "{\r\n \"name\": \"" + name + "\",\r\n \"folder\": { }\r\n}"; request.Content = new StringContent(content); request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); System.Net.Http.HttpResponseMessage response = await httpClient.SendAsync(request); if (response.StatusCode != HttpStatusCode.OK && response.StatusCode != HttpStatusCode.Created) { throw new InvalidOperationException("Item did not create"); } DeserializedItem deserializedItem = new DeserializedItem(); using (var stream = await response.Content.ReadAsStreamAsync()) { DataContractJsonSerializer ser = new DataContractJsonSerializer(deserializedItem.GetType()); deserializedItem = ser.ReadObject(stream) as DeserializedItem; } if (deserializedItem == null) { throw new NullReferenceException("Couldn't deserialized the data"); } return(new FileStorageFolder(new FolderBuilder(deserializedItem) { PreviewImage = PreviewImage, Account = Account })); }
public FileBuilder(DeserializedItem item) { Id = item.Id; Name = item.Name; if (item.File != null) { Type = FileStorages.Convertor.ToStorageItemType(item.File.MimeType); } else { Type = FileStorages.Convertor.ToStorageItemType(item.Package.Type); } Size = item.Size; PublicUrl = item.WebUrl; CreateDate = DateTime.Parse(item.CreatedDateTime); DownloadUrl = item.DownloadUrl; Path = item.ParentReference.Path; }
private async Task Run() { _cancellationToken = new CancellationTokenSource(); var request = new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Get, _uploadUrl); request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", _storageFolder.Account.Token); var httpClient = new System.Net.Http.HttpClient(); var response = await httpClient.SendAsync(request); if (response.StatusCode != HttpStatusCode.Created && response.StatusCode != HttpStatusCode.OK) { throw new InvalidOperationException("Session of upload did not create"); } DeserializedUploadSession deserializedUploadSession = new DeserializedUploadSession(); using (System.IO.Stream stream = await response.Content.ReadAsStreamAsync()) { DataContractJsonSerializer ser = new DataContractJsonSerializer(deserializedUploadSession.GetType()); deserializedUploadSession = ser.ReadObject(stream) as DeserializedUploadSession; if (deserializedUploadSession?.NextExpectedRanges == null) { throw new NullReferenceException("Couldn't deserialized the data"); } } var fileStream = await _loсalFile.OpenReadAsync(); uint bytesCount = 13 * 320 * 1024; Byte[] bytes = new byte[bytesCount]; Regex regex = new Regex("[0-9]*"); var result = regex.Match(deserializedUploadSession.NextExpectedRanges[0]); _previewUploadBytes = UInt32.Parse(result.Value); fileStream.Seek(_previewUploadBytes); ulong offset = _previewUploadBytes; string token = _storageFolder.Account.Token; do { request = new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Put, _uploadUrl); request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token); var reader = await fileStream.ReadAsync(bytes.AsBuffer(), bytesCount, InputStreamOptions.None); request.Content = new ByteArrayContent(reader.ToArray()); request.Content.Headers.ContentRange = new ContentRangeHeaderValue((long)offset, (long)offset + reader.Length - 1, (long)TotalBytesToTransfer); response = await httpClient.SendAsync(request); offset += reader.Length; } while (offset != TotalBytesToTransfer && !_cancellationToken.IsCancellationRequested); if (_cancellationToken.IsCancellationRequested) { StorageApplicationPermissions.FutureAccessList.Remove(_localFileToken); return; } DeserializedItem deserializedItem = new DeserializedItem(); using (System.IO.Stream stream = await response.Content.ReadAsStreamAsync()) { DataContractJsonSerializer ser = new DataContractJsonSerializer(deserializedItem.GetType()); deserializedItem = ser.ReadObject(stream) as DeserializedItem; if (deserializedItem?.File == null) { throw new NullReferenceException("Couldn't deserialized the data"); } } RemoteFile = new FileStorageFile(new FileBuilder(deserializedItem)) { Account = _storageFolder.Account }; StorageApplicationPermissions.FutureAccessList.Remove(_localFileToken); }