using LJLib.Client; using LJLib.Net.SPI.Client; using LJLib.Net.SPI.Com; using LJProxy.Models; using LJProxy.Settings; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Newtonsoft.Json; using System.IO; using System.Text; using Newtonsoft.Json.Linq; using LJProxy.Services; namespace LJProxy.Controllers { [Route("api/[controller]")] [ApiController] public class L1SvrController : Controller { private static object _syncRoot = new object(); public static AppSettings _appSettingModel; private LJClientPoolService _ljClient; public L1SvrController(LJClientPoolService ljClient) { _ljClient = ljClient; } [Route("svr/{apiName}")] [HttpPost] [HttpGet] public async Task Svr(string apiName) { string requestBody; using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8)) { requestBody = await reader.ReadToEndAsync(); } //var files = Request.Form.Files; //if (files != null && files.Count > 0) //{ // UploadFilesRequest requestObj = new UploadFilesRequest(); // foreach (var file in files) // { // var path = $"{AppDomain.CurrentDomain.BaseDirectory}test\\{file.FileName}"; // byte[] buffer = new byte[2048]; // using (var fs = file.OpenReadStream()) // { // using (var fsn = System.IO.File.Create(path)) // { // while (true) // { // var size = fs.Read(buffer, 0, buffer.Length); // if (size == 0) // { // break; // } // fsn.Write(buffer, 0, size); // } // fsn.Flush(); // } // } // } //} var uriBuilder = new UriBuilder { Scheme = Request.Scheme, Host = Request.Host.Host, Port = Request.Host.Port.GetValueOrDefault(80), }; var gateway= uriBuilder.Uri; if (!string.IsNullOrEmpty(requestBody)) { var reqObj = JObject.Parse(requestBody); reqObj["gateway"] = gateway; requestBody = JsonConvert.SerializeObject(reqObj); } var rslt = _ljClient.Pool.DoExcute(apiName, requestBody); return Content(rslt, "application/json"); } [HttpPost] [Route("uploadfiles")] public IActionResult UploadFiles() { string token = string.Empty; if (Request.Headers.ContainsKey("Authorization")) { token = Request.Headers["Authorization"]; } var files = Request.Form.Files; if (files != null && files.Count > 0) { UploadFilesRequest requestObj = new UploadFilesRequest(); List fileList = new List(); requestObj.token = token; foreach (var file in files) { FileInfoModel fileInfo = new FileInfoModel(); fileInfo.FileName = file.FileName; using (var fs = file.OpenReadStream()) { byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); fileInfo.FileData = Convert.ToBase64String(buffer); } fileList.Add(fileInfo); } requestObj.FileList = fileList; var requestBody = JsonConvert.SerializeObject(requestObj); var rslt = _ljClient.Pool.DoExcute(requestObj.GetApiName(), requestBody); return Content(rslt, "application/json"); } else { return NotFound(); } } } }