Exemplo n.º 1
0
        async Task <string> upload_firstChunk(string uuid, PartViewStream pvs, long iblock, string uploadToken, string host, string keyname)
        {
            var            uploadUrl = host + $"/mkblk/{block_size}/{iblock}";
            HttpWebRequest req       = WebRequest.CreateHttp(uploadUrl);

            req.Method = "POST";
            req.Headers.Add("Authorization", uploadToken);
            req.Headers.Add("UploadBatch", uuid);
            req.ContentLength = pvs.Length;
            req.ContentType   = "application/octet-stream";
            var reqStream = await req.GetRequestStreamAsync();

            pvs.BlockCopyTo(reqStream);
            reqStream.Close();
            var resp = (HttpWebResponse)await req.GetResponseAsync();

            var respStream = resp.GetResponseStream();
            var sr         = new StreamReader(respStream);
            var retjson    = sr.ReadToEnd();

            sr.Close();
            resp.Close();
            req.Abort();
            Newtonsoft.Json.Linq.JObject json = Newtonsoft.Json.Linq.JObject.Parse(retjson);
            if (!json.ContainsKey("ctx"))
            {
                return(null);
            }
            return(json["ctx"].ToString());
        }
Exemplo n.º 2
0
 protected void AddKeyToJson(Newtonsoft.Json.Linq.JObject Destination, string _KeyName, BPrimitiveType _KeyValue)
 {
     if (Destination != null && !Destination.ContainsKey(_KeyName))
     {
         Destination[_KeyName] = FromBPrimitiveTypeToJToken(_KeyValue);
     }
 }
Exemplo n.º 3
0
        public static DTO.QueryComposer.QueryComposerResponseDTO DeserializeResponse(string json)
        {
            Newtonsoft.Json.Linq.JObject obj = Newtonsoft.Json.Linq.JObject.Parse(json.Trim());

            var serializationSettings = new Newtonsoft.Json.JsonSerializerSettings();

            serializationSettings.Converters.Add(new DTO.QueryComposer.QueryComposerResponsePropertyDefinitionConverter());
            serializationSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.IgnoreAndPopulate;
            Newtonsoft.Json.JsonSerializer serializer = Newtonsoft.Json.JsonSerializer.Create(serializationSettings);

            if (obj.ContainsKey("SchemaVersion"))
            {
                return(obj.ToObject <DTO.QueryComposer.QueryComposerResponseDTO>(serializer));
            }

            var queryResponse = obj.ToObject <DTO.QueryComposer.QueryComposerResponseQueryResultDTO>(serializer);

            var response = new DTO.QueryComposer.QueryComposerResponseDTO
            {
                Header = new QueryComposerResponseHeaderDTO {
                    ID = queryResponse.ID,
                },
                Errors  = Enumerable.Empty <QueryComposerResponseErrorDTO>(),
                Queries = new[] { queryResponse }
            };

            response.RefreshQueryDates();
            response.RefreshErrors();

            return(response);
        }
Exemplo n.º 4
0
        public dynamic DeleteCategory([FromBody] Newtonsoft.Json.Linq.JObject data)
        {
            if (!data.ContainsKey("categoryId"))
            {
                return("Category ID require");
            }

            string categoryId = data["categoryId"].ToString();

            string response = "";
            Dictionary <string, string> parameters = new Dictionary <string, string>();
            WebExceptionStatus          webExceptionStatus;

            parameters.Add("categoryId", categoryId);

            SendRequest(ApiLink, DeleteCategoryMethod, "POST", parameters, out response, out webExceptionStatus);

            if (webExceptionStatus != WebExceptionStatus.Success)
            {
                try
                {
                    ErrorMessage msg = Newtonsoft.Json.JsonConvert.DeserializeObject <ErrorMessage>(response);
                    return(msg);
                }
                catch
                {
                    return(response);
                }
            }
            else
            {
                return("OK");
            }
        }
