#nullable enable using Newtonsoft.Json.Linq; using System.Collections.Generic; using UVC.Network; namespace UVC.Data { public class HttpPipeLine { private Dictionary infoList = new Dictionary(); public void Add(string key, HttpPipeLineInfo info) { if (!infoList.ContainsKey(key)) { infoList.Add(key, info); } else { infoList[key] = info; // Update existing entry } } public void Remove(string key) { if (infoList.ContainsKey(key)) { infoList.Remove(key); } } public async void Excute(string key) { if (infoList.ContainsKey(key)) { HttpPipeLineInfo info = infoList[key]; string result = await HttpRequester.Request(info.url, info.method, info.body, info.headers); IDataObject? dataObject = null; if (!string.IsNullOrEmpty(result)) { result = result.Trim(); if (result.StartsWith("{")) { JObject source = JObject.Parse(result); if (info.dataMapper != null) dataObject = info.dataMapper.Mapping(source); } else if(result.StartsWith("[")) { JArray source = JArray.Parse(result); if (info.dataMapper != null) dataObject = info.dataMapper.Mapping(source); } } if(dataObject != null) dataObject = DataRepository.Instance.AddData(key, dataObject); info.handler?.Invoke(dataObject); } } } }