Exemplo n.º 1
0
        public HttpResponseMessage GetUserInfoByUsername(string username)
        {
            if (string.IsNullOrEmpty(username))
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "Request is Empty",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            var dbResponse = AccountHelper.GetUserInfoByUsername(username);

            switch (dbResponse.Status)
            {
            case HttpStatusCode.OK:
                return(ToolsBoxResponse.OK(new UserInfoResponseModel
                {
                    Status = HttpStatusCode.OK,
                    Message = "OK",
                    Id = dbResponse.Account.ID,
                    Username = dbResponse.Account.username,
                    Email = dbResponse.Account.email
                }));

            default:
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = dbResponse.Message,
                    Status = dbResponse.Status
                }));
            }
        }
Exemplo n.º 2
0
        private HttpResponseMessage LoginWithEmail(RegistrationRequestModel account)
        {
            if (!ToolsBox.IsEmailValid(account.email))
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "email not valid",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            var dbResponse = AccountHelper.GetUserInfoByEmail(account.email, account.password);

            switch (dbResponse.Status)
            {
            case HttpStatusCode.OK:
                return(ToolsBoxResponse.OK(new RegistrationResponseModel
                {
                    Id = dbResponse.Account.ID,
                    Token = TokenProvider.Generate(account.username, account.password),
                    Status = HttpStatusCode.OK
                }));

            default:
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = dbResponse.Message,
                    Status = dbResponse.Status
                }));
            }
        }
Exemplo n.º 3
0
 public HttpResponseMessage GetStatus()
 {
     return(ToolsBoxResponse.OK(new BasicResponseModel
     {
         Message = "OK",
         Status = HttpStatusCode.OK
     }));
 }
Exemplo n.º 4
0
        public HttpResponseMessage GetByUserId(GetUserEventsRequest request)
        {
            if (request == null)
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "Request is empty",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            DateTime start = DateTime.MinValue;

            if (!string.IsNullOrEmpty(request.StartDate) &&
                !DateTime.TryParse(request.StartDate, out start))
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "Start date is not valid.",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            DateTime end = string.IsNullOrEmpty(request.StartDate) ? DateTime.MaxValue : start;

            if (!string.IsNullOrEmpty(request.EndDate) &&
                !DateTime.TryParse(request.EndDate, out end))
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "End date is not valid.",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            request.Number = request.Number < 0 ? int.MaxValue : request.Number;

            var dbResponse = EventsHelper.GetEvents(request.CreatorId, start, end, request.Number);

            switch (dbResponse.Status)
            {
            case HttpStatusCode.OK:
                return(ToolsBoxResponse.OK(new GetEventsResponseModel
                {
                    Status = HttpStatusCode.OK,
                    Message = "Ok",
                    Events = dbResponse.Events
                }));

            default:
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = dbResponse.Message,
                    Status = dbResponse.Status
                }));
            }
        }
Exemplo n.º 5
0
        protected async override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            //TODO : implement HMAC for apiKey validation!
            try
            {
                IEnumerable <string> values;
                if (!request.Headers.TryGetValues("apikey", out values) ||
                    values.Count() == 0 ||
                    string.IsNullOrEmpty(values.ToList()[0]))
                {
                    return(ToolsBoxResponse.OK(new BasicResponseModel
                    {
                        Message = "Api key not allowed",
                        Status = HttpStatusCode.Forbidden
                    }));
                }

                var dbResponse = ApiKeysHelper.Exists(new ApiKey {
                    Value = values.ToList()[0]
                });

                switch (dbResponse.Status)
                {
                case HttpStatusCode.Forbidden:
                    return(ToolsBoxResponse.OK(new BasicResponseModel
                    {
                        Message = dbResponse.Message,
                        Status = HttpStatusCode.Forbidden
                    }));

                case HttpStatusCode.InternalServerError:
                    return(ToolsBoxResponse.OK(new BasicResponseModel
                    {
                        Message = dbResponse.Message,
                        Status = HttpStatusCode.InternalServerError
                    }));
                }
            }
            catch (Exception)
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "Api key not provided",
                    Status = HttpStatusCode.Forbidden
                }));
            }

            var response = await base.SendAsync(request, cancellationToken);

            return(response);
        }
Exemplo n.º 6
0
        public HttpResponseMessage Login(RegistrationRequestModel account)
        {
            if (account == null)
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "Request is empty",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            if (string.IsNullOrEmpty(account.password))
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "No password provided",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            if (string.IsNullOrEmpty(account.username) && string.IsNullOrEmpty(account.email))
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "No login provided",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            if (!string.IsNullOrEmpty(account.username))
            {
                return(LoginWithUsername(account));
            }

            if (!string.IsNullOrEmpty(account.email))
            {
                return(LoginWithEmail(account));
            }

            return(ToolsBoxResponse.OK(new BasicResponseModel
            {
                Message = "Can't connect with current credentials",
                Status = HttpStatusCode.BadRequest
            }));
        }
