示例#1
0
        /// <summary>
        /// Get a list of values for a given property of all particles
        /// Useful for histograms
        /// </summary>
        public List <double> GetParticlePropertyList(ParticleFunction func)
        {
            var response = new List <double>();

            foreach (var part in Particles)
            {
                response.Add(func(part));
            }

            return(response);
        }
示例#2
0
        public async Task <ParticleFunctionReturn> CallParticleFunction(ParticleFunction pFunc)
        {
            ParticleFunctionReturn pfRet = new ParticleFunctionReturn();

            try
            {
                Uri uri   = new Uri(string.Format(baseUrl, pFunc.DeviceId, pFunc.FuncName));
                Uri pfuri = new Uri(string.Format(baseUrl, pFunc.DeviceId, pFunc.FuncName));

                FormUrlEncodedContent postData = new FormUrlEncodedContent(
                    new List <KeyValuePair <string, string> >
                {
                    new KeyValuePair <string, string>("arg", pFunc.Args)
                }
                    );
                var requestMessage = new HttpRequestMessage
                {
                    Method     = HttpMethod.Post,
                    Content    = postData,
                    RequestUri = pfuri
                };

                requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", pFunc.Token);
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));//ACCEPT header

                HttpResponseMessage response = await client.SendAsync(requestMessage);

                string content = response.Content.ReadAsStringAsync().Result;

                if (response.IsSuccessStatusCode)
                {
                    Analytics.TrackEvent("response.Ok");

                    pfRet       = JsonConvert.DeserializeObject <ParticleFunctionReturn>(content);
                    pfRet.Error = false;
                }
                else
                {
                    Analytics.TrackEvent("response.Error");
                    pfRet.Error = true;
                    //var ErrResult = response.Content.ReadAsStringAsync().Result;
                    if (!String.IsNullOrEmpty(content))
                    {
                        ParticleFunctionError pfErr = JsonConvert.DeserializeObject <ParticleFunctionError>(content);
                        if (String.IsNullOrEmpty(pfErr.info))
                        {
                            pfRet.ErrorDetail = pfErr.error;
                        }
                        else
                        {
                            pfRet.ErrorDetail = pfErr.error + " : " + pfErr.info;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Crashes.TrackError(ex);
            }

            return(pfRet);
        }