Esempio n. 1
0
        /// <summary>
        /// 发起待办
        /// </summary>
        /// <param name="userid"></param>
        /// <param name="title"></param>
        /// <param name="url"></param>
        /// <param name="formItemList"></param>
        /// <param name="time"></param>
        /// <returns></returns>
        public ApiResult <String> WorkRecordAdd(String userid, String title, String url, List <Models.FormItemVo> formItemList, Int64 time = 0)
        {
            var res = GetResponseFromAsyncTask(CallAsync <WorkRecordAddRequest, WorkRecordAddResponse>("workrecord_add", new WorkRecordAddRequest()
            {
                userid       = userid,
                title        = title,
                url          = url,
                formItemList = formItemList,
                create_time  = time > 0 ? time : DateTools.GetUnix() * 1000,
                access_token = string.IsNullOrEmpty(this.SuiteTicket) ? GetToken() : GetCorpToken()
            }, System.Net.Http.HttpMethod.Get));
            var rlt = new ApiResult <String> {
                message = res.message
            };

            if (res.success && res.data != null)
            {
                if (res.data.errcode != 0)
                {
                    rlt.code    = res.data.errcode.ToString();
                    rlt.message = res.data.errmsg;
                }
                else if (!string.IsNullOrEmpty(res.data.record_id))
                {
                    rlt.data    = res.data.record_id;
                    rlt.success = true;
                }
            }
            return(rlt);
        }
Esempio n. 2
0
        private static String CreateUrl(bool https, string host, string token, string controller, string action, List <KeyValuePair <String, String> > kvList)
        {
            var url = (https ? "https" : "http") + "://" + host + "/" + controller + "/" + action;

            #region 处理接口基本参数及签名
            if (!string.IsNullOrEmpty(token))
            {
                kvList.Add(new KeyValuePair <String, String>("timespan", DateTools.GetUnix().ToString()));
                kvList = kvList.OrderBy(o => o.Key).ToList();
                var values = new System.Text.StringBuilder();
                foreach (var kv in kvList)
                {
                    if (!string.IsNullOrEmpty(kv.Key))
                    {
                        values.Append(kv.Value);
                    }
                }
                values.Append(token);
                kvList.Add(new KeyValuePair <String, String>("sig", Wlniao.Encryptor.Md5Encryptor32(values.ToString())));
            }
            #endregion
            #region 拼接请求参数
            foreach (var kv in kvList)
            {
                url += url.IndexOf('?') > 0 ? "&" : "?";
                url += kv.Key + "=" + kv.Value;
            }
            #endregion
            log.Debug(url);
            return(url);
        }
Esempio n. 3
0
 public void Loger()
 {
     for (var i = 0; i < 10000; i++)
     {
         Wlniao.log.Topic("test", DateTools.GetUnix() + strUtil.CreateRndStrE(16));
     }
     Assert.Pass();
     //Assert.Pass();
 }
Esempio n. 4
0
        /// <summary>
        /// 从连接池获取一个实例
        /// </summary>
        /// <param name="host"></param>
        /// <param name="port"></param>
        /// <param name="TimeOutSeconds"></param>
        /// <returns></returns>
        public static WlnSocket GetSocket(String host, Int32 port, Int32 TimeOutSeconds = 10)
        {
            var now      = DateTools.GetUnix();
            var endpoint = new System.Net.IPEndPoint(strUtil.IsIP(host) ? System.Net.IPAddress.Parse(host) : new Net.Dns.DnsTool().GetIPAddressDefault(host), port);

            lock (sockets)
            {
                try
                {
beginCheck:
                    foreach (var socket in sockets.OrderBy(a => a.LastUse))
                    {
                        if (socket.LastUse < now - 30 && socket.Connected)
                        {
                            try { socket.Shutdown(System.Net.Sockets.SocketShutdown.Both); } catch { }
                        }
                        if (socket.RemoteEndPoint.ToString() == endpoint.ToString() && !socket.Using && socket.Connected && socket.LastUse < now - 3)
                        {
                            socket.Using   = true;
                            socket.LastUse = now;
                            return(socket);
                        }
                        if (!socket.Connected)
                        {
                            sockets.Remove(socket);
                            try { socket.IOControl(System.Net.Sockets.IOControlCode.KeepAliveValues, BitConverter.GetBytes(30), null); } catch { }
                            socket.Dispose();
                            goto beginCheck;
                        }
                    }
                    var newsocket = new WlnSocket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp);
                    newsocket.Using   = true;
                    newsocket.LastUse = now;
                    newsocket.Connect(endpoint);
                    newsocket.SendTimeout    = TimeOutSeconds * 1000; //10s
                    newsocket.ReceiveTimeout = TimeOutSeconds * 1000; //10s
                    sockets.Add(newsocket);
                    return(newsocket);
                }
                catch { return(null); }
            }
        }