Exemplo n.º 7
0
        public HttpResponseMessage GetUserInfoById(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "Request is Empty",
                    Status = HttpStatusCode.BadRequest
                }));
            }


            int idInt;

            if (!int.TryParse(id, out idInt))
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "Id is not correct",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            var dbResponse = AccountHelper.GetUserInfoById(idInt);

            switch (dbResponse.Status)
            {
            case HttpStatusCode.OK:
                return(ToolsBoxResponse.OK(new UserInfoResponseModel
                {
                    Status = HttpStatusCode.OK,
                    Message = "OK",
                    Id = dbResponse.Account.ID,
                    Username = dbResponse.Account.username,
                    Email = dbResponse.Account.email
                }));

            default:
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = dbResponse.Message,
                    Status = dbResponse.Status
                }));
            }
        }
Exemplo n.º 8
0
        private HttpResponseMessage ProcessTokenCheck(HttpRequestMessage request)
        {
            var config             = GlobalConfiguration.Configuration;
            var controllerSelector = new DefaultHttpControllerSelector(config);

            var descriptor = controllerSelector.SelectController(request);

            if (System.Attribute.GetCustomAttributes(descriptor.ControllerType)
                .FirstOrDefault(attr => attr.TypeId.ToString().Contains(RegistrationRequiredAttribute.Name)) != null)
            {
                IEnumerable <string> values;
                if (!request.Headers.TryGetValues("token", out values) ||
                    values.Count() == 0 ||
                    string.IsNullOrEmpty(values.ToList()[0]))
                {
                    return(ToolsBoxResponse.OK(new BasicResponseModel
                    {
                        Message = "Token required",
                        Status = HttpStatusCode.Forbidden
                    }));
                }

                var result = TokenProvider.CheckToken(values.ToList()[0]);

                switch (result)
                {
                case TokenProvider.TokenStatus.WrongToken:
                    return(ToolsBoxResponse.OK(new BasicResponseModel
                    {
                        Message = "Wrong token",
                        Status = HttpStatusCode.Forbidden
                    }));

                case TokenProvider.TokenStatus.Expired:
                    return(ToolsBoxResponse.OK(new BasicResponseModel
                    {
                        Message = "Token expired",
                        Status = HttpStatusCode.Forbidden
                    }));
                }
            }

            return(null);
        }
Exemplo n.º 9
0
        private HttpResponseMessage LoginWithUsername(RegistrationRequestModel account)
        {
            var dbResponse = AccountHelper.GetUserInfoByUsername(account.username, account.password);

            switch (dbResponse.Status)
            {
            case HttpStatusCode.OK:
                return(ToolsBoxResponse.OK(new RegistrationResponseModel
                {
                    Id = dbResponse.Account.ID,
                    Token = TokenProvider.Generate(account.username, account.password),
                    Status = HttpStatusCode.OK
                }));

            default:
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = dbResponse.Message,
                    Status = dbResponse.Status
                }));
            }
        }
Exemplo n.º 10
0
        public HttpResponseMessage CreateAccount(RegistrationRequestModel account)
        {
            if (account == null)
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "Request is empty",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            if (!ToolsBox.IsEmailValid(account.email))
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "email not valid",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            if (string.IsNullOrEmpty(account.password))
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "No password provided",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            if (string.IsNullOrEmpty(account.username))
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "No username provided",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            var response = AccountHelper.AddAccount(new DataProvider.Models.Account
            {
                email    = account.email,
                password = account.password,
                username = account.username
            });

            if (response == null)
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "Account can't be created, retry later.",
                    Status = HttpStatusCode.InternalServerError
                }));
            }

            switch (response.Status)
            {
            case HttpStatusCode.OK:
                return(ToolsBoxResponse.OK(new RegistrationResponseModel
                {
                    Token = TokenProvider.Generate(account.username, account.password),
                    Id = response.Id,
                    Status = HttpStatusCode.OK
                }));

            case HttpStatusCode.BadRequest:
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = response.Message,
                    Status = HttpStatusCode.BadRequest
                }));

            default:
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = response.Message,
                    Status = HttpStatusCode.InternalServerError
                }));
            }
        }
Exemplo n.º 11
0
        public HttpResponseMessage AddEvents(AddEventRequestModel request)
        {
            if (request == null)
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "Request is empty.",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            var dbPlayerResponse = AccountHelper.ExistsWithId(request.CreatorId);

            if (dbPlayerResponse == null ||
                dbPlayerResponse.Status != HttpStatusCode.OK)
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "No user found with this Id",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            DateTime start;

            if (!DateTime.TryParse(request.StartDate, out start))
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "Start date is wrong.",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            DateTime end = start;

            if (!string.IsNullOrEmpty(request.EndDate) &&
                !DateTime.TryParse(request.EndDate, out end))
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "End date is wrong.",
                    Status = HttpStatusCode.BadRequest
                }));
            }

            var dbResponse = EventsHelper.AddEvent(new Event
            {
                created_date = DateTime.Now,
                creator_id   = request.CreatorId,
                end_date     = end,
                start_date   = start,
                titre        = request.Titre,
                description  = request.Description
            });

            if (dbResponse == null)
            {
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "An Error has occured.",
                    Status = HttpStatusCode.InternalServerError
                }));
            }

            switch (dbResponse.Status)
            {
            case HttpStatusCode.OK:
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = "OK",
                    Status = HttpStatusCode.OK
                }));

            default:
                return(ToolsBoxResponse.OK(new BasicResponseModel
                {
                    Message = dbResponse.Message,
                    Status = dbResponse.Status
                }));
            }
        }