FileUrlController.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. using Aliyun.OSS;
  2. using NTMiner.Core.MinerServer;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Web.Http;
  6. namespace NTMiner.Controllers {
  7. // 注意该控制器不能重命名
  8. public class FileUrlController : ApiControllerBase, IFileUrlController {
  9. [HttpPost]
  10. public string MinerJsonPutUrl([FromBody]MinerJsonPutUrlRequest request) {
  11. if (request == null || string.IsNullOrEmpty(request.FileName)) {
  12. return string.Empty;
  13. }
  14. try {
  15. var req = new GeneratePresignedUriRequest("minerjson", request.FileName, SignHttpMethod.Put);
  16. var uri = WebApiRoot.OssClient.GeneratePresignedUri(req);
  17. return uri.ToString();
  18. }
  19. catch (Exception e) {
  20. Logger.ErrorDebugLine(e);
  21. return string.Empty;
  22. }
  23. }
  24. [HttpPost]
  25. public string NTMinerUrl([FromBody]NTMinerUrlRequest request) {
  26. if (request == null || string.IsNullOrEmpty(request.FileName)) {
  27. return string.Empty;
  28. }
  29. var req = new GeneratePresignedUriRequest("ntminer", request.FileName, SignHttpMethod.Get) {
  30. Expiration = DateTime.Now.AddMinutes(10)
  31. };
  32. var uri = WebApiRoot.OssClient.GeneratePresignedUri(req);
  33. return uri.ToString();
  34. }
  35. [HttpPost]
  36. public List<NTMinerFileData> NTMinerFiles() {
  37. var list = WebApiRoot.NTMinerFileSet.GetAll();
  38. return list;
  39. }
  40. [HttpPost]
  41. public ResponseBase AddOrUpdateNTMinerFile([FromBody]DataRequest<NTMinerFileData> request) {
  42. if (request == null || request.Data == null) {
  43. return ResponseBase.InvalidInput("参数错误");
  44. }
  45. try {
  46. if (!IsValidAdmin(request, out ResponseBase response)) {
  47. return response;
  48. }
  49. WebApiRoot.NTMinerFileSet.AddOrUpdate(request.Data);
  50. return ResponseBase.Ok();
  51. }
  52. catch (Exception e) {
  53. Logger.ErrorDebugLine(e);
  54. return ResponseBase.ServerError(e.Message);
  55. }
  56. }
  57. [HttpPost]
  58. public ResponseBase RemoveNTMinerFile([FromBody]DataRequest<Guid> request) {
  59. if (request == null) {
  60. return ResponseBase.InvalidInput("参数错误");
  61. }
  62. try {
  63. if (!IsValidAdmin(request, out ResponseBase response)) {
  64. return response;
  65. }
  66. WebApiRoot.NTMinerFileSet.RemoveById(request.Data);
  67. return ResponseBase.Ok();
  68. }
  69. catch (Exception e) {
  70. Logger.ErrorDebugLine(e);
  71. return ResponseBase.ServerError(e.Message);
  72. }
  73. }
  74. [HttpPost]
  75. public string NTMinerUpdaterUrl() {
  76. try {
  77. string fileName;
  78. if (!VirtualRoot.LocalAppSettingSet.TryGetAppSetting(NTKeyword.NTMinerUpdaterFileNameAppSettingKey, out IAppSetting setting)) {
  79. fileName = HomePath.NTMinerUpdaterFileName;
  80. }
  81. else {
  82. fileName = (string)setting.Value;
  83. }
  84. var req = new GeneratePresignedUriRequest("ntminer", fileName, SignHttpMethod.Get);
  85. var uri = WebApiRoot.OssClient.GeneratePresignedUri(req);
  86. return uri.ToString();
  87. }
  88. catch (Exception e) {
  89. Logger.ErrorDebugLine(e);
  90. return string.Empty;
  91. }
  92. }
  93. [HttpPost]
  94. public string MinerClientFinderUrl() {
  95. try {
  96. string fileName;
  97. if (!VirtualRoot.LocalAppSettingSet.TryGetAppSetting(NTKeyword.MinerClientFinderFileNameAppSettingKey, out IAppSetting setting)) {
  98. fileName = NTKeyword.MinerClientFinderFileName;
  99. }
  100. else {
  101. fileName = (string)setting.Value;
  102. }
  103. var req = new GeneratePresignedUriRequest("ntminer", fileName, SignHttpMethod.Get);
  104. var uri = WebApiRoot.OssClient.GeneratePresignedUri(req);
  105. return uri.ToString();
  106. }
  107. catch (Exception e) {
  108. Logger.ErrorDebugLine(e);
  109. return string.Empty;
  110. }
  111. }
  112. [HttpPost]
  113. public string LiteDbExplorerUrl() {
  114. try {
  115. var req = new GeneratePresignedUriRequest("ntminer", "LiteDBExplorerPortable.zip", SignHttpMethod.Get);
  116. var uri = WebApiRoot.OssClient.GeneratePresignedUri(req);
  117. return uri.ToString();
  118. }
  119. catch (Exception e) {
  120. Logger.ErrorDebugLine(e);
  121. return string.Empty;
  122. }
  123. }
  124. [HttpPost]
  125. public string PackageUrl([FromBody]PackageUrlRequest request) {
  126. try {
  127. if (request == null || string.IsNullOrEmpty(request.Package)) {
  128. return string.Empty;
  129. }
  130. var req = new GeneratePresignedUriRequest("ntminer", $"packages/{request.Package}", SignHttpMethod.Get) {
  131. Expiration = DateTime.Now.AddMinutes(10)
  132. };
  133. var uri = WebApiRoot.OssClient.GeneratePresignedUri(req);
  134. return uri.ToString();
  135. }
  136. catch (Exception e) {
  137. Logger.ErrorDebugLine(e);
  138. return string.Empty;
  139. }
  140. }
  141. }
  142. }