public Stream DownloadPreview(string userId, string id, PreviewSize size, long?version) { var webRequest = CreatePreviewDocumentRequest(userId, id, size, version); webRequest.Timeout = PREVIEW_TIMEOUT; HttpWebResponse webResponse = null; try { webResponse = (HttpWebResponse)webRequest.GetResponse(); } catch (WebException e) when((e.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotFound) { throw new NotFoundException(e.Message, e); } catch (WebException e) when((e.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.NotAcceptable) { throw new NotAcceptableException(e.Message, e); } if (webResponse.StatusCode != HttpStatusCode.OK) { throw new RestClientException("Cannot download preview for document '" + id + "', received status code " + webResponse.StatusCode + "."); } return(DocumentStreamUtils.WrapDownloadStream(webResponse.GetResponseStream(), streamWrapper)); }
public UploadDocumentResponse UploadDocument(string userId, string filename, string path, DateTime?documentDate, List <string> collectionIds, List <string> folderIds, CancellationToken cancellationToken) { RestRequest uploadRequest = CreateRestRequest(URI_RESOURCE, Method.POST, ContentType.MULTIPART_FORM_DATA); uploadRequest.AlwaysMultipartFormData = true; uploadRequest.AddParameter(GenerateFormParameter(RestApiConstants.METADATA, GenerateDocumentUploadJson(filename, path, documentDate, collectionIds, folderIds), ContentType.APPLICATION_JSON)); DocumentStreamUtils.AddFileToUpload(uploadRequest, RestApiConstants.DOCUMENT, path, streamWrapper, cancellationToken); uploadRequest.Timeout = int.MaxValue; uploadRequest.ReadWriteTimeout = int.MaxValue; // Cannot use Timeout.Infinite here because resthsharp only uses this if > 0 var result = Execute <UploadDocumentResponse>(GetOAuthInfo(userId), uploadRequest); return(UnwrapResponse(result, new StatusCodeResponseHandler <UploadDocumentResponse>(HttpStatusCode.Created))); }
public NewVersionUploadResponse UploadNewVersion(string userId, string id, string filename, string filepath, CancellationToken token) { RestRequest newVersionRequest = CreateRestRequest(URI_RESOURCE + id, Method.POST, ContentType.MULTIPART_FORM_DATA); newVersionRequest.AlwaysMultipartFormData = true; newVersionRequest.AddParameter(GenerateFormParameter("metadata", GetMetadata(filename, filepath), ContentType.APPLICATION_JSON)); DocumentStreamUtils.AddFileToUpload(newVersionRequest, "document", filepath, streamWrapper, token); newVersionRequest.Timeout = int.MaxValue; newVersionRequest.ReadWriteTimeout = int.MaxValue; // Cannot use Timeout.Infinite here because resthsharp only uses this if > 0 var result = Execute <NewVersionUploadResponse>(GetOAuthInfo(userId), newVersionRequest); return(UnwrapResponse(result, new StatusCodeResponseHandler <NewVersionUploadResponse>(HttpStatusCode.Created))); }
public Stream DownloadDocument(string userId, string id, long?version, long?range) { HttpWebRequest webRequest = CreateDownloadDocumentRequest(userId, id, version, range); HttpWebResponse webResponse = null; try { webResponse = (HttpWebResponse)webRequest.GetResponse(); } catch (WebException e) when((e.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.RequestedRangeNotSatisfiable) { throw new RequestedRangeNotSatisfiableException("The requested range cannot be downloaded"); } catch (WebException e) when((e.Response as HttpWebResponse)?.StatusCode != HttpStatusCode.OK) { ThrowRestClientException(e, e.Response as HttpWebResponse); } ValidateResponse(webResponse, userId, range); return(DocumentStreamUtils.WrapDownloadStream(webResponse.GetResponseStream(), streamWrapper)); }