summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2017-12-23 20:02:43 +0000
committerdakkar <dakkar@thenautilus.net>2017-12-23 20:02:43 +0000
commitb3cfb984d774b217e7a95ba569fe873b8c05251b (patch)
treeadcb52c8dd02d429ae118d28257c548eb0072819
parentCollection class (diff)
downloadUltramarine-b3cfb984d774b217e7a95ba569fe873b8c05251b.tar.gz
Ultramarine-b3cfb984d774b217e7a95ba569fe873b8c05251b.tar.bz2
Ultramarine-b3cfb984d774b217e7a95ba569fe873b8c05251b.zip
wiring the collection into the application
-rw-r--r--bin/ultramarine14
-rw-r--r--lib/Ultramarine/Controller.pm69
2 files changed, 23 insertions, 0 deletions
diff --git a/bin/ultramarine b/bin/ultramarine
index 07cd869..e7c545e 100644
--- a/bin/ultramarine
+++ b/bin/ultramarine
@@ -2,6 +2,10 @@
use v6.d.PREVIEW;
use Ultramarine::Model::License;
use Ultramarine::Model::Users;
+use Ultramarine::Model::DirScanner;
+use Ultramarine::Model::DB;
+use Ultramarine::Model::MusicFile;
+use Ultramarine::Model::Collection;
use Ultramarine::Middleware::Authentication;
use Ultramarine::Middleware::Authorisation;
use Ultramarine::Middleware::SetContentType;
@@ -15,6 +19,16 @@ my $users = Ultramarine::Model::Users.new(
);
my $controller = Ultramarine::Controller.new(
license => Ultramarine::Model::License.new,
+ collection => Ultramarine::Model::Collection.new(
+ db => Ultramarine::Model::DB.new(
+ :db-driver<SQLite>,
+ :db-args(:database('/tmp/songs.sqlite')),
+ ),
+ dirscan => Ultramarine::Model::DirScanner.new(
+ :root('/mnt/music/Alanis Morissette'),
+ ),
+ file-class => Ultramarine::Model::MusicFile,
+ ),
authorisation => Ultramarine::Middleware::Authorisation.new,
).routes;
diff --git a/lib/Ultramarine/Controller.pm6 b/lib/Ultramarine/Controller.pm6
index 35f37a9..e864b00 100644
--- a/lib/Ultramarine/Controller.pm6
+++ b/lib/Ultramarine/Controller.pm6
@@ -8,6 +8,7 @@ use Cro;
class Ultramarine::Controller {
has $.license is required;
has $.authorisation is required;
+ has $.collection is required;
sub respond(*@body) {
response.status = 200;
@@ -65,6 +66,14 @@ class Ultramarine::Controller {
]
],
}
+ # this is clearly not a Subsonic method
+ post -> 'dakkarList' {
+ await $!collection.is-ready;
+ respond [
+ :status<ok>,
+ songs => $!collection.all-songs,
+ ];
+ }
}
}