コード例 #1
0
ファイル: WarnLogDAL.cs プロジェクト: honstat/mvctest
 /// <summary>
 /// 修改
 /// </summary>
 /// <param name="model"></param>
 public static void edit(WarnLog model)
 {
     EditEntry <WarnLog>(model, "Id");
 }
コード例 #2
0
ファイル: WarnLogDAL.cs プロジェクト: honstat/mvctest
 /// <summary>
 /// 新增
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public static WarnLog add(WarnLog model)
 {
     return(AddModel <WarnLog>(model));
 }
コード例 #3
0
ファイル: UpdateManager.cs プロジェクト: tangxiaohui/Koer
 /// 日志回调注册
 /// </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);
 }
コード例 #4
0
 //注册日志回调
 public static void RegisterLogCallback(DefaultLog dLog, WarnLog wLog, ErrorLog eLog)
 {
     _defaultLogFunc = dLog;
     _warnLogFunc    = wLog;
     _errorLogFunc   = eLog;
 }
コード例 #5
0
        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();
            });
        }