Exemplo n.º 5
0
        public static async Task <UserToken> RefreshToken(UserToken token)
        {
            var        parameters = new RefreshTokenRequestParameters(token.RefreshToken);
            HttpClient client     = new HttpClient();

            client.BaseAddress = new Uri("https://api.imgur.com");
            string result = "";

            using (HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Post, "oauth2/token"))
            {
                message.Content = new StringContent(JsonConvert.SerializeObject(parameters));
                try
                {
                    var response = await client.SendAsync(message);

                    result = await response.Content.ReadAsStringAsync();
                }
                catch (HttpRequestException ex)
                {
                    throw new OAuthFailedException(OAuthFailureReason.NetworkException, "Network error occured while refreshing access token.", ex);
                }
            }

            string accessToken  = null;
            string refreshToken = null;
            int    expiresIn    = 0;

            using (StringReader stringReader = new StringReader(result))
            {
                Newtonsoft.Json.Linq.JObject obj = Newtonsoft.Json.Linq.JObject.Parse(await stringReader.ReadToEndAsync());
                if (obj.ContainsKey("access_token"))
                {
                    accessToken  = (string)obj["access_token"];
                    refreshToken = (string)obj["refresh_token"];
                    expiresIn    = (int)obj["expires_in"];
                }
            }

            if (accessToken == null)
            {
                throw new OAuthFailedException(OAuthFailureReason.PermissionDenied, "The authorization has been revoked.");
            }
            else
            {
                return(new UserToken()
                {
                    UserId = token.UserId,
                    Username = token.Username,
                    AccessToken = accessToken,
                    RefreshToken = refreshToken,
                    ExpireTime = DateTime.Now + new TimeSpan(0, 0, expiresIn)
                });
            }
        }
Exemplo n.º 6
0
        private static APIResult <T> GetObjectFromJson <T>(string objectString)
        {
            string details = "";
            T      obj;

            objectString = objectString.Replace("_", string.Empty);
            Newtonsoft.Json.Linq.JObject json = Newtonsoft.Json.Linq.JObject.Parse(objectString);
            if (json.ContainsKey(Program.ADDITIONAL_INFO_KEY))
            {
                details = json.GetValue(Program.ADDITIONAL_INFO_KEY).ToString();
            }
            obj = JsonConvert.DeserializeObject <T>(objectString);
            return(new APIResult <T>(obj, details));
        }
Exemplo n.º 7
0
        public dynamic UpdateCategory([FromBody] Newtonsoft.Json.Linq.JObject data)
        {
            if (!data.ContainsKey("category"))
            {
                return("Category require");
            }

            Category category = Newtonsoft.Json.JsonConvert.DeserializeObject <Category>(data["category"].ToString());

            if (string.IsNullOrEmpty(category.CategoryName))
            {
                return("Category name require");
            }

            if (string.IsNullOrEmpty(category.CategoryId))
            {
                return("Category ID require");
            }

            string response = "";
            Dictionary <string, string> parameters = new Dictionary <string, string>();
            WebExceptionStatus          webExceptionStatus;

            parameters.Add("category", Newtonsoft.Json.JsonConvert.SerializeObject(category));

            SendRequest(ApiLink, UpdateCategoryMethod, "POST", parameters, out response, out webExceptionStatus);

            ErrorMessage msg = new ErrorMessage();

            if (webExceptionStatus != WebExceptionStatus.Success)
            {
                try
                {
                    msg = Newtonsoft.Json.JsonConvert.DeserializeObject <ErrorMessage>(response);
                    return(msg);
                }
                catch
                {
                    return(response);
                }
            }
            else
            {
                return("OK");
            }
        }
