Ignore:
Timestamp:
Sep 4, 2018, 2:33:52 PM (6 years ago)
Author:
alloc
Message:

More cleanup, allocation improvements

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/MapRendering/Web/Handlers/ApiHandler.cs

    r325 r326  
    77namespace AllocsFixes.NetConnections.Servers.Web.Handlers {
    88        public class ApiHandler : PathHandler {
    9                 private readonly Dictionary<string, WebAPI> apis = new Dictionary<string, WebAPI> ();
     9                private readonly Dictionary<string, WebAPI> apis = new CaseInsensitiveStringDictionary<WebAPI> ();
    1010                private readonly string staticPart;
    1111
     
    1818                                        if (ctor != null) {
    1919                                                WebAPI apiInstance = (WebAPI) ctor.Invoke (new object [0]);
    20                                                 addApi (t.Name.ToLower (), apiInstance);
     20                                                addApi (apiInstance.Name, apiInstance);
    2121                                        }
    2222                                }
     
    5252                        }
    5353
    54                         foreach (KeyValuePair<string, WebAPI> kvp in apis) {
    55                                 if (apiName.StartsWith (kvp.Key)) {
    56                                         try {
    57                                                 kvp.Value.HandleRequest (req, resp, user, permissionLevel);
    58                                                 return;
    59                                         } catch (Exception e) {
    60                                                 Log.Error ("Error in ApiHandler.HandleRequest(): Handler {0} threw an exception:", kvp.Key);
    61                                                 Log.Exception (e);
    62                                                 resp.StatusCode = (int) HttpStatusCode.InternalServerError;
    63                                                 return;
    64                                         }
     54                        WebAPI api;
     55                        if (apis.TryGetValue (apiName, out api)) {
     56                                try {
     57                                        api.HandleRequest (req, resp, user, permissionLevel);
     58                                        return;
     59                                } catch (Exception e) {
     60                                        Log.Error ("Error in ApiHandler.HandleRequest(): Handler {0} threw an exception:", api.Name);
     61                                        Log.Exception (e);
     62                                        resp.StatusCode = (int) HttpStatusCode.InternalServerError;
     63                                        return;
    6564                                }
    6665                        }
    67 
     66                       
    6867                        Log.Out ("Error in ApiHandler.HandleRequest(): No handler found for API \"" + apiName + "\"");
    6968                        resp.StatusCode = (int) HttpStatusCode.NotFound;
Note: See TracChangeset for help on using the changeset viewer.