Example #1
0
        public HttpResponseMessage SubmitRating([FromBody] SubmitRatingFormModel ratingData)
        {
            try
            {
                if (ratingData == null || !ratingData.Level_Id.HasValue || !ratingData.Rating.HasValue)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NO_FORM_DATA));
                }

                SessionInstance mySession = SessionManager.Instance.GetSessionByToken(ratingData.Token);
                if (mySession == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NOT_LOGGED_IN));
                }

                RatingDataDTO ratingResult = this.levelsDAL.SaveRating(ratingData.Level_Id.Value, ratingData.Rating.Value, mySession.AccounData.UserId, this.Request.GetRemoteIPAddress());

                return(HttpResponseFactory.Response200Plain(StatusKeys.MESSAGE, ratingResult.ToString()));
            }
            catch (PR2Exception ex)
            {
                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ex.Message));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #2
0
        public HttpResponseMessage SendMessage([FromBody] SendMessageFormModel sendMessageData)
        {
            try
            {
                if (sendMessageData == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NO_FORM_DATA));
                }

                SessionInstance mySession = SessionManager.Instance.GetSessionByToken(sendMessageData.Token);
                if (mySession == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NOT_LOGGED_IN));
                }

                this.dataAccess.SendMessage(
                    mySession.AccounData.UserId,
                    sendMessageData.To_Name,
                    sendMessageData.Message,
                    this.Request.GetRemoteIPAddress());

                return(HttpResponseFactory.Response200Plain(StatusKeys.MESSAGE, StatusMessages.MESSAGE_SENT));
            }
            catch (PR2Exception ex)
            {
                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ex.Message));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #3
0
        public HttpResponseMessage ChangePassword([FromBody] ChangePassFormModel changePassData)
        {
            try
            {
                if (changePassData == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NO_FORM_DATA));
                }

                SessionInstance mySession = SessionManager.Instance.GetSessionByToken(changePassData.Token);
                if (mySession == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NOT_LOGGED_IN));
                }

                this.dataAccess.ChangePassword(mySession.AccounData.UserId, changePassData.Old_Pass, changePassData.New_Pass);

                return(HttpResponseFactory.Response200Plain(StatusKeys.MESSAGE, StatusMessages.PASSWORD_CHANGED));
            }
            catch (PR2Exception ex)
            {
                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ex.Message));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #4
0
        public HttpResponseMessage DeleteMessage([FromBody] DeleteOrReportMessageFormModel reportMessageData)
        {
            try
            {
                if (reportMessageData == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NO_FORM_DATA));
                }

                SessionInstance mySession = SessionManager.Instance.GetSessionByToken(reportMessageData.Token);
                if (mySession == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NOT_LOGGED_IN));
                }

                this.dataAccess.DeleteMessage(mySession.AccounData.UserId, reportMessageData.Message_Id);

                return(HttpResponseFactory.Response200Plain(StatusKeys.SUCCESS, StatusMessages.TRUE));
            }
            catch (PR2Exception ex)
            {
                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ex.Message));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #5
0
        public HttpResponseMessage GetCampaign(Int32 campaignId = 1, String token = "", String rand = "")
        {
            try
            {
                if (String.IsNullOrEmpty(ConfigurationManager.Instance.SearchUrl))
                {
                    campaignId = 8;
                }

                String campaignMaps;
                if (!WebConstants.FILE_CAMPAIGN.TryGetValue(campaignId, out campaignMaps))
                {
                    return(HttpResponseFactory.Response200Json(new ErrorJson
                    {
                        Error = ErrorMessages.ERR_NO_SUCH_LEVELS
                    }));
                }

                return(HttpResponseFactory.Response200Plain(campaignMaps));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #6
0
        public HttpResponseMessage PasswordCheck(Int64?courseID, String hash = "", String token = "", String rand = "")
        {
            try
            {
                if (!courseID.HasValue)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NO_LEVEL_ID));
                }

                SessionInstance mySession = SessionManager.Instance.GetSessionByToken(token);
                if (mySession == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NOT_LOGGED_IN));
                }

                Boolean unlocked         = this.levelsDAL.CheckLevelPassword(courseID.Value, hash);
                String  serializedResult = JsonConvert.SerializeObject(new LevelPassCheckResultJson
                {
                    Access  = unlocked ? StatusMessages.ONE : StatusMessages.ZERO,
                    LevelId = courseID.Value.ToString(),
                    UserId  = mySession.AccounData.UserId.ToString()
                });
                String encodedResult = serializedResult.ToBase64();

                return(HttpResponseFactory.Response200Plain(StatusKeys.RESULT, encodedResult));
            }
            catch (PR2Exception ex)
            {
                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ex.Message));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #7
