librarix/lib/librarix/application.rb

80 lines
1.7 KiB
Ruby

require 'sinatra/base'
require 'sinatra/json'
require 'sinatra/namespace'
require 'yaml'
require 'themoviedb'
module Librarix
class Application < Sinatra::Application
namespace '/api/v1' do
not_found do
{error: :not_found}.to_json
end
helpers do
def base_url
@base_url ||= "#{request.env['rack.url_scheme']}://#{request.env['HTTP_HOST']}"
end
def json_params
JSON.parse(request.body.read)
rescue
halt 400, { message:'Invalid JSON' }.to_json
end
end
before do
content_type 'application/json'
end
namespace '/genres' do
get '' do
Librarix::Models::Genre.fetch.to_json
end
end
namespace '/movies' do
get '' do
Librarix::Models::Movie.where(added: true).all.to_json
end
get '/popular' do
Librarix::Models::Movie.popular.to_json
end
get '/search' do
end
get '/:id' do |id|
Librarix::Models::Movie.find_or_fetch(id).to_json
end
post '/:id' do
Librarix::Models::Movie.find_or_fetch(id).add!
{success: true}.to_json
end
get '/:id/fetch' do |id|
Librarix::Models::Movie.fetch(id).to_json
end
patch '/:id/view' do |id|
Librarix::Models::Movie.find(id: id).view!
{success: true}.to_json
end
patch '/:id/download' do |id|
Librarix::Models::Movie.find(id: id).download!
{success: true}.to_json
end
delete '/:id' do |id|
Librarix::Models::Movie.find(id: id).destroy
{success: true}.to_json
end
end
end
end
end