Add first version of API
parent
a28bf59584
commit
46179cd27b
|
@ -6,6 +6,7 @@ require 'librarix/helpers'
|
||||||
require 'sinatra/base'
|
require 'sinatra/base'
|
||||||
require 'sinatra/content_for'
|
require 'sinatra/content_for'
|
||||||
require 'sinatra/json'
|
require 'sinatra/json'
|
||||||
|
require 'sinatra/namespace'
|
||||||
|
|
||||||
require 'yaml'
|
require 'yaml'
|
||||||
require 'slim'
|
require 'slim'
|
||||||
|
@ -24,6 +25,55 @@ module Librarix
|
||||||
helpers Librarix::Menu::Helper
|
helpers Librarix::Menu::Helper
|
||||||
helpers Librarix::Helpers
|
helpers Librarix::Helpers
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
get '/' do
|
get '/' do
|
||||||
slim :index, locals: {filter: Librarix::Filter.new(params)}
|
slim :index, locals: {filter: Librarix::Filter.new(params)}
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue