2015-10-30 12:59:58 +01:00
|
|
|
require 'librarix/filter'
|
2015-10-30 12:56:44 +01:00
|
|
|
require 'librarix/menu'
|
2015-10-21 12:37:28 +02:00
|
|
|
require 'librarix/the_movie_db'
|
2015-11-12 12:33:22 +01:00
|
|
|
require 'librarix/helpers'
|
2015-10-21 12:37:28 +02:00
|
|
|
|
|
|
|
require 'sinatra/base'
|
|
|
|
require 'sinatra/content_for'
|
|
|
|
require 'sinatra/json'
|
2019-06-13 12:43:58 +02:00
|
|
|
require 'sinatra/namespace'
|
2015-10-21 12:37:28 +02:00
|
|
|
|
|
|
|
require 'yaml'
|
|
|
|
require 'slim'
|
|
|
|
require 'themoviedb'
|
|
|
|
|
|
|
|
module Librarix
|
|
|
|
class Application < Sinatra::Application
|
2015-10-30 12:56:44 +01:00
|
|
|
def initialize(app = nil)
|
|
|
|
super
|
|
|
|
|
|
|
|
Librarix::Menu.menu.add 'Home', '/'
|
|
|
|
Librarix::Menu.menu.add 'Add a movie', '/search'
|
|
|
|
end
|
|
|
|
|
2015-10-21 12:37:28 +02:00
|
|
|
helpers Librarix::TheMovieDB
|
2015-10-30 12:56:44 +01:00
|
|
|
helpers Librarix::Menu::Helper
|
2015-11-12 12:33:22 +01:00
|
|
|
helpers Librarix::Helpers
|
2015-10-21 12:37:28 +02:00
|
|
|
|
2019-06-13 12:43:58 +02:00
|
|
|
namespace '/api/v1' do
|
|
|
|
helpers do
|
|
|
|
def base_url
|
|
|
|
@base_url ||= "#{request.env['rack.url_scheme']}://#{request.env['HTTP_HOST']}"
|
|
|
|
end
|
|
|
|
|
|
|
|
def json_params
|
|
|
|
begin
|
|
|
|
JSON.parse(request.body.read)
|
|
|
|
rescue
|
|
|
|
halt 400, { message:'Invalid JSON' }.to_json
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
before do
|
|
|
|
content_type 'application/json'
|
|
|
|
end
|
|
|
|
|
|
|
|
get '/movies' do
|
|
|
|
Librarix::Filter.new(params).movies.to_json
|
|
|
|
end
|
|
|
|
|
|
|
|
post '/movies' do
|
|
|
|
id = json_params['tmdb_id'].to_i
|
|
|
|
movie = Tmdb::Movie.detail(id)
|
|
|
|
|
|
|
|
if movie['status_code'] != 34 && !Librarix::Redis::Movie.new(id).added?
|
|
|
|
Librarix::Redis::Movie.new(id).add.to_json
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
get '/movies/:id' do |id|
|
|
|
|
Librarix::Redis::Movie.new(id).fetch.to_json
|
|
|
|
end
|
|
|
|
|
|
|
|
get '/movies/:id/fetch' do |id|
|
|
|
|
Librarix::Redis::Movie.new(id).update
|
|
|
|
end
|
|
|
|
|
|
|
|
patch '/movies/:id/view' do |id|
|
|
|
|
Librarix::Redis::Movie.new(params[:id]).view
|
|
|
|
end
|
|
|
|
|
|
|
|
delete '/movies/:id' do |id|
|
|
|
|
Librarix::Redis::Movie.new(params[:id]).remove
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2015-10-21 12:37:28 +02:00
|
|
|
get '/' do
|
2015-11-13 12:54:45 +01:00
|
|
|
slim :index, locals: {filter: Librarix::Filter.new(params)}
|
2015-10-21 12:37:28 +02:00
|
|
|
end
|
|
|
|
|
2015-11-12 12:40:16 +01:00
|
|
|
get '/movie/:id' do |id|
|
|
|
|
movie = Librarix::Redis::Movie.new(id).fetch
|
2015-11-19 12:48:37 +01:00
|
|
|
|
|
|
|
if request.xhr?
|
|
|
|
slim :'partials/movie', layout: false, locals: {movie: movie}
|
|
|
|
else
|
|
|
|
slim :movie, locals: {movie: movie}
|
|
|
|
end
|
2015-11-12 12:40:16 +01:00
|
|
|
end
|
|
|
|
|
2015-10-21 12:37:28 +02:00
|
|
|
get '/search' do
|
2015-10-22 12:58:43 +02:00
|
|
|
movies = if params['search'].nil?
|
|
|
|
Tmdb::Movie.popular.map { |m| Tmdb::Movie.new(m) }
|
|
|
|
elsif params['search'] == ''
|
|
|
|
[]
|
|
|
|
else
|
|
|
|
Tmdb::Movie.find(params['search'])
|
|
|
|
end
|
|
|
|
|
2015-11-18 16:18:59 +01:00
|
|
|
slim :search, locals: {movies: movies}
|
2015-10-21 12:37:28 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
post '/add' do
|
|
|
|
id = params[:id].to_i
|
|
|
|
movie = Tmdb::Movie.detail(id)
|
|
|
|
|
|
|
|
if movie['status_code'] == 34
|
|
|
|
elsif Librarix::Redis::Movie.new(id).added?
|
|
|
|
else
|
|
|
|
Librarix::Redis::Movie.new(id).add
|
|
|
|
end
|
|
|
|
redirect to('/')
|
|
|
|
end
|
|
|
|
|
2015-11-19 12:57:05 +01:00
|
|
|
post '/update' do
|
|
|
|
movie = Librarix::Redis::Movie.new(params[:id]).update
|
|
|
|
|
|
|
|
if request.xhr?
|
|
|
|
slim :'partials/movie', layout: false, locals: {movie: movie}
|
|
|
|
else
|
|
|
|
redirect to('/')
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2015-10-21 12:37:28 +02:00
|
|
|
post '/remove' do
|
|
|
|
Librarix::Redis::Movie.new(params[:id]).remove
|
|
|
|
|
2015-10-22 12:58:43 +02:00
|
|
|
if request.xhr?
|
|
|
|
""
|
|
|
|
else
|
|
|
|
redirect to('/')
|
|
|
|
end
|
2015-10-21 12:37:28 +02:00
|
|
|
end
|
2015-10-30 12:48:47 +01:00
|
|
|
|
|
|
|
post '/view' do
|
|
|
|
Librarix::Redis::Movie.new(params[:id]).view
|
|
|
|
|
|
|
|
if request.xhr?
|
|
|
|
""
|
|
|
|
else
|
|
|
|
redirect to('/')
|
|
|
|
end
|
|
|
|
end
|
2015-10-21 12:37:28 +02:00
|
|
|
end
|
|
|
|
end
|