Esempio n. 5
0
File: Sid.cs Progetto: fkdl/xcore
 /// <summary>
 /// 根据手机号生成Sid
 /// </summary>
 /// <returns></returns>
 public static String Get(String Mobile)
 {
     if (strUtil.IsMobile(Mobile))
     {
         var _rlt = Wlniao.OpenApi.Common.Get <String>("sid", "get", new KeyValuePair <string, string>("mobile", Mobile));
         if (_rlt.success)
         {
             return(_rlt.data);
         }
         else
         {
             var r  = new Random();
             var ts = cvt.ToHex(DateTools.GetUnix(), "0123456789abcdef");
             var ms = cvt.ToHex(long.Parse("86" + Mobile), "0123456789abcdef");
             var v1 = cvt.ToHex(r.Next(4096, 26214), "0123456789abcdef");
             var v2 = cvt.ToHex(r.Next(26214, 43690), "0123456789abcdef");
             var v3 = cvt.ToHex(r.Next(43690, 65535), "0123456789abcdef");
             return(ts + "-" + v1 + "-" + v2 + "-" + v3 + "-" + ms);
         }
     }
     return(System.Guid.NewGuid().ToString());
 }
Esempio n. 6
0
        private static String RequestGet(String url)
        {
            var str = "";

            try
            {
                if (url.StartsWith("https://"))
                {
                    #region HTTPS请求
                    var uri        = new Uri(url);
                    var hostSocket = Wlniao.Net.WlnSocket.GetSocket(uri.Host, uri.Port);
                    var reqStr     = "";
                    reqStr += "GET " + uri.PathAndQuery + " HTTP/1.1";
                    reqStr += "\r\nHost: " + uri.Host;
                    reqStr += "\r\nDate: " + DateTools.ConvertToGMT(DateTools.GetUnix());
                    reqStr += "\r\nAccept: application/json";
                    reqStr += "\r\n";
                    reqStr += "\r\n";
                    var request = System.Text.Encoding.UTF8.GetBytes(reqStr);
                    using (var ssl = new System.Net.Security.SslStream(new System.Net.Sockets.NetworkStream(hostSocket, true), false, new System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate), null))
                    {
                        ssl.AuthenticateAsClientAsync(uri.Host).ContinueWith((_rlt) =>
                        {
                            if (ssl.IsAuthenticated)
                            {
                                ssl.Write(request);
                                ssl.Flush();
                                var length  = 0;
                                var end     = false;
                                var start   = false;
                                var chunked = false;
                                while (true)
                                {
                                    var rev   = new byte[65535];
                                    var index = ssl.Read(rev, 0, rev.Length);
                                    if (index == 0)
                                    {
                                        break;
                                    }
                                    var beffur = new byte[index];
                                    Buffer.BlockCopy(rev, 0, beffur, 0, index);
                                    var tempstr = strUtil.GetUTF8String(beffur);
                                    var lines   = tempstr.Split(new string[] { "\r\n" }, StringSplitOptions.None);
                                    index       = 0;
                                    #region Headers处理
                                    if (!start && lines[0].StartsWith("HTTP"))
                                    {
                                        var ts = lines[0].Split(' ');
                                        if (ts[1] == "200")
                                        {
                                            for (index = 1; index < lines.Length; index++)
                                            {
                                                if (lines[index].ToLower().StartsWith("content-length"))
                                                {
                                                    ts     = lines[index].Split(' ');
                                                    length = cvt.ToInt(ts[1]);
                                                }
                                                else if (lines[index].ToLower().StartsWith("transfer-encoding"))
                                                {
                                                    chunked = lines[index].EndsWith("chunked");
                                                }
                                                if (string.IsNullOrEmpty(lines[index]))
                                                {
                                                    index++;
                                                    start = true;
                                                    break;
                                                }
                                            }
                                        }
                                        else
                                        {
                                            index = lines.Length;
                                            break;
                                        }
                                    }
                                    #endregion
                                    #region 取文本内容
                                    for (; index < lines.Length; index++)
                                    {
                                        var line = lines[index];
                                        if (chunked)
                                        {
                                            index++;
                                            if (index < lines.Length)
                                            {
                                                var tempLength = cvt.DeHex(line, "0123456789abcdef");
                                                if (tempLength > 0)
                                                {
                                                    length += (int)tempLength;
                                                    line    = lines[index];
                                                }
                                                else if (lines.Length == index + 2 && string.IsNullOrEmpty(lines[index + 1]))
                                                {
                                                    end = true;
                                                    break;
                                                }
                                                else
                                                {
                                                    break;
                                                }
                                            }
                                            else
                                            {
                                                break;
                                            }
                                        }
                                        if (index == 0 || (chunked && index == 1) || str.Length == 0)
                                        {
                                            str += line;
                                        }
                                        else
                                        {
                                            str += "\r\n" + line;
                                        }
                                        if (!chunked && System.Text.Encoding.UTF8.GetBytes(str).Length >= length)
                                        {
                                            end = true;
                                        }
                                    }
                                    if (end)
                                    {
                                        break;
                                    }
                                    #endregion
                                }
                            }
                        }).Wait();
                    }
                    hostSocket.Using = false;
                    #endregion
                }
                else
                {
                    #region HTTP请求
                    var response = new System.Net.Http.HttpClient().GetAsync(url).GetAwaiter().GetResult();
                    str = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
                    #endregion
                }
                if (string.IsNullOrEmpty(str))
                {
                    str = "{\"success\":false,\"message\":\"empty response\",\"data\":\"\"}";
                }
                else
                {
                    log.Info(str);
                }
            }
            catch (Exception ex)
            {
                str = "{\"success\":false,\"message\":\"request exception\",\"data\":\"" + ex.Message + "\"}";
            }
            return(str);
        }
