Showing 3 changed files with 23 additions and 7 deletions
+1
.gitignore
... ...
@@ -38,3 +38,4 @@ xt/import_rep.db
38 38
 xt/import_rep_user
39 39
 xt/smart_http.db
40 40
 xt/smart_http
41
+public/api/*
+21 -6
lib/Biblesearch.pm
... ...
@@ -4,6 +4,9 @@ our $VERSION = '0.01';
4 4
 
5 5
 use Mojo::Base 'Mojolicious';
6 6
 use DBIx::Custom;
7
+use File::Path 'mkpath';
8
+use Mojo::JSON;
9
+use Mojo::Util 'spurt';
7 10
 
8 11
 has 'dbi';
9 12
 
... ...
@@ -35,18 +38,30 @@ sub startup {
35 38
   # Route
36 39
   my $r = $self->routes;
37 40
   $r->get('/')->to(template => 'index');
38
-  $r->get('/api/book/:id/content')->to(cb => sub {
41
+  $r->get('/api/book/:id/content.json')->to(cb => sub {
39 42
     my $self = shift;
40 43
     my $id = $self->param('id');
41 44
     
42 45
     my $dbi = $self->app->dbi;
43 46
     my $content = $dbi->model('book')->select('content', id => $id)->value;
44 47
     
45
-    my $data = {
46
-      content => $content
47
-    };
48
-    
49
-    $self->render(json => $data);
48
+    if ($content) {
49
+      my $dir = $self->app->home->rel_file("public/api/book/$id");
50
+      mkpath $dir;
51
+      
52
+      my $data = {
53
+        content => $content
54
+      };
55
+      
56
+      my $json = Mojo::JSON->new;
57
+      my $data_json = $json->encode($data);
58
+      spurt $data_json, $self->app->home->rel_file("public/api/book/$id/content.json");
59
+      
60
+      $self->render_static("/api/book/$id/content.json");
61
+    }
62
+    else {
63
+      $self->render_not_found;
64
+    }
50 65
   });
51 66
   
52 67
   $r->get('/api/word-count/:word')->to(cb => sub {
+1 -1
templates/index.html.ep
... ...
@@ -73,7 +73,7 @@
73 73
       var ret = book_id_str.match(/book-(\d+)/);
74 74
       var book_id = ret[1];
75 75
       
76
-      $.get('/api/book/' + book_id + '/content', function (result) {
76
+      $.get('/api/book/' + book_id + '/content.json', function (result) {
77 77
 
78 78
         if (current_word) {
79 79
           var i = 1;