public void Apply_DadoFiltroComOrderSorts_DeveRetornar(Restful.Query.Filter.Filters.Ordering.OrderByDirection sorts, OrderByDirection expected) { _filterStub .Setup(p => p.OrderBy) .Returns(new Restful.Query.Filter.Filters.Ordering.OrderBy(new List<Restful.Query.Filter.Filters.Ordering.Field> { new Restful.Query.Filter.Filters.Ordering.Field("", sorts) })); var orderDirection = new OrderDirection(); var actual = orderDirection.Apply(_filterStub.Object); actual.Should().Be(expected); }
public static UsageResults GetUsage(string AccountName, string Username, string Password, string Bucket = "month") { if (AccountName == null || Bucket == null) { throw new ArgumentNullException(null, "Required parameter missing"); } var endPoint = @"https://gnip-api.twitter.com/metrics/usage/accounts/" + AccountName + ".json"; try { string content = ""; var fullEndPoint = endPoint + "?bucket=" + Bucket; Debug.WriteLine("fullEndPoint = |" + fullEndPoint + "|"); var resultCode = Restful.GetRestResponse("Get", fullEndPoint, Username, Password, out content); if (resultCode == HttpStatusCode.OK) { var searchResult = JsonConvert.DeserializeObject <UsageResults>(content.ToString()); if (searchResult.account != null) { return(searchResult); } // else (no data to return, but not an error) return(null); } else { var result = new UsageResults() { ErrorMessage = "Invalid HTTP Response code." + resultCode + " " + content, hasError = true }; return(result); } } catch (Exception ex) { var result = new UsageResults() { ErrorMessage = ex.Message, hasError = true }; return(result); } }
public IList <ClinicResult> GetListClinic(string type, string orderByName, string keyWords, int start = 0, int length = int.MaxValue) { var url = ApiUrl.Default.RootApi + string.Format(ApiUrl.Default.GetListClinic); var data = new { Type = type, Start = start, Limit = length, OrderByName = string.IsNullOrEmpty(orderByName) ? "" : orderByName.ToUpper(), Keywords = string.IsNullOrEmpty(keyWords) ? "" : keyWords }; var result = Restful.Post(url, null, data); _total = result["Total"].ToObject <int>(); return(result.GetList <ClinicResult>(ApiKeyData.Clinics)); }
public BankModel GetBankAccount(string clinicId) { var url = ApiUrl.Default.RootApi + string.Format(ApiUrl.Default.GetBankAccount, clinicId); return(Restful.Get(url, null).Get <BankModel>(ApiKeyData.BankAccount)); }
public void AddOrEditBank(BankModel model) { var url = ApiUrl.Default.RootApi + ApiUrl.Default.AddOrEditBankAccount; Restful.Post(url, null, model); }
public IList <PriceModel> Get(string clinicId) { var url = ApiUrl.Default.RootApi + string.Format(ApiUrl.Default.ListPricing, clinicId); return(Restful.Get(url, null).GetList <PriceModel>(ApiKeyData.Pricing)); }
protected DataEventArgs Call(string name, string methodname, string code, dynamic parameters, ref bool keeplive) { long contentleng = 0; LastParam = parameters.ToString(); _log.Error(parameters.ToString()); LastRunTime = DateTime.Now; LastMethod = methodname; DataEventArgs ea = new DataEventArgs(); taskId++; ea.TaskId = taskId; if (string.IsNullOrEmpty(name) && string.IsNullOrEmpty(code)) { ea.StatusCode = StatusCode.NoExit; ea.LastError = "方法不存在"; ea.Json = "{\"responseCode\":" + (int)ea.StatusCode + ",\"responseMsg\":\"" + ea.LastError + "\"}"; return(ea); } if (string.IsNullOrEmpty(methodname) && string.IsNullOrEmpty(code)) { ea.StatusCode = StatusCode.NoExit; ea.LastError = "方法不存在"; ea.Json = "{\"responseCode\":" + (int)ea.StatusCode + ",\"responseMsg\":\"" + ea.LastError + "\"}"; return(ea); } MethodInfo method = null; string keyvl = code; if (string.IsNullOrEmpty(code)) { #region 地址请求 try { lock (_memberInfos) { foreach (KeyValuePair <string, Tuple <string, MethodInfo, int, long> > kv in _memberInfos) { object[] clazz = kv.Value.Item2.DeclaringType.GetCustomAttributes(typeof(Restful), true); string clazzpath = string.Empty; if (clazz != null && clazz.Length > 0 && ((Restful)clazz[0]).Path != null) { if (((Restful)clazz[0]).Path != null) { clazzpath = ((Restful)clazz[0]).Path.ToLower(); } } string clazzname = kv.Value.Item1.ToString().ToLower(); if (clazzname == name || (!string.IsNullOrEmpty(clazzpath) && clazzpath == name)) { string kvmethod = kv.Value.Item2.Name.ToLower(); string path = string.Empty; object[] cattri = kv.Value.Item2.GetCustomAttributes(typeof(Restful), true); if (null != cattri && cattri.Length > 0) { Restful rf = (Restful)cattri[0]; if (rf.Path != null) { path = rf.Path.ToLower(); keeplive = rf.KeepAlive; } } if (kvmethod == methodname.ToLower() || (!string.IsNullOrEmpty(path) && path == methodname.ToLower())) { List <object> param = new List <object>(); try { foreach (ParameterInfo para in kv.Value.Item2.GetParameters()) { param.Add(parameters[para.Name]); } } catch (Exception ex) { Console.WriteLine(ex.Message); break; } parameters = param; int i = 0; foreach (ParameterInfo para in kv.Value.Item2.GetParameters()) { object o = param[i]; if (para.ParameterType.Name != o.GetType().Name) { break; } i++; } if (kv.Value.Item2.GetParameters().Length == param.Count) { keyvl = kv.Key; name = kv.Value.Item1; method = kv.Value.Item2; break; } } } } } } catch (Exception ex) { _log.Error(ex); Console.WriteLine(ex); } #endregion } else { List <object> _param = new List <object>(); foreach (object o in parameters) { _param.Add(o); } parameters = _param; if (_memberInfos.ContainsKey(code)) { name = _memberInfos[code].Item1; method = _memberInfos[code].Item2; } else { ea.StatusCode = StatusCode.NoExit; ea.LastError = "方法不存在"; ea.Json = "{\"responseCode\":" + (int)ea.StatusCode + ",\"responseMsg\":\"" + ea.LastError + "\"}"; return(ea); } } if (method == null) { ea.StatusCode = StatusCode.NoExit; ea.LastError = "方法不存在"; ea.Json = "{\"responseCode\":" + (int)ea.StatusCode + ",\"responseMsg\":\"" + ea.LastError + "\"}"; return(ea); } try { parameters = new MethodParam().CorrectParameters(method, parameters); object[] arrparam = parameters.ToArray(); Object bll = ApplicationContext.GetObject(name); var result = method.Invoke(bll, arrparam); JsonSerializerSettings jsonsetting = new JsonSerializerSettings(); jsonsetting.Formatting = Formatting.Indented; ea.StatusCode = StatusCode.Success; ea.Param = new System.Collections.ArrayList(); if (flagrpc) { ea.Binary = new JsonSerializer().ToBinary(result); contentleng = ea.Binary.Buffer.LongLength; } else { string data = JsonConvert.SerializeObject(result, jsonsetting); contentleng = data.Length; ea.Json = "{\"responseCode\":" + (int)StatusCode.Success + ",\"responseMsg\":\"成功\",\"responseData\":" + data + "}"; } for (int i = 0; i < arrparam.Length; i++) { try { ea.Param.Add(arrparam[i]); } catch (Exception ex) { Console.Write(ex); } } Console.WriteLine(ea.TaskId); } catch (Exception ex) { Console.WriteLine(ex); _log.Error(ex); Console.WriteLine(ex); ea.LastError = ex.InnerException.Message + "\r\n" + ex.Message; ea.StatusCode = StatusCode.Serious; } _memberInfos[keyvl] = new Tuple <string, MethodInfo, int, long>(_memberInfos[keyvl].Item1, _memberInfos[keyvl].Item2, _memberInfos[keyvl].Item3 + 1, _memberInfos[keyvl].Item3 + contentleng); return(ea); }
private string HtmlHelp(string _url) { try { int number = 0; Dictionary <string, Tuple <string, MethodInfo, int, long> > dic = new Dictionary <string, Tuple <string, MethodInfo, int, long> >(MemberInfos); StringBuilder sb = new StringBuilder(); sb.Append("<!DOCTYPE html>"); sb.Append(@"<html lang = ""en"">"); sb.Append(@"<meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8"" />"); sb.Append(@"<head>"); sb.Append(@"<link href=""//echarts.baidu.com/echarts2/doc/asset/css/bootstrap.css"" rel=""stylesheet"">"); sb.Append(@" </head><body>"); sb.Append(@"<div class=""navbar navbar-default"" role=""navigation"" id=""head""> <div class=""container""><div class=""navbar - header"">UcAsp.NET</div></div></div>"); sb.Append(@"<div class=""panel-group"" id=""accordion"">"); lock (dic) { foreach (KeyValuePair <string, Tuple <string, MethodInfo, int, long> > kv in dic.OrderBy(o => o.Value.Item1)) { object[] clazz = kv.Value.Item2.DeclaringType.GetCustomAttributes(typeof(Restful), true); string clazzpath = string.Empty; string path = kv.Value.Item2.Name; object[] cattri = kv.Value.Item2.GetCustomAttributes(typeof(Restful), true); if (clazz != null && clazz.Length > 0) { if (null != cattri && cattri.Length > 0) { UcAsp.RPC.Restful rf = (UcAsp.RPC.Restful)cattri[0]; if (rf.NoRest) { continue; } if (rf.Path != null) { path = rf.Path.ToLower(); } } string apixml = kv.Value.Item2.Module.FullyQualifiedName.Replace(".dll", "") + ".xml"; string filename = kv.Value.Item2.DeclaringType.FullName + "." + kv.Value.Item2.Name; int len = kv.Value.Item2.GetParameters().Length; if (len > 0) { filename += "("; for (int i = 0; i < len; i++) { ParameterInfo _param = kv.Value.Item2.GetParameters()[i]; if (i != len - 1) { filename += _param.ParameterType.FullName + ","; } else { filename += _param.ParameterType.FullName; } } filename += ")"; } string helptxt = string.Empty; if (File.Exists(apixml)) { XmlDocument doc = new XmlDocument(); doc.Load(apixml); XmlNode xn = doc.SelectSingleNode("/doc/members/member[@name=\"M:" + filename + "\"]"); if (xn != null) { helptxt = xn.InnerText; } } number++; sb.Append(@"<div class=""panel panel-default""><div class=""panel-heading"">"); sb.AppendFormat(@"<!--div class=""list-group-item"">{0} </div--> <h4 class=""panel-title""><a href=""#collapse" + number + @""" data-toggle=""collapse"" data-parent=""#accordion"" ><h4>[{3}]</h4>{2} 方法名:{1} ", kv.Value.Item1, kv.Value.Item2.Name.Replace("<", "<").Replace(">", " >"), helptxt, number); ParameterInfo[] para = kv.Value.Item2.GetParameters(); sb.Append(@"("); for (int x = 0; x < para.Length; x++) { sb.AppendFormat("{0} {1}", Proxy.GetTypeName(para[x].ParameterType).Replace("<", "<").Replace(">", " >"), para[x].Name.Replace("<", "<").Replace(">", " >")); if (x != para.Length - 1) { sb.Append(","); } } sb.AppendFormat(" ) Method:POST 返回类型:{0}[自启动运行{1}次][{2}]</a>", Proxy.GetTypeName(kv.Value.Item2.ReturnType).Replace("<", "<").Replace(">", " >"), kv.Value.Item3, kv.Value.Item4); sb.Append(@"</h4></div><div id=""collapse" + number); sb.Append(@""" class=""panel-collapse collapse"">"); // sb.Append(@"<div class=""list-group-item"">Example:Request Body JSON : <font color=red>["); // for (int xx = 0; xx < para.Length; xx++) // { // sb.AppendFormat("{0}", Proxy.GetTypeName(para[xx].ParameterType).Replace("<", "<").Replace(">", " >")); // if (xx != para.Length - 1) // { // sb.Append(","); // } // } // sb.Append(@"]</font></div>"); // sb.AppendFormat(@"<div class=""list-group-item"">API URL<br />[1]:{0}/{1}<br />[2]:{0}/WEBAPI/{2}/{3} </div> ", _url, kv.Key, kv.Value.Item1, kv.Value.Item2.Name); clazzpath = ((UcAsp.RPC.Restful)clazz[0]).Path.ToLower(); sb.Append(@"<div class=""list-group-item"">Example:Request Body JSON : <br /><font color=red style=""word-wrap:break-word"">{"); for (int xx = 0; xx < para.Length; xx++) { sb.AppendFormat("\"{0}\":", para[xx].Name); if (para[xx].ParameterType.FullName.ToString().StartsWith("System")) { sb.AppendFormat(para[xx].ParameterType.Name.ToString()); } else { sb.Append("{"); PropertyInfo[] ps = para[xx].ParameterType.GetProperties(); int pn = 0; foreach (PropertyInfo p in ps) { sb.Append("\"" + p.Name + "\":"); if (p.PropertyType.FullName.ToString().StartsWith("System")) { sb.AppendFormat(p.PropertyType.Name.ToString()); } else { sb.AppendFormat("value"); } if (pn != ps.Length - 1) { sb.Append(","); } pn++; } sb.Append("}"); } if (xx != para.Length - 1) { sb.Append(","); } } sb.Append(@"}</font><br />");//</div><div class=""list-group-item""> sb.AppendFormat(@"API URL<br />[1]:{0}/WEBAPI/{1}/{2}/<br /> </div> ", _url, clazzpath, path); if (null != cattri && cattri.Length > 0) { Restful rf = (Restful)cattri[0]; path = rf.Path.ToLower(); } clazzpath = ((Restful)clazz[0]).Path.ToLower(); sb.Append(@"<div class=""list-group-item"">Example:WebSocket Send Data JSON : <br /><font color=red style=""word-wrap:break-word"">{""clazz"":""" + clazzpath + @""",""method"":""" + path + @""",""param"": {"); for (int xx = 0; xx < para.Length; xx++) { sb.AppendFormat("\"{0}\":", para[xx].Name); if (para[xx].ParameterType.FullName.ToString().StartsWith("System")) { sb.AppendFormat(para[xx].ParameterType.Name.ToString()); } else { sb.Append("{"); PropertyInfo[] ps = para[xx].ParameterType.GetProperties(); int pn = 0; foreach (PropertyInfo p in ps) { sb.Append("\"" + p.Name + "\":"); if (p.PropertyType.FullName.ToString().StartsWith("System")) { sb.AppendFormat(p.PropertyType.Name.ToString()); } else { sb.AppendFormat("value"); } if (pn != ps.Length - 1) { sb.Append(","); } pn++; } sb.Append("}"); } if (xx != para.Length - 1) { sb.Append(","); } } sb.Append(@"}}</font> <br />");//</div><div class=""list-group-item""> sb.AppendFormat(@"API URL<br />[1]:{0}/websocket/call/<br /> </div> ", _url.Replace("http", "ws"), clazzpath, path); sb.Append(@"<div class=""list-group-item"" style=""word-wrap:break-word""> 返回数据类型(注:code-100正常,200完成,300超时,500系统错误,400服务不存在,900严重错误):<br />{""code"":200,""msg"":""成功"",""data"":"); if (kv.Value.Item2.ReturnType.FullName.StartsWith("System") && kv.Value.Item2.ReturnType.Name.IndexOf("`") < 0) { sb.AppendFormat(@"{0}", kv.Value.Item2.ReturnType.Name.ToString()); } else { if (kv.Value.Item2.ReturnType.FullName.IndexOf("System.Collections") > -1) { PropertyInfo[] ps = kv.Value.Item2.ReturnType.GetProperties(); PropertyInfo[] items = ps[2].PropertyType.GetProperties(); int pn = 0; sb.Append("[{"); foreach (PropertyInfo p in items) { sb.Append("\"" + p.Name + "\":"); if (p.PropertyType.FullName.ToString().StartsWith("System")) { sb.AppendFormat(p.PropertyType.Name.ToString()); } else { sb.AppendFormat("value"); } if (pn != items.Length - 1) { sb.Append(","); } pn++; } sb.Append("}]"); } else { PropertyInfo[] ps = kv.Value.Item2.ReturnType.GetProperties(); int pn = 0; sb.Append("{"); foreach (PropertyInfo p in ps) { sb.Append("\"" + p.Name + "\":"); if (p.PropertyType.FullName.ToString().StartsWith("System")) { sb.AppendFormat(p.PropertyType.Name.ToString()); } else { sb.AppendFormat("value"); } if (pn != ps.Length - 1) { sb.Append(","); } pn++; } sb.Append("}"); } } sb.Append("}</div>"); sb.Append(@"</div></div>"); } } } sb.Append("</div>"); sb.Append(@"<script src =""//libs.baidu.com/jquery/2.1.1/jquery.min.js""></script>"); sb.Append(@"<script src=""//echarts.baidu.com/echarts2/doc/asset/js/bootstrap.min.js""></script>"); sb.Append("</body></html>"); return(sb.ToString()); } catch (Exception ex) { return(ex.StackTrace.ToString()); } }
public void CheckExpired(ApiHeader apiHeader, string hash, string email) { var url = ApiUrl.Default.RootApi + string.Format(ApiUrl.Default.CheckExpired, hash, email); Restful.Get(url, apiHeader); }
public void ApproveClinic(ApiHeader apiHeader, string id) { var url = ApiUrl.Default.RootApi + string.Format(ApiUrl.Default.ApproveClinic, id); Restful.Get(url, apiHeader); }
public void SignUp(SignUpModel model) { var url = ApiUrl.Default.RootApi + ApiUrl.Default.SignUp; Restful.Post(url, null, model); }
public HospitalModel GetById(ApiHeader apiHeader, string id) { var url = ApiUrl.Default.RootApi + string.Format(ApiUrl.Default.GetClinic, id); return(Restful.Get(url, apiHeader).Get <HospitalModel>(ApiKeyData.Hospital)); }
public void NotifyClinic(ApiHeader apiHeader, NotifyClinicModel model) { var url = ApiUrl.Default.RootApi + ApiUrl.Default.NotifyClinic; Restful.Post(url, apiHeader, model); }
public Filter(Restful.Query.Filter.Filter filter) { _filter = filter; }