timbunce / WebAPI-DBIC

A composable RESTful JSON API to DBIx::Class schemas using roles and Web::Machine. PLEASE NOTE This module is no longer under active development. If you're interested in helping to develop or maintain it please fork it.
26 stars 10 forks source link

Supply routes via config #37

Open ungrim97 opened 9 years ago

ungrim97 commented 9 years ago

My current use case has the following setup:

MyApp::WAPID::Resource::Note; MyApp::WAPID::Resource::Notes; MyApp::Schema::Result::Note;

The Resource classes each contain a single subroutine:

sub forbidden {
    my ($self) = @_;

    my ($username, $password) = $self->request->headers->authorization_basic;

   return 1 unless # some check against basic auth header;
   return 0;
}

This means that the default routes don't work as they use a Generic class for all routes. Whilst I could pass in a new resource_class_for_set item this wouldn't work if I had more than one ResultSource class.

currently in my MyApp.psgi I need to add:


....
routes => [
    WebAPI::DBIC::Route->new(
        path => '/note',
        resource_class => 'MyApp::WAPID::Resource::Notes',
        resource_args => {
            set => $schema->resultset('Note'),
        }
    ),
   .... And again for the item path
]

It would be really useful to have either automatic Resource lookup....and/or definition of all routes in a myapp_routes config or similar. The format could be something like:

{
  "routes" : [
    {
      "path" : "/note",
      "resource_class" : "MyApp::WAPID::Resource::Notes",
      "set" : "Note"
    }
  ]
}