Esempio n. 7
0
        /// <summary>
        /// 发起Get请求
        /// </summary>
        /// <param name="ApiHost"></param>
        /// <param name="ApiPath"></param>
        /// <param name="AppKey"></param>
        /// <param name="AppSecret"></param>
        /// <param name="kvs"></param>
        /// <returns></returns>
        public static ApiResult <String> GetString(String ApiHost, String ApiPath, String AppKey, String AppSecret, params KeyValuePair <String, String>[] kvs)
        {
            var rlt = new ApiResult <String>()
            {
                success = false, message = "", data = ""
            };

            if (string.IsNullOrEmpty(AppKey))
            {
                rlt.message = "云市场API应用AppKey未设置";
            }
            else if (string.IsNullOrEmpty(AppSecret))
            {
                rlt.message = "云市场API应用AppSecret未设置";
            }
            else
            {
                using (var client = new System.Net.Http.HttpClient())
                {
                    try
                    {
                        var time  = DateTools.GetUnix();
                        var nonce = System.Guid.NewGuid().ToString();

                        var httpMethod  = "GET";
                        var accept      = "application/json";
                        var contentMD5  = "";
                        var contentType = "application/json; charset=utf-8";
                        var date        = DateTools.ConvertToGMT();
                        var headers     = new List <KeyValuePair <String, String> >();
                        headers.Add(new KeyValuePair <String, String>("X-Ca-Key", AppKey));
                        headers.Add(new KeyValuePair <String, String>("X-Ca-Nonce", nonce));
                        headers.Add(new KeyValuePair <String, String>("X-Ca-Timestamp", time.ToString() + "000"));
                        //headers.Add(new KeyValuePair<String, String>("X-Ca-Stage", "RELEASE"));
                        //headers.Add(new KeyValuePair<String, String>("X-Ca-Request-Mode", "debug"));
                        headers.Sort((KeyValuePair <string, string> a, KeyValuePair <string, string> b) => { return(string.Compare(a.Key, b.Key, StringComparison.Ordinal)); });
                        var headSign = "";
                        foreach (var header in headers)
                        {
                            headSign += header.Key + ":" + header.Value + "\n";
                        }
                        var url     = "";
                        var urlSign = "";
                        var _kvs    = new List <KeyValuePair <String, String> >(kvs);
                        _kvs.Sort((KeyValuePair <string, string> a, KeyValuePair <string, string> b) => { return(string.Compare(a.Key, b.Key, StringComparison.Ordinal)); });
                        foreach (var kv in _kvs)
                        {
                            url += kv.Key + "=" + kv.Value + "&";
                            if (string.IsNullOrEmpty(kv.Value))
                            {
                                urlSign += kv.Key + "&";
                            }
                            else
                            {
                                urlSign += kv.Key + "=" + kv.Value + "&";
                            }
                        }
                        url     = (ApiHost + ApiPath + "?" + url).TrimEnd('&', '?');
                        urlSign = (ApiPath + "?" + urlSign).TrimEnd('&', '?');



                        var hmac = new System.Security.Cryptography.HMACSHA256()
                        {
                            Key = Encoding.UTF8.GetBytes(AppSecret.ToCharArray())
                        };
                        var signStr = httpMethod + "\n" + accept + "\n" + contentMD5 + "\n" + contentType + "\n" + date + "\n" + headSign + urlSign;
                        var sign    = System.Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(signStr.ToCharArray())));
                        #region
                        var uri        = new Uri(url);
                        var hostSocket = Net.WlnSocket.GetSocket(uri.Host, uri.Port);
                        try
                        {
                            var reqStr = "";
                            reqStr += "GET " + uri.PathAndQuery + " HTTP/1.1";
                            reqStr += "\r\nHost: " + uri.Host;
                            reqStr += "\r\nDate: " + date;
                            reqStr += "\r\nAccept: " + accept;
                            reqStr += "\r\nContent-MD5: " + contentMD5;
                            reqStr += "\r\nContent-Type: " + contentType;
                            foreach (var header in headers)
                            {
                                reqStr += "\r\n" + header.Key + ": " + header.Value;
                            }
                            reqStr += "\r\nX-Ca-Signature: " + sign;
                            reqStr += "\r\nX-Ca-Signature-Headers: " + strUtil.Join(",", headers.Select(a => a.Key).ToArray());
                            reqStr += "\r\n";
                            reqStr += "\r\n";
                            var request = Encoding.UTF8.GetBytes(reqStr);
                            if (hostSocket.Send(request, request.Length, System.Net.Sockets.SocketFlags.None) > 0)
                            {
                                var str     = "";
                                var length  = 0;
                                var end     = false;
                                var start   = false;
                                var chunked = false;
                                while (true)
                                {
                                    var rev   = new byte[65535];
                                    var index = hostSocket.Receive(rev, rev.Length, System.Net.Sockets.SocketFlags.None);
                                    if (index == 0)
                                    {
                                        break;
                                    }
                                    var tempstr = strUtil.GetUTF8String(rev, 0, index);
                                    var lines   = tempstr.Split(new string[] { "\r\n" }, StringSplitOptions.None);
                                    index = 0;
                                    #region Headers处理
                                    if (!start && lines[0].StartsWith("HTTP"))
                                    {
                                        var ts = lines[0].Split(' ');
                                        if (ts[1] == "200")
                                        {
                                            for (index = 1; index < lines.Length; index++)
                                            {
                                                if (lines[index].ToLower().StartsWith("content-length"))
                                                {
                                                    ts     = lines[index].Split(' ');
                                                    length = cvt.ToInt(ts[1]);
                                                }
                                                else if (lines[index].ToLower().StartsWith("transfer-encoding"))
                                                {
                                                    chunked = lines[index].EndsWith("chunked");
                                                }
                                                if (string.IsNullOrEmpty(lines[index]))
                                                {
                                                    index++;
                                                    start = true;
                                                    break;
                                                }
                                            }
                                        }
                                        else
                                        {
                                            foreach (var line in lines)
                                            {
                                                if (line.SplitBy(":")[0] == "X-Ca-Error-Message")
                                                {
                                                    rlt.message = line.Substring(line.IndexOf(' ') + 1);
                                                    return(rlt);
                                                }
                                            }
                                            rlt.message = lines.LastOrDefault();
                                            index       = lines.Length;
                                            break;
                                        }
                                    }
                                    #endregion
                                    #region 取文本内容
                                    for (; index < lines.Length; index++)
                                    {
                                        var line = lines[index];
                                        if (chunked)
                                        {
                                            index++;
                                            if (index < lines.Length)
                                            {
                                                var tempLength = cvt.DeHex(line, "0123456789abcdef");
                                                if (tempLength > 0)
                                                {
                                                    length += (int)tempLength;
                                                    line    = lines[index];
                                                }
                                                else if (lines.Length == index + 2 && string.IsNullOrEmpty(lines[index + 1]))
                                                {
                                                    end = true;
                                                    break;
                                                }
                                                else
                                                {
                                                    break;
                                                }
                                            }
                                            else
                                            {
                                                break;
                                            }
                                        }
                                        if (index == 0 || (chunked && index == 1) || str.Length == 0)
                                        {
                                            str += line;
                                        }
                                        else
                                        {
                                            str += "\r\n" + line;
                                        }
                                        if (!chunked && System.Text.Encoding.UTF8.GetBytes(str).Length >= length)
                                        {
                                            end = true;
                                        }
                                    }
                                    if (end)
                                    {
                                        break;
                                    }
                                    #endregion
                                }
                                if (!string.IsNullOrEmpty(str))
                                {
                                    rlt.success = true;
                                    rlt.message = "";
                                    rlt.data    = str;
                                }
                            }
                            hostSocket.Using = false;
                        }
                        catch (Exception ex)
                        {
                            hostSocket.Using = false;
                            rlt.message      = ex.Message;
                        }
                        #endregion
                    }
                    catch { }
                }
            }
            return(rlt);
        }
