/// <summary> /// 修改 /// </summary> /// <param name="model"></param> public static void edit(WarnLog model) { EditEntry <WarnLog>(model, "Id"); }
/// <summary> /// 新增 /// </summary> /// <param name="model"></param> /// <returns></returns> public static WarnLog add(WarnLog model) { return(AddModel <WarnLog>(model)); }
/// 日志回调注册 /// </summary> /// <param name="log1"></param> /// <param name="log2"></param> /// <param name="log3"></param> public void RegisterLog(DefaultLog log1, WarnLog log2, ErrorLog log3) { UpdateLog.RegisterLogCallback(log1, log2, log3); }
//注册日志回调 public static void RegisterLogCallback(DefaultLog dLog, WarnLog wLog, ErrorLog eLog) { _defaultLogFunc = dLog; _warnLogFunc = wLog; _errorLogFunc = eLog; }
public void Send(int id, string method, string url, bool async, object[] headers, object data, dynamic callback) { InfoLog?.Invoke(this, $"{nameof(Send)}(method = {method}, url = {url}, async = {async}) -> [{id}]"); var httpMethod = "GET".Equals(method, StringComparison.OrdinalIgnoreCase) ? HttpMethod.Get : "POST".Equals(method, StringComparison.OrdinalIgnoreCase) ? HttpMethod.Post : throw new NotSupportedException("Unsupported HTTP method: " + method); HttpContent content; switch (data) { case null: content = null; break; case string dataString: content = new StringContent(dataString); break; default: throw new NotSupportedException("Unsupported HTTP method: " + method); } var request = new HttpRequestMessage(httpMethod, url) { Content = content }; foreach (object[] kv in headers as IEnumerable) { var name = (string)kv[0]; var value = (string)kv[1]; var requestHeaders = name.StartsWith("Content-", StringComparison.OrdinalIgnoreCase) || name.Equals("Expires", StringComparison.OrdinalIgnoreCase) || name.Equals("Last-Modified", StringComparison.OrdinalIgnoreCase) || name.Equals("Allow", StringComparison.OrdinalIgnoreCase) ? (HttpHeaders)content.Headers : request.Headers; requestHeaders.Remove(name); requestHeaders.Add(name, value); } var cancellationTokenSource = new CancellationTokenSource(); _cancellationTokenSources.Add(id, cancellationTokenSource); Schedule( $"{nameof(XhrService)}[{id}]", cancellationTokenSource.Token, async cancellationToken => { var response = await HttpClient.SendAsync(request, cancellationToken); var statusCode = (int)response.StatusCode; if (statusCode >= 200 && statusCode < 300) { InfoLog?.Invoke(this, $"[{id}] {statusCode} {response.ReasonPhrase} ({response.Content.Headers.ContentType})"); } else { WarnLog?.Invoke(this, null, $"[{id}] {statusCode} {response.ReasonPhrase} ({response.Content.Headers.ContentType})"); } var str = await response.Content.ReadAsStringAsync(); callback(null, statusCode, response.ReasonPhrase, new[] { new[] { "Content-Type", response.Content.Headers.ContentType.MediaType } }, str); }, onError: e => callback(e.GetBaseException().Message), onFinally: () => { _cancellationTokenSources.Remove(id); cancellationTokenSource.Dispose(); }); }