Ignore:
Timestamp:
Aug 12, 2015, 6:10:28 PM (9 years ago)
Author:
alloc
Message:

Fixes 5_7_9

File:
1 edited

Legend:

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

    r247 r250  
    44using System.IO;
    55using System.Net;
     6using System.Reflection;
    67using System.Threading;
    78
     
    1415                public ApiHandler (string staticPart, string moduleName = null) : base(moduleName) {
    1516                        this.staticPart = staticPart;
    16                         addApi ("getlandclaims", new GetLandClaims ());
    17                         addApi ("getplayersonline", new GetPlayersOnline ());
    18                         addApi ("getplayerslocation", new GetPlayersLocation ());
    19                         addApi ("getplayerinventory", new GetPlayerInventory ());
    20                         addApi ("getstats", new GetStats ());
     17
     18                        foreach (Type t in Assembly.GetExecutingAssembly ().GetTypes ()) {
     19                                if (!t.IsAbstract && t.IsSubclassOf (typeof(WebAPI))) {
     20                                        ConstructorInfo ctor = t.GetConstructor (new Type[0]);
     21                                        if (ctor != null) {
     22                                                WebAPI apiInstance = (WebAPI)ctor.Invoke (new object[0]);
     23                                                addApi (t.Name.ToLower (), apiInstance);
     24                                        }
     25                                }
     26                        }
    2127                }
    2228
     
    3844                        } else {
    3945                                foreach (KeyValuePair<string, WebAPI> kvp in apis) {
    40                                         try {
    41                                                 if (apiName.StartsWith (kvp.Key)) {
     46                                        if (apiName.StartsWith (kvp.Key)) {
     47                                                try {
    4248                                                        kvp.Value.HandleRequest (req, resp, user, permissionLevel);
    4349                                                        return;
     50                                                } catch (Exception e) {
     51                                                        Log.Error ("Error in ApiHandler.HandleRequest(): Handler {0} threw an exception:", kvp.Key);
     52                                                        Log.Exception (e);
     53                                                        resp.StatusCode = (int)HttpStatusCode.InternalServerError;
     54                                                        return;
    4455                                                }
    45                                         } catch (Exception e) {
    46                                                 Log.Out ("Error in ApiHandler.HandleRequest(): Handler threw an exception: " + e);
    47                                                 resp.StatusCode = (int)HttpStatusCode.InternalServerError;
    48                                                 return;
    4956                                        }
    5057                                }
Note: See TracChangeset for help on using the changeset viewer.