Esempio n. 8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            _rlt.success = false;
            _rlt.message = "";
            _rlt.data    = "";
            var AppId    = GetRequest("xsappid");
            var TimeSpan = GetRequest("xstime");

            if (string.IsNullOrEmpty(AppId))
            {
                _rlt.message = "xsappid is missing";
                var result = new ContentResult();
                result.Content       = Wlniao.Json.ToString(_rlt);
                filterContext.Result = result;
            }
            else if (cvt.ToLong(TimeSpan) < DateTools.GetUnix() - 3600)
            {
                _rlt.message = "request is expired";
                var result = new ContentResult();
                result.Content       = Wlniao.Json.ToString(_rlt);
                filterContext.Result = result;
            }
            else
            {
                if (_cache.ContainsKey(AppId))
                {
                    app = _cache[AppId];
                }
                else
                {
                    if (AppId == XServer.Common.AppId)
                    {
                        //使用同一对AppId及Secret
                        app         = new XsApp();
                        app.appid   = XServer.Common.AppId;
                        app.secret  = XServer.Common.Secret;
                        app.domain  = "";
                        app.xclient = false;
                        app.appname = "Default";
                    }
                    else
                    {
                        var rlt = XServer.XsApp.GetById(AppId);
                        if (rlt.success)
                        {
                            app = rlt.data;
                            _rlt.PutLog(rlt.logs);
                            if (app.xclient && filterContext.ActionDescriptor.FilterDescriptors.Where(a => a.Filter.ToString().Contains("Wlniao.Mvc.XClientAttribute")).ToList().Count() == 0)
                            {
                                _rlt.message = "not allow xclient app";
                                var result = new ContentResult();
                                result.Content       = Wlniao.Json.ToString(_rlt);
                                filterContext.Result = result;
                                return;
                            }
                        }
                    }
                }
                if (app == null || app.appid.IsNullOrEmpty())
                {
                    _rlt.message = "xsappid is invalid";
                    var result = new ContentResult();
                    result.Content       = Wlniao.Json.ToString(_rlt);
                    filterContext.Result = result;
                }
                else
                {
                    var list = new List <KeyValuePair <String, String> >();
                    foreach (string key in Request.Query.Keys)
                    {
                        list.Add(new KeyValuePair <string, string>(key, Request.Query[key]));
                    }
                    list.Sort(delegate(KeyValuePair <String, String> small, KeyValuePair <String, String> big) { return(small.Key.CompareTo(big.Key)); });
                    var values = new System.Text.StringBuilder();
                    foreach (var param in list)
                    {
                        if (!string.IsNullOrEmpty(param.Value) && param.Key != "sig")
                        {
                            values.Append(param.Value);
                        }
                    }
                    values.Append(app.secret);
                    var md5_result  = System.Security.Cryptography.MD5.Create().ComputeHash(System.Text.Encoding.UTF8.GetBytes(values.ToString()));
                    var sig_builder = new System.Text.StringBuilder();
                    foreach (byte b in md5_result)
                    {
                        sig_builder.Append(b.ToString("x2"));
                    }
                    if (GetRequest("sig") != sig_builder.ToString())
                    {
                        if (_cache.ContainsKey(AppId))
                        {
                            _cache.Remove(AppId);
                        }
                        _rlt.message = "signature error";
                        var result = new ContentResult();
                        result.Content       = Wlniao.Json.ToString(_rlt);
                        filterContext.Result = result;
                    }
                    else if (!_cache.ContainsKey(AppId))
                    {
                        _cache.Add(AppId, app);
                    }
                }
            }
            base.OnActionExecuting(filterContext);
        }
