HttpTrigger.cs 2.7 KB

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