private async Task <ItemCollectionInternal> getVersions(BoxFileInternal fileEntry) { var response = await _client.GetAsync(string.Format("{0}/{1}/files/{2}/versions", ApiBaseUrl, Version, fileEntry.Id)); switch (response.StatusCode) { case HttpStatusCode.OK: break; case HttpStatusCode.Unauthorized: var msg = await response.Content.ReadAsStringAsync( ); throw new CloudStorageAuthorizationException(msg); case HttpStatusCode.Forbidden: return(null); default: throw new HttpException((int)response.StatusCode, response.Content.ReadAsStringAsync( ).Result); } return(await response.Content.ReadAsAsync <ItemCollectionInternal>( )); }
private void mergeItemToFile(BoxItemInternal boxItem, BoxFileInternal file) { file.Type = boxItem.Type; file.Id = boxItem.Id; file.Sequence_Id = boxItem.Sequence_Id; file.ETag = boxItem.ETag; file.SHA1 = boxItem.SHA1; file.Name = boxItem.Name; file.Description = boxItem.Description; file.Size = boxItem.Size; file.Path_Collection = boxItem.Path_Collection; file.Created_At = boxItem.Created_At; file.Modified_At = boxItem.Modified_At; file.Trashed_At = boxItem.Trashed_At; file.Purged_At = boxItem.Purged_At; file.Content_Created_At = boxItem.Content_Created_At; file.Content_Modified_At = boxItem.Content_Modified_At; file.Created_By = boxItem.Created_By; file.Modified_By = boxItem.Modified_By; file.Owned_By = boxItem.Owned_By; //file.Shared_Link = boxItem.Shared_Link; file.Parent = boxItem.Parent; file.Item_Status = boxItem.Item_Status; }
private async Task <MetaDataBase> uploadFile(string path, HttpContent dataContent) { path = FixPath(path); var parts = extractParentDirectoryAndItemNameFromFullPath(path); var targetFolder = await this.getFolderByPath(parts.Item1, false); var fileEntry = targetFolder.Item_Collection.Entries.FirstOrDefault(e => e.Name == parts.Item2); HttpResponseMessage response; if (fileEntry != null) { //file already exists and needs to be updated var multipartContent = new MultipartFormDataContent( ); multipartContent.Headers.TryAddWithoutValidation("If-Match", fileEntry.ETag); dataContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data") { Name = "\"file\"", FileName = string.Format("\"{0}\"", parts.Item2) }; dataContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/octet-stream"); multipartContent.Add(dataContent); response = await this._client.PostAsync(string.Format("{0}/{1}/files/{2}/content", ApiUploadUrl, Version, fileEntry.Id), multipartContent); } else { //file is new var multipartContent = new MultipartFormDataContent( ); dataContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data") { Name = "\"file\"", FileName = string.Format("\"{0}\"", parts.Item2) }; dataContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/octet-stream"); var metadata = new { parent = new { id = targetFolder.Id }, name = parts.Item2 }; var metadataContent = new ObjectContent(metadata.GetType( ), metadata, new JsonMediaTypeFormatter( )); metadataContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data") { Name = "\"metadata\"" }; multipartContent.Add(dataContent); multipartContent.Add(metadataContent); response = await this._client.PostAsync(string.Format("{0}/{1}/files/content", ApiUploadUrl, Version), multipartContent); } switch (response.StatusCode) { case HttpStatusCode.OK: case HttpStatusCode.Created: break; default: throw new CloudStorageRequestFailedException("Unable to upload file."); } // Read response asynchronously as JsonValue and write out tweet texts var col = await response.Content.ReadAsAsync <ItemCollectionInternal>( ); var file = new BoxFileInternal( ); mergeItemToFile(col.Entries.First( ), file); if (!cached.ContainsKey(path)) { cached.GetOrAdd(path, s => new FileInfo { Id = file.Id, IsFolder = false }); } return(new BoxFileMetaData(file)); }