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)); } }
private async Task <HttpRequestMessage> GetRequestFor <T>(Func <T, Task> action) { HttpRequestMessage request = null; string requestContent = null; Func <HttpClientConfiguration, HttpMessageHandler> messageHandlerFactory = _ => { var mockHandler = new MockHttpMessageHandler(); mockHandler.When("*").Respond(async r => { if (r.Method != HttpMethod.Get) { request = r; requestContent = await r.Content.ReadAsStringAsync(); } return(HttpResponseFactory.GetResponse(content: "''")); }); return(mockHandler); }; var kernel = new TestingKernel <ConsoleLog>(); kernel.Rebind <Func <HttpClientConfiguration, HttpMessageHandler> >().ToMethod(c => messageHandlerFactory); var client = kernel.Get <ServiceProxyProviderSpy <T> >(); client.DefaultPort = _testinghost.BasePort; await action(client.Client); var contentClone = new StringContent(requestContent, Encoding.UTF8, "application/json"); foreach (KeyValuePair <string, IEnumerable <string> > header in request.Content.Headers.Where(h => h.Key.StartsWith("X"))) { contentClone.Headers.Add(header.Key, header.Value); } kernel.Dispose(); return(new HttpRequestMessage(request.Method, request.RequestUri) { Content = contentClone }); }
public IEnumerable <Organisation> GetByStandardId(string id) { var response = _getAssessmentOrgs.GetOrganisationsByStandardId(id); if (response == null) { throw HttpResponseFactory.RaiseException( HttpStatusCode.NotFound, $"No organisation with EpaOrganisationIdentifier {id} found"); } response = response.ToList(); foreach (var organisation in response) { organisation.Uri = Resolve(organisation.Id); } return(response); }
public async Task For_ServiceProxy_TakeDefaultSlot() { Func <HttpClientConfiguration, HttpMessageHandler> messageHandlerFactory = _ => { var handlerMock = new MockHttpMessageHandler(); handlerMock.When("*").Respond(req => { req.RequestUri.Port.ShouldBe(40001); return(HttpResponseFactory.GetResponse(content: "null")); }); return(handlerMock); }; var kernel = SetUpKernel(new ServiceArguments(slotNumber: 5), messageHandlerFactory: messageHandlerFactory); var serviceProxyFunc = kernel.Get <Func <string, ServiceProxyProvider> >(); var serviceProxy = serviceProxyFunc(TestingKernel <ConsoleLog> .APPNAME); await serviceProxy.Invoke(new HttpServiceRequest("myMethod", null, new Dictionary <string, object>()), typeof(int?)); }
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)); } }
public HttpResponseMessage GetPlayerInfo(String name = "", String token = "", String rand = "") { try { // TODO - Handle token to check if lookup player is friend and/or ignored. Account acc = this.dataAccess.GetAccountByUsername(name); if (acc == null) { return(HttpResponseFactory.Response200Json(new ErrorJson { Error = ErrorMessages.ERR_NO_USER_WITH_SUCH_NAME })); } return(HttpResponseFactory.Response200Json(UserInfoJson.ToUserInfoJson(acc))); } catch (Exception ex) { return(HttpResponseFactory.Response500Plain(ex.Message)); } }
public HttpResponseMessage GetServerStatus() { try { if (ServerManager.Instance.ServerCount <= 0) { return(HttpResponseFactory.Response200Json(new ErrorJson { Error = ErrorMessages.ERR_NO_SERVERS })); } return(HttpResponseFactory.Response200Json(new ServerListJson { Servers = ServerManager.Instance.GetServers() })); } catch (Exception ex) { return(HttpResponseFactory.Response500Plain(ex.Message)); } }
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)); } }
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)); } }
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)); } }
public async Task CreatePerson_UnavailableError_ShouldReturnAnUnavailableCode() { var expected = Status.Unavailable; var personApi = ApiFactory.CreatePersonApiService(); personApi.CreatePerson(Arg.Any <CreatePersonRequestDto>()).Returns(Task.FromResult(HttpResponseFactory.CreateNotAvailableMessage(null))); var personService = new PersonService(personApi); var actual = await personService.CreatePerson("Lorem", "Ipsum", "123 Nowhere St", "509-555-1234", "99206", "WA", 23, new DateTime(1980, 01, 01)); Assert.AreEqual(expected, actual.StatusCode); }
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)); }
/// <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)); } }
public HttpResponseMessage CheckLogin(String token = "", String rand = "") { SessionInstance session = SessionManager.Instance.GetSessionByToken(token); return(HttpResponseFactory.Response200Plain(StatusKeys.USERNAME, session?.AccounData.Username)); }
public virtual void SetResponseFactory(HttpResponseFactory responseFactory) { Args.NotNull(responseFactory, "Response factory"); this.responseFactory = responseFactory; }
public HttpResponseMessage Login([FromBody] LoginFormModel loginData) { try { // TODO - Cookie token processing, version check and more checks based on received data. if (loginData == null || String.IsNullOrEmpty(loginData.I)) { return(HttpResponseFactory.Response200Json(new ErrorJson { Error = ErrorMessages.ERR_NO_LOGIN_DATA })); } String rawloginDataJSON = loginData.I.FromBase64ToString(); LoginDataJson loginDataJSON = JsonConvert.DeserializeObject <LoginDataJson>(rawloginDataJSON); // Check if such server even exists. ServerInstance server = ServerManager.Instance.GetServer(loginDataJSON.Server.Server_name); if (server == null) { return(HttpResponseFactory.Response200Json(new ErrorJson { Error = ErrorMessages.ERR_NO_SUCH_SERVER })); } Account acc = null; AccountDataDTO accData = null; // First of all, lets try to authenticate him using session token. Example use case - Level Editor relog. SessionInstance session = SessionManager.Instance.GetSessionByToken(loginData.Token); if (session == null) { // Did not work. Lets try to authenticate him using credentials instead. acc = this.dataAccess.AuthenticateUser(loginDataJSON.UserName, loginDataJSON.UserPass, this.Request.GetRemoteIPAddress()); accData = acc.ToAccountDataDTO(); session = SessionManager.Instance.GetSessionByUsername(acc.Username); if (session != null) { // He already has session. Lets remove it and raise error. HubCtxProvider.Instance.ForceLogout(server.SignalRClientId, session.AccounData.UserId, null); SessionManager.Instance.RemoveSession(session); } session = new SessionInstance( Guid.NewGuid(), loginDataJSON.LoginId, accData, loginDataJSON.Server.Server_name, this.Request.GetRemoteIPAddress(), this.Request.GetRemotePort()); SessionManager.Instance.StoreSession(session); } else { // He has session, lets try to log him out of GameServer and update his session. HubCtxProvider.Instance.ForceLogout(server.SignalRClientId, session.AccounData.UserId, null); acc = this.dataAccess.AuthenticateUser(session.AccounData.Username, this.Request.GetRemoteIPAddress()); accData = acc.ToAccountDataDTO(); session.LoginId = loginDataJSON.LoginId; session.AccounData = accData; session.Server = loginDataJSON.Server.Server_name; session.IP = this.Request.GetRemoteIPAddress(); session.Port = this.Request.GetRemotePort(); session.Extend(); } HubCtxProvider.Instance.LoginSuccessful(server.SignalRClientId, session.LoginId, accData); this.dataAccess.UpdateAccountStatus( acc, String.Concat(StatusMessages.STR_PLAYING_ON, session.Server), this.Request.GetRemoteIPAddress()); return(HttpResponseFactory.Response200Json(new LoginReplyJson { Ant = false, // TODO - Has Ant set. Email = false, // TODO - Has email set. Emblem = "", // TODO - Guild emblem URL. Guild = "0", // TODO - Guild id. GuildName = "", // TODO - Guild name. GuildOwner = 0, // TODO - Guild owner uid. LastRead = 0, // TODO - Seconds since UNIX time when user last read PMs. LastRecv = 0, // TODO - Seconds since UNIX time when user last received PM. Status = StatusMessages.STR_SUCCESS, Time = 0, // TODO - Seconds since UNIX time. Token = session.Token.ToString(), UserId = acc.Id })); } catch (PR2Exception ex) { return(HttpResponseFactory.Response200Json(new ErrorJson { Error = ex.Message })); } catch (Exception ex) { return(HttpResponseFactory.Response500Plain(ex.Message)); } }
public void NegativeContentLengthThrowsException() { var httpResponse = new Mock <HttpResponseBase>(); var result = HttpResponseFactory.Create(httpResponse.Object, -1); }
public HttpResponseMessage GetWelcomeMessage() { // TODO - Nicer welcome page. :-) return(HttpResponseFactory.Response200Plain("PR2PS.Web works!")); }
public void CreateThrowsExceptionForNullHttpResponse() { HttpResponseFactory.Create(null, 0); }
public DefaultHttpResponseParser(SessionInputBuffer buffer, LineParser parser, HttpResponseFactory responseFactory, HttpParams @params) : base(buffer, parser, @params) { Args.NotNull(responseFactory, "Response factory"); this.responseFactory = responseFactory; this.lineBuf = new CharArrayBuffer(128); }
/// <summary>Create a new HTTP service.</summary> /// <remarks>Create a new HTTP service.</remarks> /// <param name="processor">the processor to use on requests and responses</param> /// <param name="connStrategy"> /// the connection reuse strategy. If <code>null</code> /// <see cref="Org.Apache.Http.Impl.DefaultConnectionReuseStrategy.Instance">Org.Apache.Http.Impl.DefaultConnectionReuseStrategy.Instance /// </see> /// will be used. /// </param> /// <param name="responseFactory"> /// the response factory. If <code>null</code> /// <see cref="Org.Apache.Http.Impl.DefaultHttpResponseFactory.Instance">Org.Apache.Http.Impl.DefaultHttpResponseFactory.Instance /// </see> /// will be used. /// </param> /// <param name="handlerMapper">the handler mapper. May be null.</param> /// <since>4.3</since> public HttpService(HttpProcessor processor, ConnectionReuseStrategy connStrategy, HttpResponseFactory responseFactory, HttpRequestHandlerMapper handlerMapper) : this (processor, connStrategy, responseFactory, handlerMapper, null) { }
public DefaultHttpResponseParserFactory(HttpResponseFactory responseFactory) : this (null, responseFactory) { }