0
        public HttpResponseMessage UploadLevel([FromBody] UploadLevelFormModel levelData)
        {
            try
            {
                if (levelData == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NO_FORM_DATA));
                }

                SessionInstance mySession = SessionManager.Instance.GetSessionByToken(levelData.Token);
                if (mySession == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NOT_LOGGED_IN));
                }

                this.levelsDAL.SaveLevel(mySession.AccounData.UserId, mySession.AccounData.Username, levelData.ToDTO(), this.Request.GetRemoteIPAddress());

                return(HttpResponseFactory.Response200Plain(StatusKeys.MESSAGE, StatusMessages.SAVE_SUCCESSFUL));
            }
            catch (PR2Exception ex)
            {
                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ex.Message));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #8
0
        public HttpResponseMessage DeleteLevel([FromBody] DeleteLevelFormModel levelData)
        {
            try
            {
                if (levelData == null || !levelData.Level_Id.HasValue)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NO_FORM_DATA));
                }

                SessionInstance mySession = SessionManager.Instance.GetSessionByToken(levelData.Token);
                if (mySession == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NOT_LOGGED_IN));
                }

                this.levelsDAL.SoftDeleteLevel(mySession.AccounData.UserId, levelData.Level_Id.Value);

                return(HttpResponseFactory.Response200Plain(StatusKeys.SUCCESS, StatusMessages.TRUE));
            }
            catch (PR2Exception ex)
            {
                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ex.Message));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #9
0
        public HttpResponseMessage RemoveLevel([FromBody] DeleteLevelFormModel levelData)
        {
            try
            {
                if (levelData == null || !levelData.Level_Id.HasValue)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NO_LEVEL_ID));
                }

                SessionInstance mySession = SessionManager.Instance.GetSessionByToken(levelData.Token);
                if (mySession == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NOT_LOGGED_IN));
                }

                if (mySession.AccounData.Group < UserGroup.MODERATOR)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NO_RIGHTS));
                }

                this.levelsDAL.UnpublishLevel(levelData.Level_Id.Value);

                return(HttpResponseFactory.Response200Plain(StatusKeys.SUCCESS, StatusMessages.TRUE));
            }
            catch (PR2Exception ex)
            {
                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ex.Message));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #10
0
        public HttpResponseMessage DownloadLevel(Int64?id, Int32?version = -1)
        {
            try
            {
                LevelDataDTO level = this.levelsDAL.GetLevel(id ?? -1, version ?? -1);

                return(HttpResponseFactory.Response200Plain(level.ToString()));
            }
            catch (PR2Exception ex)
            {
                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ex.Message));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #11
0
        public HttpResponseMessage GetLevels(Byte?page, String token = "", String rand = "")
        {
            try
            {
                List <LevelRowDTO> levels = this.levelsDAL.GetNewestLevels(page);
                this.mainDAL.FillLevelListMetadata(levels);

                return(HttpResponseFactory.Response200Plain(levels.GetLevelListString()));
            }
            catch (PR2Exception ex)
            {
                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ex.Message));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #12
0
        public HttpResponseMessage Ban([FromBody] BanFormModel banData)
        {
            try
            {
                if (banData == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NO_FORM_DATA));
                }
                else if (!banData.Duration.HasValue || banData.Duration < 1)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_INVALID_DURATION));
                }

                SessionInstance issuerSession = SessionManager.Instance.GetSessionByToken(banData.Token);
                if (issuerSession == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NOT_LOGGED_IN));
                }

                Account bannedUser = this.dataAccess.Ban(
                    issuerSession.AccounData.UserId,
                    banData.Banned_Name,
                    banData.Duration.Value,
                    banData.Reason,
                    banData.Record,
                    banData.IsIPBan);

                // User has been banned, notify all registered game servers about this event.
                HubCtxProvider.Instance.ForceLogout(bannedUser.Id, (banData.IsIPBan) ? bannedUser.LoginIP : String.Empty);

                return(HttpResponseFactory.Response200Plain(StatusKeys.SUCCESS, StatusMessages.TRUE));
            }
            catch (PR2Exception ex)
            {
                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ex.Message));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #13
0
        public HttpResponseMessage ReportMessage([FromBody] DeleteOrReportMessageFormModel reportMessageData)
        {
            try
            {
                if (reportMessageData == null ||
                    !reportMessageData.Message_Id.HasValue)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NO_FORM_DATA));
                }

                SessionInstance mySession = SessionManager.Instance.GetSessionByToken(reportMessageData.Token);
                if (mySession == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NOT_LOGGED_IN));
                }

                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NOT_IMPLEMENTED));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #14
