HttpTrigger.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. 
  2. using Newtonsoft.Json.Linq;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.ComponentModel;
  6. using System.Net.Http;
  7. using System.Reflection;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Security.Cryptography;
  11. using System.Net.Http.Json;
  12. using System.Text.Json;
  13. using System.IO;
  14. using TEAMModelOS.SDK.Extension;
  15. using System.Net;
  16. namespace TEAMModelOS.SDK.DI
  17. {
  18. public class HttpTrigger
  19. {
  20. private readonly HttpClient _httpClient;
  21. public HttpTrigger(HttpClient httpClient)
  22. {
  23. _httpClient = httpClient;
  24. }
  25. // <summary>
  26. /// 请求信息
  27. /// </summary>
  28. /// <param name="robotUrl">釘釘Robot發送Url</param>
  29. /// <param name="secret">加簽密鑰</param>
  30. /// <param name="msg">發送訊息</param>
  31. /// <returns></returns>
  32. public async Task<(int status, string json)> RequestHttpTrigger(object data, string location, string url)
  33. {
  34. var keys = HttpTriggerUrl.HttpTrigger地址.GetDescriptionText().Split(',');
  35. string domain = "";
  36. if (location.Equals("China-Dep"))
  37. {
  38. domain = keys[2];
  39. }
  40. else if (location.Equals("China-Test"))
  41. {
  42. domain = keys[1];
  43. }
  44. else if (location.Equals("China"))
  45. {
  46. domain = keys[2];
  47. }
  48. else if (location.Equals("Global-Dep"))
  49. {
  50. domain = keys[4];
  51. }
  52. else if (location.Equals("Global-Test"))
  53. {
  54. domain = keys[4];
  55. }
  56. else if (location.Equals("Global"))
  57. {
  58. domain = keys[5];
  59. }
  60. string link = domain.Contains("localhost") ? $"http://{domain}/api/{url}" : $"http://{domain}/api/{url}";
  61. HttpContent httpContent = new StringContent(data.ToJsonString());
  62. HttpResponseMessage responseMessage = await _httpClient.PostAsync(link, httpContent);
  63. if (responseMessage.StatusCode == HttpStatusCode.OK)
  64. {
  65. string Content = await responseMessage.Content.ReadAsStringAsync();
  66. Content.ToObject<JsonElement>().TryGetProperty("data", out JsonElement content);
  67. return (200, $"{content}");
  68. }
  69. else
  70. {
  71. string Content = await responseMessage.Content?.ReadAsStringAsync();
  72. return (500, Content);
  73. }
  74. }
  75. }
  76. public enum HttpTriggerUrl
  77. {
  78. [Description("localhost:7071,teammodelosfunction-test.chinacloudsites.cn,teammodelosfunction.chinacloudsites.cn,teammodelosfunction.chinacloudsites.cn,teammodelosfunction.chinacloudsites.cn")]
  79. HttpTrigger地址,
  80. }
  81. }