public JsonResult UpdateUserLocation(RequestContext <UpdateUserLocationRequest> request) { RequestHead head = default; try { if (request == null) { return(ErrorJsonResult(ErrCodeEnum.ParametersIsNotValid_Code)); } if (!CheckAuth(request.Head)) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestHead)); } head = request.Head; var response = new Response(); var success = userInfoBiz.UpdateUserLocation(request.Head.UId, request.Data.Latitude, request.Data.Longitude); if (success) { response.ResultCode = ErrCodeEnum.Success; response.ResultMessage = "更新成功"; } else { response.ResultCode = ErrCodeEnum.Failure; response.ResultMessage = "更新失败"; } return(new JsonResult(response)); } catch (Exception ex) { return(ErrorJsonResult(ErrCodeEnum.InnerError, head, "UserInfoController.UpdateUserLocation", ex)); } }
public JsonResult ServiceDetail(RequestContext <object> request) { RequestHead head = default; try { if (request == null) { return(ErrorJsonResult(ErrCodeEnum.ParametersIsNotValid_Code)); } if (!CheckAuth(request.Head)) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestHead)); } head = request.Head; if (request.Data == null) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestBody)); } return(new JsonResult(adminBiz.ServiceDetail(request.Head))); } catch (Exception ex) { return(ErrorJsonResult(ErrCodeEnum.InnerError, head, "AdminController.ServiceDetail", ex)); } }
public JsonResult AskMomentDetail(RequestContext <AskMomentDetailRequest> request) { RequestHead head = default; try { if (request == null) { return(ErrorJsonResult(ErrCodeEnum.ParametersIsNotValid_Code)); } if (!CheckAuth(request.Head)) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestHead)); } head = request.Head; if (request.Data == null) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestBody)); } return(new JsonResult(askBiz.AskMomentDetail(request.Data.ApplyId, request.Head))); } catch (Exception ex) { return(ErrorJsonResult(ErrCodeEnum.InnerError, head, "AskController.AskMomentDetail", ex)); } }
private static RestRequest CreateRestRequest(RequestHead head, Dictionary <string, object> body) { //-- Head dynamic headData = new ExpandoObject(); headData.SerialNumber = head.SerialNumber; headData.Channel = head.Channel; headData.RequestHost = head.RequestHost; headData.RequestTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); headData.UserId = head.UserId; string headStr = JsonConvert.SerializeObject(headData); string postHead = EncodingHelper.Base64UrlEncode(Encoding.UTF8.GetBytes(headStr)); //-- Body string bodyStr = JsonConvert.SerializeObject(body); string postBody = EncodingHelper.Base64UrlEncode(Encoding.UTF8.GetBytes(bodyStr)); //-- Post Data RestRequest request = new RestRequest(Method.POST); request.AddHeader("head", postHead); request.AddHeader("Authorization", "Bearer " + head.Authorization); request.AddParameter("body", postBody); return(request); }
public JsonResult ShareDetail(RequestContext <ShareDetailRequest> request) { RequestHead head = default; try { if (request == null) { return(ErrorJsonResult(ErrCodeEnum.ParametersIsNotValid_Code)); } //不校验Auth if (!CheckHead(request.Head)) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestHead)); } head = request.Head; if (request.Data == null || request.Data.MomentId == null) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestBody)); } return(new JsonResult(productBiz.ShareDetail(request.Data.MomentId, request.Head))); } catch (Exception ex) { return(ErrorJsonResult(ErrCodeEnum.InnerError, head, "ProductController.ShareDetail", ex)); } }
public void ErrorAsync(string title, Exception ex, RequestHead head = null) { Task.Factory.StartNew(() => { Error(title, ex, head); }); }
public JsonResult MsgSecCheck(RequestContext <MsgSecCheckRequest> request) { RequestHead head = default; try { if (request == null) { return(ErrorJsonResult(ErrCodeEnum.ParametersIsNotValid_Code)); } if (!CheckAuth(request.Head)) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestHead)); } head = request.Head; if (request.Data == null || request.Data.TextContent.IsNullOrEmpty()) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestBody)); } var response = new Response(); bool msgOk = AppFactory.Factory(request.Head.Platform).MsgSecCheck(request.Data.TextContent); if (!msgOk) { response.ResultCode = ErrCodeEnum.MessageCheckError; response.ResultMessage = ErrCodeEnum.MessageCheckError.ToDescription(); } return(new JsonResult(response)); } catch (Exception ex) { return(ErrorJsonResult(ErrCodeEnum.InnerError, head, "CommonController.MsgSecCheck", ex)); } }
public JsonResult UpdateUserInfo(RequestContext <UpdateUserInfoType> request) { RequestHead head = default; try { if (request == null) { return(ErrorJsonResult(ErrCodeEnum.ParametersIsNotValid_Code)); } if (!CheckAuth(request.Head)) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestHead)); } head = request.Head; if (request.Data == null) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestBody)); } return(new JsonResult(userInfoBiz.UpdateUserInfo(request))); } catch (Exception ex) { return(ErrorJsonResult(ErrCodeEnum.InnerError, head, "UserInfoController.UpdateUserInfo", ex)); } }
private static RequestHead GetRequestHeadFromQueryString(Dictionary <string, string> dict) { string appType; string appVersion; string apiType; string apiVersion; string token = string.Empty; dict.TryGetValue("apptype", out appType); dict.TryGetValue("appversion", out appVersion); dict.TryGetValue("apitype", out apiType); dict.TryGetValue("apiversion", out apiVersion); if (dict.ContainsKey("token")) { dict.TryGetValue("token", out token); } else if (dict.ContainsKey("head.token")) { dict.TryGetValue("head.token", out token); } RequestHead requestHead = new RequestHead { AppType = !string.IsNullOrEmpty(appType) ? int.Parse(appType) : 0, AppVersion = appVersion, ApiType = !string.IsNullOrEmpty(apiType) ? int.Parse(apiType) : 0, ApiVersion = apiVersion, Token = token, }; return(requestHead); }
public static void HeadParseSerializeTest(string[] args) { RequestHeadParser rParser = new RequestHeadParser(); ResponseHeadParser RParser = new ResponseHeadParser(); RequestHeadSerializer rSerial = new RequestHeadSerializer(); ResponseHeadSerializer RSerial = new ResponseHeadSerializer(); RequestHead rHead = new RequestHead("HTTP/1.1", "GET", "/"); rHead.Headers["test1"] = "123"; rHead.Headers["test2"] = "456"; ResponseHead RHead = new ResponseHead("HTTP/1.1", 200, "OK"); RHead.Headers["test1"] = "123"; RHead.Headers["test2"] = "456"; rSerial.Pipe(rParser); RSerial.Pipe(RParser); rParser.OnCollect += (head) => Console.WriteLine("request parser:\n{0}", head.Stringify()); RParser.OnCollect += (head) => Console.WriteLine("response parser:\n{0}", head.Stringify()); rSerial.OnFail += () => Console.WriteLine("request serializer failed"); RSerial.OnFail += () => Console.WriteLine("response serializer failed"); rSerial.Write(rHead); RSerial.Write(RHead); Console.ReadKey(); }
public ResponseContext <UserInfoType> GetUserInfo(RequestHead head, long uId) { long userId; if (uId <= 0) { userId = head.UId; } else { userId = uId; } var response = new ResponseContext <UserInfoType>(); var userInfo = GetUserInfoByUid(userId); if (userInfo == null) { response.ResultCode = ErrCodeEnum.UserNoExist; response.ResultMessage = ErrCodeEnum.UserNoExist.ToDescription(); return(response); } if (uId <= 0) { response.Data = UserInfoBuilder.BuildUserInfoV1(userInfo, head); response.Data.NickName = userInfo.NickName; } else { response.Data = UserInfoBuilder.BuildUserInfo(userInfo, head, 10); } return(response); }
/// <summary> /// 获取请求信息 /// </summary> private async Task <CustomRouteData> GetRequestData(HttpRequest request) { string requestBodyStr = ""; using (var buffer = new MemoryStream()) { await Request.Body.CopyToAsync(buffer); requestBodyStr = Encoding.UTF8.GetString(buffer.ToArray()); } requestBody = requestBodyStr; //Get authorization information in the request headers, it needs send to the micro service. authorizationHeadValue = Request.Headers[Const.HEAD_NAME_AUTHORIZATION]; var requestHeadStr = Request.Headers[Const.HEAD_NAME_ROUTE_INFO]; var requestHeadDic = HttpHelper.GetFormDictionary(requestHeadStr); requestHead = new RequestHead { BusinessCode = requestHeadDic["BusinessCode"], Ttl = Convert.ToInt32(requestHeadDic.GetValueOrDefault("Ttl", "0")), Channel = requestHeadDic.GetValueOrDefault("Channel", ""), Version = requestHeadDic.GetValueOrDefault("Version", "") }; CustomRouteData route = routeHelper.GetOptimalRoute(requestHead.BusinessCode, requestHead.Version, requestHead.Channel); if (route == null) { throw new Exception("请求路由不存在"); } return(route); }
public void WarnAsync(string title, string content, Exception ex = null, RequestHead head = null) { Task.Factory.StartNew(() => { Warn(title, content, ex, head); }); }
public void InfoAsync(string title, string content, RequestHead head = null) { Task.Factory.StartNew(() => { Info(title, content, head); }); }
public JsonResult Login(RequestContext <LoginRequest> request) { RequestHead head = default; try { if (request == null) { return(ErrorJsonResult(ErrCodeEnum.ParametersIsNotValid_Code)); } if (request.Head == null) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestHead)); } head = request.Head; if (request.Data == null || request.Data.Code.IsNullOrEmpty() || request.Head == null) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestBody)); } return(new JsonResult(userInfoBiz.GetLoginInfoByCode(request.Data.Code, request.Head.Platform))); } catch (Exception ex) { return(ErrorJsonResult(ErrCodeEnum.InnerError, head, "UserInfoController.Login", ex)); } }
public JsonResult GetUnReadCount(RequestContext <object> request) { RequestHead head = default; try { if (request == null) { return(ErrorJsonResult(ErrCodeEnum.ParametersIsNotValid_Code)); } if (!CheckAuth(request.Head)) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestHead)); } head = request.Head; if (request.Data == null) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestBody)); } return(new JsonResult(momentBiz.GetUnReadCount(request.Head))); } catch (Exception ex) { return(ErrorJsonResult(ErrCodeEnum.InnerError, head, "MomentController.GetUnReadCount", ex)); } }
public JsonResult SpaceMomentList(RequestContext <SpaceMomentListRequest> request) { RequestHead head = default; try { if (request == null) { return(ErrorJsonResult(ErrCodeEnum.ParametersIsNotValid_Code)); } if (!CheckAuth(request.Head)) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestHead)); } head = request.Head; if (request.Data == null) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestBody)); } return(new JsonResult(userSpaceBiz.SpaceMomentList(request))); } catch (Exception ex) { return(ErrorJsonResult(ErrCodeEnum.InnerError, head, "UserSpaceController.SpaceMomentList", ex)); } }
public void RequestEnd2End() { Request <string, string> request = new Request <string, string> { ID = 10086, MethodID = 100, ServiceID = 99, Arg = "hello" }; _codec.WriteRequest(request.Arg, request.ID, request.ServiceID, request.MethodID, out ReadOnlyMemory <byte> tmpBuffer); ReadOnlySequence <byte> packet = new ReadOnlySequence <byte>(tmpBuffer.ToArray()); RequestHead head = new RequestHead(); Assert.True(_codec.TryReadRequestHead(packet, ref head)); Assert.Equal(request.ID, head.RequestID); Assert.Equal(request.ServiceID, head.ServiceID); Assert.Equal(request.MethodID, head.MethodID); Assert.Equal(packet.Length - Protocol.RequestHeadSize, head.PayloadSize); string body = _codec.ReadBody <string>(packet.Slice(Protocol.RequestHeadSize, head.PayloadSize)); Assert.Equal(request.Arg, body); }
public JsonResult MyPublishMomentDetail(RequestContext <MyPublishMomentDetailRequest> request) { RequestHead head = default; try { if (request == null) { return(ErrorJsonResult(ErrCodeEnum.ParametersIsNotValid_Code)); } if (!CheckAuth(request.Head)) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestHead)); } head = request.Head; if (request.Data == null) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestBody)); } return(new JsonResult(momentBiz.MyPublishMomentDetail(request.Data.MomentId, head))); } catch (Exception ex) { return(ErrorJsonResult(ErrCodeEnum.InnerError, head, "MomentController.MyPublishMomentDetailRequest", ex)); } }
public JsonResult MomentList(RequestContext <MomentListRequest> request) { RequestHead head = default; try { if (request == null) { return(ErrorJsonResult(ErrCodeEnum.ParametersIsNotValid_Code)); } if (!CheckAuth(request.Head)) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestHead)); } head = request.Head; if (request.Data == null || request.Data.PageIndex < 0) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestBody)); } return(new JsonResult(productBiz.MomentList(request))); } catch (Exception ex) { return(ErrorJsonResult(ErrCodeEnum.InnerError, head, "ProductController.MomentList", ex)); } }
public string test() { string apiKey = @"N1iWv9cqnB0kM5gJKmBYu2NtmCC1HSLkmm8JByRSD4E"; string apiSecret = @"2CGCU3DvYvXxlUz4slvJfvPOQpDO0GtBkDw3aNzug7s"; RequestBody reqBody = new RequestBody(); string baseUrl = @"https://api.bitfinex.com"; string url = @"/v1/account_infos"; reqBody.request = url; //DateTime d = new DateTime(2017,11,22); reqBody.nonce = TimeHelp.GetTimeStamp(DateTime.Now); //reqBody.nonce = "1511318188781"; string payload = Base64Encode(Encoding.UTF8, JsonConvert.SerializeObject(reqBody, Newtonsoft.Json.Formatting.None)); string signature = EncryptUtil.HmacSha384(payload, apiSecret); RequestHead reqHead = new RequestHead(); reqHead.apiKey = apiKey; reqHead.payload = payload; reqHead.signature = signature; RequestData req = new RequestData(); req.body = reqBody; req.head = reqHead; //string postJson = JsonConvert.SerializeObject(req, Newtonsoft.Json.Formatting.None); var result = PostFunction(baseUrl + url, req); //PostDataToWX(baseUrl + url, req); //Request_WebClient(baseUrl + url, req); return(""); }
/// <summary> /// 请求处理 /// </summary> /// <param name="command">请求指令</param> /// <param name="head">请求报文头</param> /// <param name="route">最优路由</param> /// <param name="body">请求参数</param> /// <returns></returns> private async Task <string> HandleRequest(string command, RequestHead head, RouteData route, Dictionary <string, object> body) { string response; // 根据请求参数判断是否启用缓存 // 启用-生成缓存KEY,并尝试读取缓存,成功则返回缓存值,失败则转发请求并更新缓存 // 不启用-转发请求 bool isUseCache = CheckUseCache(head.UseCache, route, body); if (isUseCache) { string key = GeneralCacheKey(command, head.Version, head.System, route, body); var cacheValue = CacheHelper.Get(key); if (cacheValue != null) { response = cacheValue; FinalUseCache = true; } else { response = await HttpClient.PostAsync(route.Handle, head, body); CacheHelper.Set(key, response, new TimeSpan(0, 0, route.CacheTime)); FinalUseCache = false; } } else { response = await HttpClient.PostAsync(route.Handle, head, body); FinalUseCache = false; } return(response); }
public JsonResult AskAction(RequestContext <AskActionRequest> request) { RequestHead head = default; try { if (request == null) { return(ErrorJsonResult(ErrCodeEnum.ParametersIsNotValid_Code)); } if (!CheckAuth(request.Head)) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestHead)); } head = request.Head; if (request.Data == null || string.IsNullOrEmpty(request.Data.Action)) { return(ErrorJsonResult(ErrCodeEnum.InvalidRequestBody)); } return(new JsonResult(askBiz.AskAction(request))); } catch (Exception ex) { return(ErrorJsonResult(ErrCodeEnum.InnerError, head, "AskController.AskAction", ex)); } }
/// <summary> /// 获取请求信息 /// </summary> /// <param name="request"></param> private void GetRequestData(Request request) { //- Head var head = request.Form["head"]; if (head == null) { throw new Exception("Request head data not exist or format error"); } head = Encoding.UTF8.GetString(EncryptHelper.Base64Decode(head)); HeadData = JsonConvert.DeserializeObject <RequestHead>(head); if (HeadData == null) { throw new ArgumentNullException("head", "Request head data not exist"); } if (string.IsNullOrEmpty(HeadData.Command)) { throw new ArgumentNullException("command", "Request command is null or empty"); } //- Body var bodyForm = request.Form["body"]; if (!string.IsNullOrWhiteSpace(bodyForm)) { string key = Settings.GetSignKey(HeadData.Channel); bodyForm = EncryptHelper.DESDecrypt(bodyForm, key); bodyForm = Encoding.UTF8.GetString(EncryptHelper.Base64Decode(bodyForm)); BodyDatas = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(bodyForm); } //- Route // Command参数如果不是json数组装换为数组处理 if (!HeadData.Command.StartsWith("[") && !HeadData.Command.EndsWith("]")) { HeadData.Command = string.Format("[\"{0}\"]", HeadData.Command); } string[] cmds = JsonConvert.DeserializeObject <string[]>(HeadData.Command); if (BodyDatas != null && cmds.Count() != BodyDatas.Count) { throw new Exception("Request body number of parameters error"); } Dictionary <string, RouteData> routeDatas = new Dictionary <string, RouteData>(); foreach (var cmd in cmds) { RouteData route = RouteHelper.GetOptimalRoute(cmd, HeadData.Version, HeadData.System); if (route == null) { throw new ArgumentNullException("route", "Route data not exist"); } routeDatas.Add(cmd, route); } //路由负载 OptimalRoutes = RouteHelper.RoutingLoadBalance(routeDatas); }
public ResponseContext <UpdateUserInfoType> GetUserUpdateInfo(RequestHead head) { var response = new ResponseContext <UpdateUserInfoType>(); var userInfo = GetUserInfoByUid(head.UId); if (userInfo == null || userInfo.Platform != head.Platform) { response.ResultCode = ErrCodeEnum.UserNoExist; response.ResultMessage = "用户不存在"; return(response); } response.Data = new UpdateUserInfoType() { Portrait = userInfo.Portrait, NickName = userInfo.NickName, Gender = userInfo.Gender, LiveState = userInfo.LiveState, Grade = userInfo.Grade, SchoolName = userInfo.SchoolName ?? "", BirthDate = userInfo.BirthDate.HasValue?userInfo.BirthDate.Value.ToString("yyyy-MM-dd"):"1990-01-01", Mobile = userInfo.Mobile ?? "", WeChatNo = userInfo.WeChatNo ?? "", QQNo = userInfo.QQNo ?? "" }; return(response); }
protected override void FireConnection(Tcp.Connection connection, RequestHead req, string subprotocol, byte[] trail) { Connection newConnection = new Connection(connection, req, new Definition.Connection.ServerMode()); newConnection.SetSubprotocol(subprotocol); OnConnection?.Invoke(newConnection); newConnection.Initiate(trail); }
protected bool CheckHead(RequestHead header) { if (header == null) { return(false); } header.TransactionId = Guid.NewGuid(); return(true); }
public void Info(string title, string content, RequestHead head = null) { var entity = GetLogEntity(head); entity.LogLevel = LogLevelEnum.Info; entity.Title = title; entity.Content = content; logDao.InsertLog(entity); }
/// <summary> /// 获取错误的返回 /// </summary> protected JsonResult ErrorJsonResult(ErrCodeEnum code, RequestHead head = null, string title = null, Exception ex = null) { if (!string.IsNullOrEmpty(title) || ex != null) { log.ErrorAsync(title, ex, head); } return(new JsonResult(new ResponseContext <object>(code, null))); }
/// <summary> /// 获取动态申请列表 /// </summary> /// <param name="momentId">动态Id</param> /// <param name="passApply">仅仅查看申请通过数据</param> /// <returns></returns> public static List <ApplyItem> GetApplyList(Guid momentId, bool isValid, RequestHead head, long momentUId = 0) { var applyList = applyInfoDao.GetListByMomentId(momentId); if (applyList.IsNullOrEmpty()) { return(null); } if (isValid) { applyList = applyList.Where(a => a.ApplyState == ApplyStateEnum.申请通过 || a.UId == head.UId || a.MomentUId == head.UId).ToList(); } var resultList = new List <ApplyItem>(); for (var index = 0; index < applyList.Count; index++) { var apply = applyList[index]; var userInfo = uerInfoBiz.GetUserInfoByUid(apply.UId); if (userInfo == null) { continue; } var result = new ApplyItem() { ApplyId = apply.ApplyId, TextColor = TextColorMap(apply.ApplyState), UserInfo = UserInfoBuilder.BuildUserInfo(userInfo, head), ShowBorder = index != applyList.Count - 1, CreateTimeDesc = DateTimeHelper.GetDateDesc(apply.CreateTime, true), }; if (apply.UId == head.UId) { result.StateDesc = StateDescMapV1(apply.ApplyState); } else { result.StateDesc = StateDescMap(apply.ApplyState); } if (!isValid) { var applyDetaiList = applyDetailDao.GetListByApplyId(apply.ApplyId); if (applyDetaiList.NotEmpty()) { applyDetaiList = applyDetaiList.Where(a => a.UId != momentUId).OrderByDescending(a => a.CreateTime).ToList(); if (applyDetaiList.NotEmpty()) { result.Content = applyDetaiList[0].Content; } } } resultList.Add(result); } return(resultList); }
public bool login() { if (this.hasLogin && !this.isTimeout()) { return true; } LoginRequest req = new LoginRequest(); req.UserName = ELongApiService.USER_PUBLIC; req.Password = ELongApiService.PWD_PUBLIC; LoginResponse res = elongService.Login(req); string rc = res.ResponseHead.ResultCode; this.loginTokenExpiredTime = res.LoginTokenExpiredTime; this.hasLogin= (rc== ELongApiService.RESULT_CODE_SUCCESS); this.requestHead = new RequestHead(); this.requestHead.LoginToken = res.LoginToken.ToString(); this.requestHead.Language = "CN"; return this.hasLogin; }