0
        public HttpResponseMessage DeleteAllMessages(String token = "", String rand = "")
        {
            try
            {
                SessionInstance mySession = SessionManager.Instance.GetSessionByToken(token);
                if (mySession == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NOT_LOGGED_IN));
                }

                this.dataAccess.DeleteAllMessages(mySession.AccounData.UserId);

                return(HttpResponseFactory.Response200Plain(StatusKeys.SUCCESS, StatusMessages.TRUE));
            }
            catch (PR2Exception ex)
            {
                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ex.Message));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #15
0
        public HttpResponseMessage GetLevels(String token = "", String rand = "")
        {
            try
            {
                SessionInstance mySession = SessionManager.Instance.GetSessionByToken(token);
                if (mySession == null)
                {
                    return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NOT_LOGGED_IN));
                }

                List <LevelRowDTO> levels = this.levelsDAL.GetUserLevels(mySession.AccounData.UserId);
                this.mainDAL.FillLevelListMetadata(levels);

                return(HttpResponseFactory.Response200Plain(levels.GetLevelListString()));
            }
            catch (PR2Exception ex)
            {
                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ex.Message));
            }
            catch (Exception ex)
            {
                return(HttpResponseFactory.Response500Plain(ex.Message));
            }
        }
Example #16
0
        /// <summary>
        /// Performs search according to specified search query.
        /// </summary>
        /// <param name="searchData">Search query.</param>
        /// <returns>List of found maps.</returns>
        private HttpResponseMessage GetSearchResults(SearchLevelsFormModel searchData)
        {
            try
            {
                if (searchData == null)
                {
                    return(HttpResponseFactory.Response200Json(new ErrorJson
                    {
                        Error = ErrorMessages.ERR_NO_FORM_DATA
                    }));
                }

                if (String.IsNullOrEmpty(ConfigurationManager.Instance.SearchUrl))
                {
                    // External level search web API is not specified, handle the request internally.

                    List <LevelRowDTO> levels = null;

                    if (searchData.Mode == SearchMode.User)
                    {
                        Account acc = this.mainDAL.GetAccountByUsername(searchData.Search_Str);
                        if (acc == null)
                        {
                            return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ErrorMessages.ERR_NO_USER_WITH_SUCH_NAME));
                        }

                        levels = this.levelsDAL.SearchLevelsByUserId(acc.Id, searchData.Order, searchData.Dir, searchData.Page);
                    }
                    else
                    {
                        levels = this.levelsDAL.SearchLevelsByTerm(searchData.Search_Str, searchData.Order, searchData.Dir, searchData.Page);
                    }

                    this.mainDAL.FillLevelListMetadata(levels);

                    return(HttpResponseFactory.Response200Plain(levels.GetLevelListString()));
                }
                else
                {
                    // Let the external API handle the level search.

                    using (WebClient webClient = new WebClient())
                    {
                        webClient.QueryString.Add("search_str", searchData.Search_Str);
                        webClient.QueryString.Add("order", searchData.Order.ToString().ToLower());
                        webClient.QueryString.Add("mode", searchData.Mode.ToString().ToLower());
                        webClient.QueryString.Add("dir", searchData.Dir.ToString().ToLower());
                        webClient.QueryString.Add("page", (searchData.Page ?? 1).ToString());
                        webClient.QueryString.Add("rand", searchData.Rand);

                        String result = webClient.DownloadString(ConfigurationManager.Instance.SearchUrl);

                        return(HttpResponseFactory.Response200Plain(result));
                    }
                }
            }
            catch (PR2Exception ex)
            {
                return(HttpResponseFactory.Response200Plain(StatusKeys.ERROR, ex.Message));
            }
        }
Example #17
0
 public HttpResponseMessage GetWelcomeMessage()
 {
     // TODO - Nicer welcome page. :-)
     return(HttpResponseFactory.Response200Plain("PR2PS.Web works!"));
 }
Example #18
0
 public HttpResponseMessage Logout(String token = "", String rand = "")
 {
     // TODO - Figure out how real PR2 identifies your session since token is always empty.
     // Probably using cookies or idk. For now we will rely on actual game server (TCP).
     return(HttpResponseFactory.Response200Plain(StatusKeys.SUCCESS, StatusMessages.TRUE));
 }
Example #19
0
        public HttpResponseMessage CheckLogin(String token = "", String rand = "")
        {
            SessionInstance session = SessionManager.Instance.GetSessionByToken(token);

            return(HttpResponseFactory.Response200Plain(StatusKeys.USERNAME, session?.AccounData.Username));
        }