PageRenderTime 48ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/ItemConsole/CreateExample.cs

https://github.com/herskinduk/Usergroup.ItemWebApi
C# | 85 lines | 64 code | 12 blank | 9 comment | 2 complexity | d8808e30e8803dc3ad59bcc1965c38ed MD5 | raw file
  1. using Newtonsoft.Json.Linq;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Net;
  7. using System.Net.Http;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Web;
  11. namespace ItemConsole
  12. {
  13. public class CreateExample
  14. {
  15. public static void CreateItemUnderHome(string itemName, string template)
  16. {
  17. // Setup Item request
  18. var request = WebRequest.CreateHttp(
  19. string.Format(
  20. "http://usergroup/-/item/v1/sitecore/content/home?name={0}&template={1}",
  21. HttpUtility.UrlEncode(itemName),
  22. HttpUtility.UrlEncode(template)));
  23. // Set username and password headers
  24. request.Headers.Add("X-Scitemwebapi-Username", "admin");
  25. request.Headers.Add("X-Scitemwebapi-Password", "b");
  26. request.Method = "POST";
  27. request.ContentLength = 0;
  28. var response = (HttpWebResponse)request.GetResponse();
  29. ConsoleExt.WriteJsonStream(response.GetResponseStream());
  30. }
  31. #region CreateMediaItem
  32. public static void CreateMediaItem(string itemName, string filePath)
  33. {
  34. // Setup Item request
  35. var request = WebRequest.CreateHttp(
  36. "http://usergroup/-/item/v1/sitecore/media%20library?name=" +
  37. HttpUtility.UrlEncode(itemName));
  38. // Create boundry marker
  39. var boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x");
  40. // Set username/password and content type headers
  41. request.Headers.Add("X-Scitemwebapi-Username", "admin");
  42. request.Headers.Add("X-Scitemwebapi-Password", "b");
  43. request.Method = "POST";
  44. request.ContentType = "multipart/form-data; boundary=" + boundary;
  45. request.KeepAlive = true;
  46. var requestStream = request.GetRequestStream();
  47. // Write part boundry
  48. byte[] boundarybytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
  49. requestStream.Write(boundarybytes, 0, boundarybytes.Length);
  50. // Write part header
  51. string headerTemplate = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n Content-Type: application/octet-stream\r\n\r\n";
  52. string header = string.Format(headerTemplate, itemName, filePath);
  53. byte[] headerbytes = Encoding.UTF8.GetBytes(header);
  54. requestStream.Write(headerbytes, 0, headerbytes.Length);
  55. // Write part data
  56. FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
  57. byte[] buffer = new byte[4096];
  58. int bytesRead = 0;
  59. while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
  60. {
  61. requestStream.Write(buffer, 0, bytesRead);
  62. }
  63. fileStream.Close();
  64. // Write trailing boundry
  65. byte[] trailer = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
  66. requestStream.Write(trailer, 0, trailer.Length);
  67. requestStream.Close();
  68. var response = (HttpWebResponse)request.GetResponse();
  69. ConsoleExt.WriteJsonStream(response.GetResponseStream());
  70. }
  71. #endregion
  72. }
  73. }