Exemplo n.º 8
0
        private async Task <string> upload_restChunk(string uuid, PartViewStream pvs, string ctx, string uploadToken, string host, int ichunk, string keyname)
        {
            ///POST /bput/<ctx>/<nextChunkOffset>
            ///Host: <UploadDomain>
            ///Authorization:<UploadToken>
            ///Content-Length:<ChunkSize>
            ///Content-Type:application/octet-stream
            ///UploadBatch:<uuid>
            ///Key:<key>
            ///
            ///<ChunkBinary>

            var            uploadUrl = host + $"/bput/{ctx}/{ichunk * chunk_size}";
            HttpWebRequest req       = WebRequest.CreateHttp(uploadUrl);

            req.Method = "POST";
            //req.Headers.Add("Qingzhen-Token", recentToken);
            req.ContentLength = pvs.Length;
            req.Headers.Add("Authorization", uploadToken);
            req.ContentType = "application/octet-stream";
            req.Headers.Add("UploadBatch", uuid);
            //req.Headers.Add("Key", UrlSafeBase64.encode(keyname));
            var reqStream = await req.GetRequestStreamAsync();

            //await pvs.CopyToAsync(reqStream);
            // CopyTo(reqSteam) 使用在这个请求里可能发生异常,故用自己写的BlockCopyTo
            pvs.BlockCopyTo(reqStream);
            reqStream.Close();
            HttpWebResponse resp = (HttpWebResponse)await req.GetResponseAsync();

            var respStream = resp.GetResponseStream();
            var sr         = new StreamReader(respStream);
            var retjson    = await sr.ReadToEndAsync();

            sr.Close();
            resp.Close();
            req.Abort();
            Newtonsoft.Json.Linq.JObject json = Newtonsoft.Json.Linq.JObject.Parse(retjson);
            if (!json.ContainsKey("ctx"))
            {
                return(null);
            }
            return(json["ctx"].ToString());
        }
Exemplo n.º 9
0
        protected override Condition Create(Type objectType, Newtonsoft.Json.Linq.JObject jObject)
        {
            foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
            {
                foreach (Type t in assembly.GetTypes())
                {
                    if (t.IsSubclassOf(typeof(Condition)))
                    {
                        var name = jObject.ContainsKey("name") ? jObject.Value <string>("name") : jObject.Value <string>("Name");
                        if (!t.IsGenericTypeDefinition && name == ((Condition)Activator.CreateInstance(t)).Name)
                        {
                            return((Condition)Activator.CreateInstance(t));
                        }
                    }
                }
            }

            throw new Exception("Routed request configuration was not found");
        }
Exemplo n.º 10
0
        static StackObject *ContainsKey_2(ILIntepreter __intp, StackObject *__esp, IList <object> __mStack, CLRMethod __method, bool isNewObj)
        {
            ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
            StackObject *ptr_of_this_method;
            StackObject *__ret = ILIntepreter.Minus(__esp, 2);

            ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
            System.String @propertyName = (System.String) typeof(System.String).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
            __intp.Free(ptr_of_this_method);

            ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
            Newtonsoft.Json.Linq.JObject instance_of_this_method = (Newtonsoft.Json.Linq.JObject) typeof(Newtonsoft.Json.Linq.JObject).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
            __intp.Free(ptr_of_this_method);

            var result_of_this_method = instance_of_this_method.ContainsKey(@propertyName);

            __ret->ObjectType = ObjectTypes.Integer;
            __ret->Value      = result_of_this_method ? 1 : 0;
            return(__ret + 1);
        }
Exemplo n.º 11
0
        public void awsLambdaHandler(Stream inputStream)
        {
            Console.WriteLine("starting via lambda");

            string argument = "create-and-post-appraisal-for-lambda";

            using (StreamReader reader = new StreamReader(inputStream, System.Text.Encoding.UTF8))
            {
                string inputString = reader.ReadToEnd();

                Console.WriteLine("Input: " + inputString);

                Newtonsoft.Json.Linq.JObject jsonObject = Newtonsoft.Json.Linq.JObject.Parse(inputString);

                if (jsonObject.ContainsKey("argument"))
                {
                    argument = jsonObject.Value <string>("argument");
                }
            }

            Console.WriteLine("Argument: " + argument);

            Main(new string[] { argument });
        }
