public async Task <IHttpActionResult> Search(string address)
        {
            using (HttpClient client = new HttpClient())
            {
                client.DefaultRequestHeaders.Clear();
                client.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("nl-NL"));
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));

                string requestUri = QueryStringBuilder(address);
                //if (requestUri == null) { expHandler = new ZillowExceptionHandler(400,"Bad Request"); }

                HttpResponseMessage response = await client.GetAsync(requestUri);

                if (response.IsSuccessStatusCode)
                {
                    string     apiResult = response.Content.ReadAsStringAsync().Result;
                    ZException exObj     = ProcessException(apiResult);
                    if (exObj.StatusCode > 0)
                    {
                        expHandler = new ZillowExceptionHandler(exObj.StatusCode, exObj.ErrorDescription); return(expHandler);
                    }
                    ;
                    IEnumerable <Zproperty> apiModel = GetSerchResultsFromXml(apiResult);
                    return(Ok(apiModel));
                }
                expHandler = new ZillowExceptionHandler(404, "Resource Not Found");
                return(expHandler);
            }
        }
        /// <summary>
        /// Process exception node from xml
        /// </summary>
        /// <param name="xmlString"></param>
        /// <returns></returns>
        public ZException ProcessException(string xmlString)
        {
            XDocument  doc    = XDocument.Parse(xmlString);
            ZException _exObj = new ZException()
            {
                StatusCode       = (int)doc.Root.Element("message").Element("code"),
                ErrorDescription = (string)doc.Root.Element("message").Element("text")
            };

            return(_exObj);
        }
Exemple #3
0
 /// <summary>
 /// 获取指定Key的所有数据
 /// </summary>
 /// <typeparam name="T">泛型类型</typeparam>
 /// <param name="keys"></param>
 /// <returns></returns>
 public List <T> GetAll <T>(List <string> keys)
 {
     try
     {
         using (IRedisClient client = GetReadClient())
         {
             return(client.GetValues <T>(keys));
         }
     }
     catch (Exception ex)
     {
         LogHelper.Error("key:" + string.Join(",", keys) + " | 错误信息:" + ZException.GetExceptionMessage(ex));
         return(null);
     }
 }
Exemple #4
0
 /// <summary>
 /// 获取缓存数据
 /// </summary>
 /// <typeparam name="T">泛型类型</typeparam>
 /// <param name="key"></param>
 /// <returns></returns>
 public T Get <T>(string key)
 {
     try
     {
         using (IRedisClient client = GetReadClient())
         {
             return(client.Get <T>(key));
         }
     }
     catch (Exception ex)
     {
         LogHelper.Error("key:" + key + " | 错误信息:" + ZException.GetExceptionMessage(ex));
         return(default(T));
     }
 }
Exemple #5
0
 /// <summary>
 /// 获取缓存数据
 /// </summary>
 /// <param name="key"></param>
 /// <returns></returns>
 public object Get(string key)
 {
     try
     {
         using (IRedisClient client = GetReadClient())
         {
             return(client.Get <object>(key));
         }
     }
     catch (Exception ex)
     {
         LogHelper.Error("key:" + key + " | 错误信息:" + ZException.GetExceptionMessage(ex));
         return(null);
     }
 }
Exemple #6
0
 /// <summary>
 /// 按前缀模糊查询获取数据
 /// </summary>
 /// <typeparam name="T">泛型类型</typeparam>
 /// <param name="cacheKeyPrefix">缓存Key前缀</param>
 /// <returns></returns>
 public List <T> GetAll <T>(string cacheKeyPrefix)
 {
     try
     {
         using (IRedisClient client = GetReadClient())
         {
             var keys = client.SearchKeys("*" + cacheKeyPrefix + "*");
             return(client.GetValues <T>(keys));
         }
     }
     catch (Exception ex)
     {
         LogHelper.Error("key:" + cacheKeyPrefix + " | 错误信息:" + ZException.GetExceptionMessage(ex));
         return(null);
     }
 }
Exemple #7
0
        /// <summary>
        /// Raises the <see cref="ServerBase.SendClientDataException"/> event.
        /// </summary>
        /// <param name="clientID">ID of client to send to <see cref="ServerBase.SendClientDataException"/> event.</param>
        /// <param name="ex">Exception to send to <see cref="ServerBase.SendClientDataException"/> event.</param>
        protected override void OnSendClientDataException(Guid clientID, Exception ex)
        {
            if (IsThreadAbortException(ex))
            {
                return;
            }

            if (m_clientInfoLookup.ContainsKey(clientID) && CurrentState == ServerState.Running)
            {
                ZException zmqex = ex as ZException;

                if ((object)zmqex != null && (zmqex.Error.Number == ZError.EAGAIN.Number || zmqex.Error.Number == ZError.ETERM.Number))
                {
                    ThreadPool.QueueUserWorkItem(state => DisconnectOne(clientID));
                }
                else
                {
                    base.OnSendClientDataException(clientID, ex);
                }
            }
        }
Exemple #8
0
        /// <summary>
        /// Raises the <see cref="ClientBase.SendDataException"/> event.
        /// </summary>
        /// <param name="ex">Exception to send to <see cref="ClientBase.SendDataException"/> event.</param>
        protected override void OnSendDataException(Exception ex)
        {
            if (ZeroMQServer.IsThreadAbortException(ex))
            {
                return;
            }

            if (CurrentState != ClientState.Disconnected)
            {
                ZException zmqex = ex as ZException;

                if ((object)zmqex != null && (zmqex.ErrNo == ZError.EAGAIN || zmqex.ErrNo == ZError.ETERM))
                {
                    ThreadPool.QueueUserWorkItem(state => Disconnect());
                }
                else
                {
                    base.OnSendDataException(ex);
                }
            }
        }
Exemple #9
0
 /// <summary>
 /// 获取缓存数据
 /// </summary>
 /// <typeparam name="T">泛型类型</typeparam>
 /// <param name="key"></param>
 /// <param name="objectDeserialize">True:获取数据为Byte,转换为T指定类型后返回,False:直接获取缓存数据</param>
 /// <returns></returns>
 public T Get <T>(string key, bool objectDeserialize)
 {
     try
     {
         using (IRedisClient client = GetReadClient())
         {
             if (objectDeserialize)
             {
                 var objSer = new ObjectSerializer();
                 return((T)objSer.Deserialize(client.Get <byte[]>(key)));
             }
             else
             {
                 return(client.Get <T>(key));
             }
         }
     }
     catch (Exception ex)
     {
         LogHelper.Error("key:" + key + " | 错误信息:" + ZException.GetExceptionMessage(ex));
         return(default(T));
     }
 }