public Task<StatusData<GeneralKvPair<int, List<long>>>> UpsertRule(RequestBase request, SystemDbStatus dbMode, SystemSession session) { return _jUnitOfWork.Inbox.UpsertRule(request, dbMode, session); }
/// <summary> /// Passes or fails authentication, based on whether you provide a valid application key in the http headers of the request. /// </summary> /// <param name="actionContext">Action filter context.</param> public void OnAuthorization(HttpActionContext actionContext) { try { if (actionContext.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any() || actionContext.ControllerContext.ControllerDescriptor.GetCustomAttributes<AllowAnonymousAttribute>().Any()) return; var credentials = ProcessAuthorizationToken(actionContext.Request, Entries); if (credentials != null && credentials.Count == Entries) { var authenticationToken = actionContext.Request.Headers.FirstOrDefault(x => x.Key.Equals("Authorization", StringComparison.OrdinalIgnoreCase)).Value.First(); var body = actionContext.Request.Content.ReadAsStringAsync().Result; if (actionContext.Request.Method != HttpMethod.Get && !string.IsNullOrWhiteSpace(body) && !actionContext.Request.Content.IsMimeMultipartContent()) //NOT (If GET request or request without any body or body having image/audio/video content) { try { RequestBase req = null; if (Helper.IsJson(body)) req = JsonConvert.DeserializeObject<RequestBase>(body); else { var doc = XDocument.Load(new StringReader(body)); var xElements = doc.Descendants().Elements() as IList<XElement> ?? doc.Descendants().Elements().ToList(); var userIdData = xElements.FirstOrDefault(x => x.Name == "UserId"); var deviceIdData = xElements.FirstOrDefault(x => x.Name == "DeviceId"); if (userIdData != null && deviceIdData != null) { req = new RequestBase { UserId = Convert.ToInt32(userIdData.Value), DeviceId = deviceIdData.Value }; } } if (req != null && (!req.UserId.ToString(CultureInfo.InvariantCulture).Equals(credentials[(int)SystemSessionEntity.UserId]) || !req.DeviceId.Equals(credentials[(int)SystemSessionEntity.DeviceId]))) { actionContext.Response = actionContext.Request.SystemResponse<string>(SystemDbStatus.Unauthorized); return; } } catch (Exception ex) { actionContext.Response = actionContext.Request.SystemResponse(SystemDbStatus.GeneralError, ex.Message, false, SystemResponseMessage.NonInheritingRequestBase); return; } } if (MemoryCache.GetValue(authenticationToken) != null && SaveToSession(actionContext, credentials)) return; var dvcTyp = credentials[(int)SystemSessionEntity.DeviceTypeId]; var userExists = _service.IsAuthenticated(Convert.ToInt32(credentials[(int)SystemSessionEntity.UserId]), credentials[(int)SystemSessionEntity.UserName], credentials[(int)SystemSessionEntity.LoginToken], credentials[(int)SystemSessionEntity.DeviceId], dvcTyp, dvcTyp.Equals("W", StringComparison.OrdinalIgnoreCase) ? System.Web.HttpContext.Current.Request.UserHostAddress : null); if (userExists) { SaveToSession(actionContext, credentials); MemoryCache.Add(authenticationToken, credentials[(int)SystemSessionEntity.UserId], DateTime.Now.AddMinutes(SystemConstants.CacheExpiryTimeInMinutes)); return; } } actionContext.Response = actionContext.Request.SystemResponse<string>(SystemDbStatus.Unauthorized); } catch (Exception ex) { actionContext.Response = actionContext.Request.SystemResponse<string>(SystemDbStatus.GeneralError, null, false, ex.Message); } }
public async Task<StatusData<GeneralKvPair<int, List<long>>>> UpsertRule(RequestBase request, SystemDbStatus dbMode, SystemSession session) { var result = new StatusData<GeneralKvPair<int, List<long>>>(); if (dbMode == SystemDbStatus.Inserted) { var req = request as RuleAddRequest; var ruleRequest = new Kauwa.Inbox { UserId = request.UserId, FolderId = req.FolderId, InboxRules = new List<InboxRule> { new InboxRule { TypeUserSelection = (int)req.Rule.UserSelection, RuleTypeUser = (int)req.Rule.RuleTypeUser, ContactList = req.Rule.ContactList, GroupList = req.Rule.GroupList, RuleTypeSubject = (int)req.Rule.RuleTypeSubject, Subject = req.Rule.Subject, ApplyOnOldMessage = req.Rule.ApplyOnOldMessage } } }; var response = await Task.Factory.StartNew(() => Client.InboxRuleService.createInboxRules(ruleRequest, session.GetSession())).ConfigureAwait(false); result.Status = (SystemDbStatus)response.DbStatusCode; result.Data = new GeneralKvPair<int, List<long>> { Id = response.FolderId, Value = response.InboxRules != null ? response.InboxRules.Select(x => x.RuleId).ToList() : null }; result.SubStatus = response.DbSubStatusCode; result.Message = response.DbStatusMsg; return result; } else { var req = request as RuleUpdateRequest; var ruleRequest = new Kauwa.Inbox { UserId = request.UserId, FolderId = req.FolderId, InboxRules = new List<InboxRule> { new InboxRule { RuleId = req.MessageRuleId, TypeUserSelection = (int)req.Rule.UserSelection, RuleTypeUser = (int)req.Rule.RuleTypeUser, ContactList = req.Rule.ContactList, GroupList = req.Rule.GroupList, RuleTypeSubject = (int)req.Rule.RuleTypeSubject, Subject = req.Rule.Subject, ApplyOnOldMessage = req.Rule.ApplyOnOldMessage } } }; result = (await Task.Factory.StartNew(() => Client.InboxRuleService.updateInboxRules(ruleRequest, session.GetSession())).ConfigureAwait(false)).GetStatusData<GeneralKvPair<int, List<long>>>(); return result; } }