public NANCYRestModule(IDataStorage dataStorage, ILogger logger, IRamlDocument ramlDoc) { this.dataStorage = dataStorage; this.logger = logger; this.ramlDoc = ramlDoc; //selecting only Post without parameter as the last element of the path (i.e. /movies ) //selecting Get, Put and Delete with a parameter (some kind of id) as the as last element of the path (i.e. /movies/{id} ) var requests = from r in ramlDoc.RamlResources from m in r.RamlMethods where (m.Verb == "post" && r.Path.Last() != '}') || (m.Verb == "put" || m.Verb == "delete" || m.Verb == "get") && r.Path.Last() == '}' select new RequestDetails(r, m); foreach (var request in requests) { switch (request.Verb) { case "post": Post[request.Path] = param => processRequest(param, request, new Func<DataModel, DataModel>(dataStorage.Insert), new Func<DataModel, RequestDetails, Response>(processResp)); break; case "get": Get[request.Path] = param => processRequest(param, request, new Func<DataModel, DataModel>(dataStorage.Get), new Func<DataModel, RequestDetails, Response>(processResp)); break; case "put": Put[request.Path] = param => processRequest(param, request, new Func<DataModel, DataModel>(dataStorage.Update), new Func<DataModel, RequestDetails, Response>(processResp)); break; case "delete": Delete[request.Path] = param => processRequest(param, request, new Func<DataModel, DataModel>(dataStorage.Delete), new Func<DataModel, RequestDetails, Response>(processResp)); break; } } }
public RAMLDocWrapperTest() { testRaml = new RamlDocWrapper("test.raml"); }