public Request(string clientAddress, RequestType type, string path, double version, Dictionary<string, string> headers) { ClientAddress = clientAddress; Type = type; Path = path; Version = version; Headers = headers; string lengthString; if (Headers.TryGetValue("Content-Length", out lengthString)) { try { ContentLength = Convert.ToInt32(lengthString); } catch (FormatException) { throw new ClientException("Invalid content length specified"); } } else ContentLength = null; Headers.TryGetValue("X-Real-IP", out ClientAddress); Content = new Dictionary<string, string>(); //Arguments are null until set by a non-default Handler Arguments = null; RequestHandler = null; }
//Container constructor public Handler(string name) { IsContainer = true; IsDefaultHandler = false; IsChunkedHandler = false; Name = name; HandlerDelegate = null; ArgumentTypes = null; Children = new List<Handler>(); Parent = null; }
//Default handler constructor public Handler(HandlerCallbackType handlerDelegate) { IsContainer = false; IsDefaultHandler = true; IsChunkedHandler = false; Name = null; HandlerCallback = handlerDelegate; //Default handlers can't have arguments as they must match an empty routing list ArgumentTypes = null; Children = new List<Handler>(); Parent = null; }
static void Main(string[] arguments) { WebServer server = new WebServer("127.0.0.1", 9000); Handler container = new Handler("blight"); server.Add(container); Handler markupHandler = new Handler("markup", MarkupTest); container.Add(markupHandler); Handler exceptionHandler = new Handler("exception", ExceptionTest); container.Add(exceptionHandler); SubmissionHandler = new Handler("submission", SubmissionTest); container.Add(SubmissionHandler); Handler chunkedHandler = Handler.ChunkedHandler("chunked", ChunkedTest, ContentType.Markup); container.Add(chunkedHandler); server.Run(); }
void InitialiseHandlers() { IndexHandler = new Handler(Index); Server.Add(IndexHandler); SearchHandler = new Handler("Search", Search); Server.Add(SearchHandler); ViewSummonerGamesHandler = new Handler("SummonerGames", ViewSummonerGames, ArgumentType.String, ArgumentType.Integer); Server.Add(ViewSummonerGamesHandler); ViewSummonerHandler = new Handler("Summoner", ViewSummoner, ArgumentType.String, ArgumentType.Integer); Server.Add(ViewSummonerHandler); //JSON handlers LoadAccountDataHandler = new Handler("LoadAccountData", LoadAccountData, ArgumentType.String, ArgumentType.Integer); Server.Add(LoadAccountDataHandler); AutomaticUpdatesHandler = new Handler("AutomaticUpdates", AutomaticUpdates, ArgumentType.String, ArgumentType.Integer); Server.Add(AutomaticUpdatesHandler); }
//Constructor for regular handlers public Handler(string name, HandlerDelegateType handlerDelegate, params ArgumentType[] arguments) { IsContainer = false; IsDefaultHandler = false; IsChunkedHandler = false; Name = name; HandlerDelegate = handlerDelegate; ChunkedHandlerDelegate = null; ArgumentTypes = arguments; Children = new List<Handler>(); Parent = null; }
//Constructor for chunked handlers void ChunkedHandlerInitialisation(string name, ChunkedHandlerDelegateType chunkedHandlerDelegate, ContentType contentType = ContentType.Plain, params ArgumentType[] arguments) { IsContainer = false; IsDefaultHandler = false; IsChunkedHandler = true; //The reply code is currently not customisable because it's not a common use case for chunked handlers ChunkedReplyCode = ReplyCode.Ok; ChunkedContentType = contentType; Name = name; HandlerDelegate = null; ChunkedHandlerDelegate = chunkedHandlerDelegate; ArgumentTypes = arguments; Children = new List<Handler>(); Parent = null; }
public void SetParent(Handler parent) { Parent = parent; }
public void Add(Handler child) { child.SetParent(this); Children.Add(child); }
public static Handler ChunkedHandler(string name, ChunkedHandlerDelegateType chunkedHandlerDelegate, ContentType contentType = ContentType.Plain, params ArgumentType[] arguments) { Handler handler = new Handler(); handler.ChunkedHandlerInitialisation(name, chunkedHandlerDelegate, contentType, arguments); return handler; }
void InitialiseHandlers() { Handler apiContainer = new Handler("API"); Server.Add(apiContainer); ApiSearchHandler = new Handler("Search", ApiSearch, ArgumentType.String, ArgumentType.String); apiContainer.Add(ApiSearchHandler); ApiUpdateHandler = new Handler("Update", ApiUpdateSummoner, ArgumentType.String, ArgumentType.Integer); apiContainer.Add(ApiUpdateHandler); ApiSummonerProfileHandler = new Handler("Profile", ApiSummonerProfile, ArgumentType.String, ArgumentType.Integer); apiContainer.Add(ApiSummonerProfileHandler); ApiSummonerStatisticsHandler = new Handler("Statistics", ApiSummonerStatistics, ArgumentType.String, ArgumentType.Integer); apiContainer.Add(ApiSummonerStatisticsHandler); ApiSummonerGamesHandler = new Handler("Games", ApiSummonerGames, ArgumentType.String, ArgumentType.Integer); apiContainer.Add(ApiSummonerGamesHandler); ApiSummonerRunesHandler = new Handler("Runes", ApiSummonerRunes, ArgumentType.String, ArgumentType.Integer); apiContainer.Add(ApiSummonerRunesHandler); ApiSetAutomaticUpdatesHandler = new Handler("SetAutomaticUpdates", ApiSetAutomaticUpdates, ArgumentType.String, ArgumentType.Integer, ArgumentType.Integer); apiContainer.Add(ApiSetAutomaticUpdatesHandler); IndexHandler = new Handler(Index); Server.Add(IndexHandler); }
public void Add(Handler handler) { Handlers.Add(handler); }
void InitialiseHandlers() { Handler apiContainer = new Handler("API"); Server.Add(apiContainer); ApiSearchHandler = new Handler(ApiSearchHandlerName, ApiSearch, ArgumentType.String, ArgumentType.String); apiContainer.Add(ApiSearchHandler); ApiUpdateHandler = new Handler(ApiUpdateHandlerName, ApiUpdateSummoner, ArgumentType.String, ArgumentType.Integer); apiContainer.Add(ApiUpdateHandler); ApiSummonerProfileHandler = new Handler(ApiSummonerProfileHandlerName, ApiSummonerProfile, ArgumentType.String, ArgumentType.Integer); apiContainer.Add(ApiSummonerProfileHandler); ApiSummonerStatisticsHandler = new Handler(ApiSummonerStatisticsHandlerName, ApiSummonerStatistics, ArgumentType.String, ArgumentType.Integer); apiContainer.Add(ApiSummonerStatisticsHandler); ApiSummonerGamesHandler = new Handler(ApiSummonerGamesHandlerName, ApiSummonerGames, ArgumentType.String, ArgumentType.Integer); apiContainer.Add(ApiSummonerGamesHandler); ApiSummonerRunesHandler = new Handler(ApiSummonerRunesHandlerName, ApiSummonerRunes, ArgumentType.String, ArgumentType.Integer); apiContainer.Add(ApiSummonerRunesHandler); ApiSetAutomaticUpdatesHandler = new Handler(ApiSetAutomaticUpdatesHandlerName, ApiSetAutomaticUpdates, ArgumentType.String, ArgumentType.Integer, ArgumentType.Integer); apiContainer.Add(ApiSetAutomaticUpdatesHandler); ApiWriteCommentHandler = new Handler(ApiWriteCommentName, ApiWriteComment, ArgumentType.String, ArgumentType.Integer, ArgumentType.String, ArgumentType.String); apiContainer.Add(ApiWriteCommentHandler); ApiGetCommentsHandler = new Handler(ApiGetCommentsName, ApiGetComments, ArgumentType.String, ArgumentType.Integer); apiContainer.Add(ApiGetCommentsHandler); ApiGetGameTeamHandler = new Handler(ApiGetGameTeamName, ApiGetGameTeam, ArgumentType.String, ArgumentType.Integer); apiContainer.Add(ApiGetGameTeamHandler); IndexHandler = new Handler(Index); Server.Add(IndexHandler); }