Esempio n. 9
0
        /// <summary>
        /// 通过Socket发送Http请求
        /// </summary>
        /// <param name="url"></param>
        /// <param name="kvs"></param>
        /// <returns></returns>
        public static String HttpGet(String url, params KeyValuePair <String, String>[] kvs)
        {
            var sb         = new System.Text.StringBuilder();
            var uri        = new Uri(url);
            var hostSocket = Net.WlnSocket.GetSocket(uri.Host, uri.Port);

            try
            {
                var reqStr = "";
                reqStr += "GET " + uri.PathAndQuery + " HTTP/1.1";
                reqStr += "\r\nHost: " + uri.Host;
                reqStr += "\r\nDate: " + DateTools.ConvertToGMT(DateTools.GetUnix());
                reqStr += "\r\nAccept: application/json";
                if (kvs != null)
                {
                    foreach (var kv in kvs)
                    {
                        reqStr += "\r\n" + kv.Key + ": " + kv.Value;
                    }
                }
                reqStr += "\r\n";
                reqStr += "\r\n";
                var request = Encoding.UTF8.GetBytes(reqStr);
                if (hostSocket.Send(request, request.Length, System.Net.Sockets.SocketFlags.None) > 0)
                {
                    var length  = 0;
                    var end     = false;
                    var start   = false;
                    var chunked = false;
                    while (true)
                    {
                        var rev   = new byte[65535];
                        var index = hostSocket.Receive(rev, rev.Length, System.Net.Sockets.SocketFlags.None);
                        if (index == 0)
                        {
                            break;
                        }
                        var tempstr = Encoding.UTF8.GetString(rev, 0, index);
                        var lines   = tempstr.Split(new string[] { "\r\n" }, StringSplitOptions.None);
                        index = 0;
                        #region Headers处理
                        if (!start && lines[0].StartsWith("HTTP"))
                        {
                            var ts = lines[0].Split(' ');
                            if (ts[1] == "200")
                            {
                                for (index = 1; index < lines.Length; index++)
                                {
                                    if (lines[index].ToLower().StartsWith("content-length"))
                                    {
                                        ts     = lines[index].Split(' ');
                                        length = cvt.ToInt(ts[1]);
                                    }
                                    else if (lines[index].ToLower().StartsWith("transfer-encoding"))
                                    {
                                        chunked = lines[index].EndsWith("chunked");
                                    }
                                    if (string.IsNullOrEmpty(lines[index]))
                                    {
                                        index++;
                                        start = true;
                                        break;
                                    }
                                }
                            }
                            else
                            {
                                index = lines.Length;
                                break;
                            }
                        }
                        #endregion
                        #region 取文本内容
                        for (; index < lines.Length; index++)
                        {
                            var line = lines[index];
                            if (chunked)
                            {
                                index++;
                                if (index < lines.Length)
                                {
                                    var tempLength = cvt.DeHex(line, "0123456789abcdef");
                                    if (tempLength > 0)
                                    {
                                        length += (int)tempLength;
                                        line    = lines[index];
                                    }
                                    else if (lines.Length == index + 2 && string.IsNullOrEmpty(lines[index + 1]))
                                    {
                                        end = true;
                                        break;
                                    }
                                    else
                                    {
                                        break;
                                    }
                                }
                                else
                                {
                                    break;
                                }
                            }
                            if (index == 0 || (chunked && index == 1) || sb.Length == 0)
                            {
                                sb.Append(line);
                            }
                            else
                            {
                                sb.Append("\r\n" + line);
                            }
                            if (!chunked && System.Text.Encoding.UTF8.GetBytes(sb.ToString()).Length >= length)
                            {
                                end = true;
                            }
                        }
                        if (end)
                        {
                            break;
                        }
                        #endregion
                    }
                }
                hostSocket.Using = false;
            }
            catch { }
            return(sb.ToString());
        }