Exemplo n.º 12
0
        public dynamic ExecuteCustomScriptQuery([FromBody] Newtonsoft.Json.Linq.JObject data)
        {
            if (!data.ContainsKey("script"))
            {
                return("Script require");
            }

            string script = data["script"].ToString();

            string response = "";
            Dictionary <string, string> parameters = new Dictionary <string, string>();
            WebExceptionStatus          webExceptionStatus;

            parameters.Add("script", script);

            SendRequest(ApiLink, ExecuteCustomScriptQueryMethod, "POST", parameters, out response, out webExceptionStatus);

            ErrorMessage msg = new ErrorMessage();

            if (webExceptionStatus != WebExceptionStatus.Success)
            {
                try
                {
                    msg = Newtonsoft.Json.JsonConvert.DeserializeObject <ErrorMessage>(response);
                    return(msg);
                }
                catch
                {
                    return(response);
                }
            }
            else
            {
                return(Newtonsoft.Json.JsonConvert.DeserializeObject(response));
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// Deserializes a request, it will convert a previous schema version to the current RequestDTO.
        /// </summary>
        /// <param name="json">The json to deserialize to a <see cref="DTO.QueryComposer.QueryComposerRequestDTO"/>.</param>
        /// <returns></returns>
        public static DTO.QueryComposer.QueryComposerRequestDTO DeserializeRequest(string json)
        {
            Newtonsoft.Json.Linq.JObject obj = Newtonsoft.Json.Linq.JObject.Parse(json.Trim());

            var serializationSettings = new Newtonsoft.Json.JsonSerializerSettings();

            serializationSettings.Converters.Add(new DTO.QueryComposer.QueryComposerResponsePropertyDefinitionConverter());
            serializationSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.IgnoreAndPopulate;
            Newtonsoft.Json.JsonSerializer serializer = Newtonsoft.Json.JsonSerializer.Create(serializationSettings);

            if (obj.ContainsKey("SchemaVersion"))
            {
                return(obj.ToObject <DTO.QueryComposer.QueryComposerRequestDTO>(serializer));
            }

            var query = obj.ToObject <DTO.QueryComposer.QueryComposerQueryDTO>(serializer);

            var requestDTO = new DTO.QueryComposer.QueryComposerRequestDTO
            {
                Header = new DTO.QueryComposer.QueryComposerRequestHeaderDTO
                {
                    ID          = query.Header.ID,
                    Name        = query.Header.Name,
                    Description = query.Header.Description,
                    DueDate     = query.Header.DueDate,
                    Priority    = query.Header.Priority,
                    SubmittedOn = query.Header.SubmittedOn,
                    ViewUrl     = query.Header.ViewUrl
                },
                Queries = new[] {
                    query
                }
            };

            return(requestDTO);
        }
Exemplo n.º 14
0
        private async Task <bool> upload_mkfile(string uuid, long fileSize, List <string> ctxs, string host, string uploadToken)
        {
            ///POST /mkfile/<fileSize>/<UserParam>/<encodedUserVars>
            ///Host: <UploadDomain>
            ///Authorization:<UploadToken>
            ///Content-Length:<ctxListSize>
            ///Content-Type:text/plain;charset=UTF-8
            ///UploadBatch:<uuid>
            ///Key:<key>
            ///MimeType:<mimeType>
            ///Deadline:<Deadline>
            ///
            ///<ctxList>
            var            uploadUrl = host + $"/mkfile/{fileSize}";
            HttpWebRequest req       = WebRequest.CreateHttp(uploadUrl);

            req.Method = "POST";
            req.Headers.Add("Qingzhen-Token", recentToken);
            //req.Host = host;
            req.Headers.Add("Authorization", uploadToken);
            var sb = new StringBuilder();

            foreach (var ctx in ctxs)
            {
                sb.Append(ctx).Append(',');
            }
            sb.Length = sb.Length - 1;
            var tt  = sb.ToString();
            var buf = System.Text.Encoding.UTF8.GetBytes(tt);

            req.ContentLength = buf.Length;
            req.ContentType   = "text/plain;charset=UTF-8";
            req.Headers.Add("UploadBatch", uuid);
            //req.Headers.Add("Deadline", "30"); //文件保存期限。
            var reqStream = await req.GetRequestStreamAsync();

            await reqStream.WriteAsync(buf);

            reqStream.Close();
            HttpWebResponse resp = null;

            try
            {
                resp = (HttpWebResponse)await req.GetResponseAsync();
            }
            catch (Exception e)
            {
                System.Windows.MessageBox.Show(e.Message);
            }
            var respStream = resp.GetResponseStream();
            var sr         = new StreamReader(respStream);
            var retjson    = sr.ReadToEnd();

            sr.Close();
            resp.Close();
            req.Abort();
            Newtonsoft.Json.Linq.JObject json = Newtonsoft.Json.Linq.JObject.Parse(retjson);
            if (!json.ContainsKey("response"))
            {
                return(false);
            }
            return(true);
        }
Exemplo n.º 15
0
        public async void upload_stream_fore2(string host, System.IO.Stream stream, string name, string folder_id, string uploadToken)
        {
            /// POST /mkblk/<blockSize>/<blockOrder>
            /// Host: <UploadDomain>
            /// Authorization:<UploadToken>
            /// Content-Length:<firstChunkSize>
            /// Content-Type:application/octet-stream
            /// UploadBatch:<uuid>
            /// Key:<key>
            ///
            /// <firstChunkBinary>
            //const int block_size = 4 * 1024 * 1024;
            var uploadUrl          = $"/mkblk/{stream.Length}/0";
            HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, host + uploadUrl);

            //req.Version = System.Net.HttpVersion.Version10;
            //req.Headers.Add("Host", host);
            //req.Headers.Host = host;
            req.Content = new StreamContent(stream);
            req.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(uploadToken);

            req.Headers.Add("UploadBatch", System.Guid.NewGuid().ToString());
            //req.Headers.Add("Key", "<key>");
            //req.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");

            var result = await _hc.SendAsync(req, HttpCompletionOption.ResponseHeadersRead);

            var retjson = result.Content.ReadAsStringAsync().Result;

            Newtonsoft.Json.Linq.JObject json = Newtonsoft.Json.Linq.JObject.Parse(retjson);
            bool ok = json.ContainsKey("ctx");

            return;
            ///
            ///bool ok = json["ctx"].ToObject<int>() == 1;
            ///
            ///var dataContent = new MultipartFormDataContent()
            ///{
            ///    { new StringContent($"file"), "name" },
            ///    { new StringContent($"{uploadToken}"), "token" },
            ///    { new StringContent("application/octet-stream"), "type" }
            ///
            ///};
            ///
            ///var sc = new StreamContent(stream);
            ///String headerValue = $"form-data; name=\"upload_file\"; filename=\"{name}\"";
            ///byte[] bytes = Encoding.UTF8.GetBytes(headerValue);
            ///headerValue = "";
            ///foreach (byte b in bytes)
            ///    headerValue += (Char)b;
            ///sc.Headers.Add("Content-Disposition", headerValue);
            ///dataContent.Add(sc);
            ///try
            ///{
            ///    HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, uploadUrl);
            ///    req.Version = System.Net.HttpVersion.Version10;
            ///    var result = await _hc.SendAsync(req, HttpCompletionOption.ResponseHeadersRead);
            ///    var retjson = result.Content.ReadAsStringAsync().Result;
            ///    Newtonsoft.Json.Linq.JObject json = Newtonsoft.Json.Linq.JObject.Parse(retjson);
            ///    bool ok = json["zt"].ToObject<int>() == 1;
            ///
            ///    if (ok)
            ///        return ;
            ///}
            ///catch (Exception e)
            ///{
            ///    var t = e.Message.Length;
            ///}
        }
Exemplo n.º 16
0
        private void AddSuperchargerState(Newtonsoft.Json.Linq.JObject suc, ArrayList send)
        {
            int     sucID    = int.MinValue;
            bool    SuCfound = GetSuperchargerByName(suc["name"].ToString(), out sucID);
            dynamic location = suc["location"];
            double  lat      = location["lat"];
            double  lng      = location["long"];

            if (!SuCfound)
            {
                // add new entry to supercharger list in DB

                sucID = AddNewSupercharger(suc["name"].ToString(), lat, lng);
            }

            if (suc.ContainsKey("available_stalls") &&
                suc.ContainsKey("total_stalls") &&
                suc.ContainsKey("site_closed") &&
                bool.TryParse(suc["site_closed"].ToString(), out bool site_closed) &&
                site_closed == false)
            {
                Tools.DebugLog($"SuC: <{suc["name"]}> <{suc["available_stalls"]}> <{suc["total_stalls"]}>");
                if (int.TryParse(suc["available_stalls"].ToString(), out int available_stalls) &&
                    int.TryParse(suc["total_stalls"].ToString(), out int total_stalls))
                {
                    if (total_stalls > 0)
                    {
                        if (!ContainsSupercharger(send, suc["name"].ToString()))
                        {
                            Dictionary <string, object> sendKV = new Dictionary <string, object>();
                            send.Add(sendKV);
                            sendKV.Add("n", suc["name"]);
                            sendKV.Add("lat", lat);
                            sendKV.Add("lng", lng);
                            sendKV.Add("ts", DateTime.UtcNow.ToString("s", Tools.ciEnUS));
                            sendKV.Add("a", available_stalls);
                            sendKV.Add("t", total_stalls);

                            using (MySqlConnection con = new MySqlConnection(DBHelper.DBConnectionstring))
                            {
                                con.Open();
                                // find internal ID of supercharger by name
                                using (MySqlCommand cmd = new MySqlCommand(@"
INSERT
    superchargerstate(
        nameid,
        ts,
        available_stalls,
        total_stalls
    )
VALUES(
    @nameid,
    @ts,
    @available_stalls,
    @total_stalls
)", con))
                                {
                                    cmd.Parameters.AddWithValue("@nameid", sucID);
                                    cmd.Parameters.AddWithValue("@ts", DateTime.Now);
                                    cmd.Parameters.AddWithValue("@available_stalls", available_stalls);
                                    cmd.Parameters.AddWithValue("@total_stalls", total_stalls);
                                    SQLTracer.TraceNQ(cmd);
                                }
                                con.Close();
                            }
                        }
                    }
                    else
                    {
                        // TODO how do we handle total_stalls == 0 ?
                    }
                }
            }
            else if (suc.ContainsKey("site_closed") &&
                     bool.TryParse(suc["site_closed"].ToString(), out site_closed) &&
                     site_closed)
            {
                Tools.DebugLog($"SuC: <{suc["name"]}> site_closed");
                if (!ContainsSupercharger(send, suc["name"].ToString()))
                {
                    Dictionary <string, object> sendKV = new Dictionary <string, object>();
                    send.Add(sendKV);
                    sendKV.Add("n", suc["name"]);
                    sendKV.Add("lat", lat);
                    sendKV.Add("lng", lng);
                    sendKV.Add("ts", DateTime.UtcNow.ToString("s", Tools.ciEnUS));
                    sendKV.Add("a", -1);
                    sendKV.Add("t", -1);
                    using (MySqlConnection con = new MySqlConnection(DBHelper.DBConnectionstring))
                    {
                        con.Open();
                        // find internal ID of supercharger by name
                        using (MySqlCommand cmd = new MySqlCommand("INSERT superchargerstate (nameid, ts, available_stalls, total_stalls) values (@nameid, @ts, @available_stalls, @total_stalls) ", con))
                        {
                            cmd.Parameters.AddWithValue("@nameid", sucID);
                            cmd.Parameters.AddWithValue("@ts", DateTime.Now);
                            cmd.Parameters.AddWithValue("@available_stalls", -1);
                            cmd.Parameters.AddWithValue("@total_stalls", -1);
                            SQLTracer.TraceNQ(cmd);
                        }
                        con.Close();
                    }
                }
            }
            else if (suc.ContainsKey("site_closed") &&
                     bool.TryParse(suc["site_closed"].ToString(), out site_closed) &&
                     !site_closed)
            {
                Tools.DebugLog($"SuC: <{suc["name"]}> no info (fields available: available_stalls {suc.ContainsKey("available_stalls")} total_stalls {suc.ContainsKey("available_stalls")})");
                Tools.DebugLog(new Tools.JsonFormatter(JsonConvert.SerializeObject(suc)).Format());
            }
            else
            {
                Tools.DebugLog($"suc ContainsKey available_stalls {suc.ContainsKey("available_stalls")} total_stalls {suc.ContainsKey("available_stalls")} site_closed {suc.ContainsKey("site_closed")}");
            }
        }
Exemplo n.º 17
0
        private async Task BeatTask(BeatInfo beatInfo)
        {
            if (beatInfo.Stopped)
            {
                return;
            }

            long nextTime = beatInfo.Period;

            try
            {
                Newtonsoft.Json.Linq.JObject result = await _serverProxy.SendBeat(beatInfo, false);

                long interval = result.GetValue("clientBeatInterval").ToObject <long>();

                bool lightBeatEnabled = false;

                if (result.ContainsKey(CommonParams.LIGHT_BEAT_ENABLED))
                {
                    lightBeatEnabled = result.GetValue(CommonParams.LIGHT_BEAT_ENABLED).ToObject <bool>();
                }

                if (interval > 0)
                {
                    nextTime = interval;
                }

                int code = 10200;

                if (result.ContainsKey(CommonParams.CODE))
                {
                    code = result.GetValue(CommonParams.CODE).ToObject <int>();
                }

                if (code == 20404)
                {
                    Instance instance = new Instance
                    {
                        Port        = beatInfo.Port,
                        Ip          = beatInfo.Ip,
                        Weight      = beatInfo.Weight ?? 1,
                        Metadata    = beatInfo.Metadata,
                        ClusterName = beatInfo.Cluster,
                        ServiceName = beatInfo.ServiceName,
                        Ephemeral   = true,

                        // InstanceId = ""
                    };

                    try
                    {
                        await _serverProxy.RegisterServiceAsync(beatInfo.ServiceName, NamingUtils.GetGroupName(beatInfo.ServiceName), instance);
                    }
                    catch
                    {
                    }
                }
            }
            catch (NacosException ex)
            {
                _logger?.LogError(ex, "[CLIENT-BEAT] failed to send beat: {0}, code: {1}, msg: {2}", beatInfo, ex.ErrorCode, ex.ErrorMsg);
            }

            string key = BuildKey(beatInfo.ServiceName, beatInfo.Ip, beatInfo.Port);

            if (_beatTimer.TryGetValue(key, out var timer))
            {
                timer.Change(nextTime, Timeout.Infinite);
            }
        }
Exemplo n.º 18
0
        /// <summary>
        /// 过滤通配符
        /// </summary>
        /// <param name="str"></param>
        /// <param name="currentUser">当前登录用户实体</param>
        /// <param name="obj">对象</param>
        /// <returns></returns>
        public static string Filter(string str, Model.User user = null, object obj = null)
        {
            if (str.IsNullOrWhiteSpace())
            {
                return("");
            }
            Microsoft.AspNetCore.Http.HttpRequest request = Tools.HttpContext.Request;
            foreach (string wildcard in wildcardList)
            {
                while (str.ContainsIgnoreCase(wildcard))
                {
                    string value     = string.Empty;
                    string wildcard1 = wildcard;
                    if ("{Query<".EqualsIgnoreCase(wildcard))
                    {
                        string key  = str.Substring(str.IndexOf("{Query<") + 7);
                        string key1 = key.Substring(0, key.IndexOf(">}"));
                        if (!key1.IsNullOrWhiteSpace())
                        {
                            wildcard1 = wildcard + key1 + ">}";
                            value     = request.Querys(key1);
                        }
                    }
                    else if ("{Form<".EqualsIgnoreCase(wildcard))
                    {
                        string key  = str.Substring(str.IndexOf("{Form<") + 6);
                        string key1 = key.Substring(0, key.IndexOf(">}"));
                        if (!key1.IsNullOrWhiteSpace())
                        {
                            wildcard1 = wildcard + key1 + ">}";
                            value     = request.Forms(key1);
                        }
                    }
                    else if ("{DataRow<".EqualsIgnoreCase(wildcard))
                    {
                        string key  = str.Substring(str.IndexOf("{DataRow<") + 9);
                        string key1 = key.Substring(0, key.IndexOf(">}"));
                        if (!key1.IsNullOrWhiteSpace())
                        {
                            wildcard1 = wildcard + key1 + ">}";
                            var dr = (System.Data.DataRow)obj;
                            try
                            {
                                value = dr[key1].ToString();
                            }
                            catch
                            {
                                value = "";
                            }
                        }
                    }
                    else if ("{Method<".EqualsIgnoreCase(wildcard))
                    {
                        //执行一个方法替换通配符 object为方法参数
                        string key  = str.Substring(str.IndexOf("{Method<") + 8);
                        string key1 = key.Substring(0, key.IndexOf(">}"));
                        if (!key1.IsNullOrWhiteSpace())
                        {
                            wildcard1   = wildcard + key1 + ">}";
                            var(o, err) = obj == null?Tools.ExecuteMethod(key1) : Tools.ExecuteMethod(key1, obj);

                            value = null == o ? "" : o.ToString();
                        }
                    }
                    else if ("{Date<".EqualsIgnoreCase(wildcard))
                    {
                        //取当前日期替换指定格式
                        string key  = str.Substring(str.IndexOf("{Date<") + 6);
                        string key1 = key.Substring(0, key.IndexOf(">}"));
                        if (!key1.IsNullOrWhiteSpace())
                        {
                            wildcard1 = wildcard + key1 + ">}";
                            value     = DateExtensions.Now.ToString(key1);
                        }
                    }
                    else if ("{Object<".EqualsIgnoreCase(wildcard))
                    {
                        //将对象转换为字符串替换
                        string key  = str.Substring(str.IndexOf("{Object<") + 8);
                        string key1 = key.Substring(0, key.IndexOf(">}"));
                        if (!key1.IsNullOrWhiteSpace())
                        {
                            wildcard1 = wildcard + key1 + ">}";
                            value     = obj == null  ? "" : obj.ToString();
                        }
                    }
                    else if ("{JArray<".EqualsIgnoreCase(wildcard))
                    {
                        //取json数组值
                        string key  = str.Substring(str.IndexOf("{JArray<") + 8);
                        string key1 = key.Substring(0, key.IndexOf(">}"));
                        if (!key1.IsNullOrWhiteSpace())
                        {
                            wildcard1 = wildcard + key1 + ">}";
                            Newtonsoft.Json.Linq.JArray jArray = (Newtonsoft.Json.Linq.JArray)obj;
                            if (null != jArray)
                            {
                                foreach (Newtonsoft.Json.Linq.JObject jObject in jArray)
                                {
                                    if (jObject.ContainsKey(key1))
                                    {
                                        value = jObject.Value <string>(key1);
                                        break;
                                    }
                                }
                                if (value.IsNullOrEmpty())
                                {
                                    //这里循环找是取表单数据形式的JSON [{"name":"","value":""}] 这里取表单字段对应的值
                                    foreach (Newtonsoft.Json.Linq.JObject jObject in jArray)
                                    {
                                        if (jObject.ContainsKey("name") && jObject.Value <string>("name").Equals(key1))
                                        {
                                            value = jObject.Value <string>("value");
                                            break;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                value = "";
                            }
                        }
                    }
                    else if ("{JObject<".EqualsIgnoreCase(wildcard))
                    {
                        //取json对象值
                        string key  = str.Substring(str.IndexOf("{JObject<") + 9);
                        string key1 = key.Substring(0, key.IndexOf(">}"));
                        if (!key1.IsNullOrWhiteSpace())
                        {
                            wildcard1 = wildcard + key1 + ">}";
                            Newtonsoft.Json.Linq.JObject jObject = (Newtonsoft.Json.Linq.JObject)obj;
                            if (null != jObject && jObject.ContainsKey(key1))
                            {
                                value = jObject.Value <string>(key1);
                            }
                            else
                            {
                                value = "";
                            }
                        }
                    }
                    else
                    {
                        value = GetWildcardValue(wildcard, user, obj);
                    }
                    str = str.ReplaceIgnoreCase(wildcard1, value);
                }
            }
            return(str);
        }