public async Task <object> CreateFolder(FolderModel folder) { var configuration = new HttpConfiguration(); var request = new HttpRequestMessage(); request.SetConfiguration(configuration); try { SharePointResponse sharePointToken = await GetSharepointToken(); if (sharePointToken != null) { RequestModel requestModel = createRequests.CreateSharePointFolderValues(folder); if (requestModel != null) { requestModel.token = sharePointToken.access_token; await createRequests.POSTAsync(requestModel); return(request.CreateResponse(HttpStatusCode.OK, "Successfully Created Folder " + folder.FolderName)); } else { throw new Exception(); } } else { throw new Exception(); } } catch (Exception) { return(new HttpResponseMessage(HttpStatusCode.InternalServerError)); } }
public async Task <SharePointResponse> GetFormDigest() { var configuration = new HttpConfiguration(); var request = new HttpRequestMessage(); request.SetConfiguration(configuration); try { SharePointResponse sharePointToken = await GetSharepointToken(); if (sharePointToken != null) { RequestModel requestModel = createRequests.CreateSharePointFormDigestRequestValues(); if (requestModel != null) { requestModel.token = sharePointToken.access_token; string formDigestResult = (string)await createRequests.POSTAsync(requestModel); string[] formDigest = formDigestResult.Split('\"'); for (var i = 0; i < formDigest.Length; i++) { if (formDigest[i].Equals("FormDigestTimeoutSeconds")) { sharePointToken.formDigestTimeout = int.Parse(formDigest[i + 1].Replace(":", "").Replace(",", "")); } if (formDigest[i].Equals("FormDigestValue")) { sharePointToken.formDigestValue = formDigest[i + 2]; break; } } return(sharePointToken); } else { throw new Exception(); } } else { throw new Exception(); } } catch (Exception) { return(null); } }
public async Task <object> DownloadFile(FolderModel folder) { var configuration = new HttpConfiguration(); var request = new HttpResponseMessage(); try { SharePointResponse sharePointToken = await GetSharepointToken(); if (sharePointToken != null) { RequestModel requestModel = createRequests.DownloadFileContentSharePointValues(folder); if (requestModel != null) { requestModel.token = sharePointToken.access_token; requestModel.fileNames = new List <string> { folder.fileName }; var dataBytes = await createRequests.GETAsync(requestModel); //adding bytes to memory stream var dataStream = new MemoryStream((byte[])dataBytes); request = Request.CreateResponse(HttpStatusCode.OK, "Successfully Downloaded File " + folder.fileName); request.Content = new StreamContent(dataStream); request.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment"); request.Content.Headers.ContentDisposition.FileName = folder.fileName; request.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream"); return(request); } else { throw new Exception(); } } else { throw new Exception(); } } catch (Exception) { return(new HttpResponseMessage(HttpStatusCode.InternalServerError)); } }
public async Task <object> FolderExits(FolderModel folder) { var configuration = new HttpConfiguration(); var request = new HttpRequestMessage(); request.SetConfiguration(configuration); try { SharePointResponse sharePointToken = await GetSharepointToken(); if (sharePointToken != null) { RequestModel requestModel = createRequests.FolderExistsSharePointValues(folder); if (requestModel != null) { requestModel.token = sharePointToken.access_token; string responses = (string)await createRequests.GETAsync(requestModel); string[] response = responses.Split('\"'); for (var i = 0; i < response.Length; i++) { if (response[i].Contains("ListItemAllFields")) { return(null); } } return(responses); } else { throw new Exception(); } } else { throw new Exception(); } } catch (Exception) { return(null); } }
/// <summary> /// Description : A Commmon Method that creates POST Requests based on Different /// Need that will be called with the appropriate details /// </summary> /// <param name="credentials"></param> /// <returns>The appropriate result which could range from token value/form digest value</returns> public async Task <object> POSTAsync(RequestModel credentials) { using (HttpClient client = new HttpClient()) { HttpContent content; if (credentials.body != null && credentials.type == 1) //Type 1 indicates that the POST Request will be for Creating a Folder { //This Section Creates a POST Request for Creating a Folder on Shared Documents client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", credentials.token); MediaTypeWithQualityHeaderValue acceptHeader = MediaTypeWithQualityHeaderValue.Parse("application/json;odata=verbose;charset=utf-8"); client.DefaultRequestHeaders.Accept.Add(acceptHeader); content = new StringContent(credentials.body); content.Headers.ContentType = acceptHeader; var result = await client.PostAsync(credentials.URL, content); if (credentials.body_2 != null) { for (var i = 0; i < credentials.body_2.Count; i++) { content = new StringContent(credentials.body_2[i]); content.Headers.ContentType = acceptHeader; await client.PostAsync(credentials.URL, content); } } return(result); } else if (credentials.type == 2) //Type 2 indicates that the POST Request will be for Form Digest Value { //This Section Creates a POST Request for Getting the Form Digest Value client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", credentials.token); MediaTypeWithQualityHeaderValue acceptHeader = MediaTypeWithQualityHeaderValue.Parse("application/json;odata=verbose"); client.DefaultRequestHeaders.Accept.Add(acceptHeader); content = null; var result = await client.PostAsync(credentials.URL, content); string resultContent = await result.Content.ReadAsStringAsync(); return(resultContent); } else if (credentials.type == 3) //Type 3 indicates that the POST Request will be for Getting the Token { //This Section Creates a POST Request for Retrieving a Token content = new FormUrlEncodedContent(credentials.Values); var result = await client.PostAsync(credentials.URL, content); string resultContent = await result.Content.ReadAsStringAsync(); SharePointResponse tokenResponse = JsonConvert.DeserializeObject <SharePointResponse>(resultContent); return(tokenResponse); } else if (credentials.type == 4) //Type 4 indicates that the POST Request will be for Deleting a Folder on Shared Documents { //This Section Creates a POST Request for Deleting a Folder client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", credentials.token); client.DefaultRequestHeaders.Add("X-RequestDigest", credentials.formDigestValue); client.DefaultRequestHeaders.Add("X-HTTP-Method", "DELETE"); content = null; var result = await client.PostAsync(credentials.URL, content); return(result); } else if (credentials.type == 5) //Type 5 indicates that the POST Request will be for Uploading a File to a Particular Folder on Shared Documents { //This Section Creates a POST Request for Uploading a File to a Particular Folder MultipartFormDataContent form; HttpResponseMessage result = new HttpResponseMessage(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", credentials.token); client.DefaultRequestHeaders.Add("X-RequestDigest", credentials.formDigestValue); if (credentials.httpPostedFile != null) { for (int i = 0; i < credentials.httpPostedFile.Count; i++) { form = new MultipartFormDataContent { credentials.httpPostedFile[i] }; result = await client.PostAsync(credentials.URLs[i], form); } } return(result); } else //Type 7 indicates that the POST Request will be for Deleting a File from a Particular Folder on Shared Documents { //This Section Creates a POST Request for Deleting a File from a Particular Folder client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", credentials.token); client.DefaultRequestHeaders.Add("X-RequestDigest", credentials.formDigestValue); client.DefaultRequestHeaders.Add("X-HTTP-Method", "DELETE"); content = null; var result = await client.PostAsync(credentials.URL, content); return(result); } } }
public async Task <object> UploadFile() { var httpRequest = HttpContext.Current.Request; HttpFileCollection hfc = httpRequest.Files; RequestModel requestModel_2 = new RequestModel { httpPostedFile = new List <ByteArrayContent>() }; if (httpRequest.Files.Count > 0) { for (int i = 0; i < hfc.Count; i++) { HttpPostedFile FileUpload = hfc[i]; //Retrieves the File that is sent with the HTTP Request int FileLen = FileUpload.ContentLength; //Length of the File sent to be Uploaded byte[] input = new byte[FileLen]; //Initiliaze a Byte Array // Initialize the stream. Stream MyStream = FileUpload.InputStream; // Read the file into the byte array. MyStream.Read(input, 0, FileLen); requestModel_2.httpPostedFile.Add(new ByteArrayContent(input)); } } string folderName = httpRequest.Form["Folder_Name"]; // This is used to retrieve from the Request the Destination Folder Name string path = httpRequest.Form["Path"]; var configuration = new HttpConfiguration(); var request = new HttpRequestMessage(); request.SetConfiguration(configuration); try { SharePointResponse sharePointToken = await GetFormDigest(); if (sharePointToken != null) { FolderModel folder = new FolderModel() { FolderName = folderName, path = path ?? null }; folder.files = new List <string>(); for (int i = 0; i < hfc.Count; i++) { folder.files.Add(hfc[i].FileName); } RequestModel requestModel = createRequests.UploadFileSharePointValues(folder); if (requestModel != null) { requestModel.token = sharePointToken.access_token; requestModel.formDigestValue = sharePointToken.formDigestValue; requestModel.httpPostedFile = requestModel_2.httpPostedFile; requestModel.fileNames = new List <string>(); for (int i = 0; i < hfc.Count; i++) { requestModel.fileNames.Add(hfc[i].FileName); } await createRequests.POSTAsync(requestModel); string combindedFiles = string.Join(",", requestModel.fileNames); return(request.CreateResponse(HttpStatusCode.OK, "Successfully Uploaded File(s) " + combindedFiles)); } else { throw new Exception(); } } else { throw new Exception(); } } catch (Exception) { return(new HttpResponseMessage(HttpStatusCode.InternalServerError)); } }
public async Task <object> GetFolderContents(FolderModel folder) { var configuration = new HttpConfiguration(); var request = new HttpRequestMessage(); request.SetConfiguration(configuration); try { if (FolderExits(folder) != null) //Checks if the Folder exists before retrieving contents { SharePointResponse sharePointToken = await GetSharepointToken(); if (sharePointToken != null) { RequestModel requestModel = createRequests.GetFolderContentSharePointValues(folder); if (requestModel != null) { folder.fileCount = folder.folderCount = 0; folder.files = new List <string>(); folder.SubFolders = new List <string>(); requestModel.token = sharePointToken.access_token; string responses = (string)await createRequests.GETAsync(requestModel); string[] response = responses.Split('@'); string[] fileResult = response[0].Split('\"'); string[] folderResult = response[1].Split('\"'); for (var i = 0; i < fileResult.Length; i++) { if (fileResult[i].Contains("metadata")) { folder.fileCount++; } if (fileResult[i].Contains("ServerRelativeUrl")) { i += 2; string[] temp = fileResult[i].Split('/'); folder.files.Add(temp[temp.Length - 1]); } } for (var i = 0; i < folderResult.Length; i++) { if (folderResult[i].Contains("metadata")) { folder.folderCount++; } if (folderResult[i].Contains("ServerRelativeUrl")) { i += 2; string[] temp = folderResult[i].Split('/'); folder.SubFolders.Add(temp[temp.Length - 1]); } } return(folder); } else { throw new Exception(); } } else { throw new Exception(); } } else { throw new Exception(); } } catch (Exception) { return(null); } }