Esempio n. 10
0
 /// <summary>
 /// FormAPI参数
 /// </summary>
 /// <param name="expire">过期时间(单位:秒)</param>
 /// <param name="max">文件最大大小</param>
 /// <param name="dir">上传目录</param>
 /// <returns></returns>
 public static String FormApi(int expire, int max, string dir)
 {
     Load();
     max = max * 1024 * 1024;
     if (!string.IsNullOrEmpty(bucketname) && !string.IsNullOrEmpty(formapi))
     {
         if (string.IsNullOrEmpty(dir))
         {
             dir = "/{year}{mon}/{mon}{day}/";
         }
         else
         {
             if (!dir.StartsWith("/"))
             {
                 dir = "/" + dir;
             }
             if (!dir.EndsWith("/"))
             {
                 dir = dir + "/";
             }
         }
         var json      = "{\"bucket\":\"" + bucketname + "\",\"save-key\":\"" + dir + "{random}{.suffix}\",\"expiration\":\"" + (DateTools.GetUnix() + expire) + "\"}";
         var policy    = Encryptor.Base64Encrypt(json);
         var signature = Encryptor.Md5Encryptor32(policy + "&" + formapi);
         return(Json.ToString(new { host = XStorageUrl, bucket = bucketname, policy, signature }));
     }
     return("");
 }
Esempio n. 11
0
 /// <summary>
 /// FormAPI参数
 /// </summary>
 /// <param name="expire">过期时间(单位:秒)</param>
 /// <param name="max">文件最大大小</param>
 /// <returns></returns>
 public static String FormApi(int expire = 5400, int max = 200)
 {
     Load();
     max = max * 1024 * 1024;
     if (!string.IsNullOrEmpty(bucketname) && !string.IsNullOrEmpty(formapi))
     {
         var json      = "{\"bucket\":\"" + bucketname + "\",\"save-key\":\"/{year}{mon}/{mon}{day}/{random}{.suffix}\",\"expiration\":\"" + (DateTools.GetUnix() + expire) + "\"}";
         var policy    = Encryptor.Base64Encrypt(json);
         var signature = Encryptor.Md5Encryptor32(policy + "&" + formapi);
         return(Json.ToString(new { host = XStorageUrl, bucket = bucketname, policy, signature }));
     }
     return("");
 }