From f8418da0749fba1daf5d354c30e73e4a3f030099 Mon Sep 17 00:00:00 2001 From: Fernando Brito Date: Mon, 26 May 2014 13:27:47 -0300 Subject: [PATCH] VLibras Rapid implementation --- Gemfile | 4 +++- Gemfile.lock | 25 ++++++++++++++++++++++++- app/admin/user.rb | 2 ++ app/admin/v_libras_request.rb | 18 ++++++++++++++++++ app/admin/v_libras_video.rb | 17 +++++++++++++++++ app/assets/stylesheets/application.css.scss | 1 + app/assets/stylesheets/bootstrap_overrides.css.scss | 46 ++++++++++++++++++++++++++++++++++++++++++++++ app/controllers/application_controller.rb | 3 +-- app/controllers/v_libras/requests_controller.rb | 20 +++++++++++++++++--- app/controllers/v_libras/videos_controller.rb | 2 +- app/models/v_libras/request.rb | 30 +++++++++++++++++------------- app/uploaders/file_uploader.rb | 42 ++++++++++++++++++++++++++++++++++++++++++ app/views/layouts/application.html.erb | 6 ++---- app/views/v_libras/requests/rapid.haml | 25 ++++++++++++------------- app/views/v_libras/videos/index.haml | 17 ++++++++--------- config/initializers/active_admin.rb | 10 +++++----- config/initializers/can_access_delayed_job_web.rb | 7 +++++++ config/locales/pt-BR.yml | 4 ++++ config/routes.rb | 9 +++++++++ db/migrate/20140523175644_add_video_filename_to_request.rb | 5 +++++ db/schema.rb | 3 ++- lib/api_client/callback_processor.rb | 7 +++++++ lib/api_client/client.rb | 26 ++++++++++++++++---------- 23 files changed, 266 insertions(+), 63 deletions(-) create mode 100644 app/admin/v_libras_request.rb create mode 100644 app/admin/v_libras_video.rb create mode 100644 app/assets/stylesheets/bootstrap_overrides.css.scss create mode 100644 app/uploaders/file_uploader.rb create mode 100644 config/initializers/can_access_delayed_job_web.rb create mode 100644 db/migrate/20140523175644_add_video_filename_to_request.rb create mode 100644 lib/api_client/callback_processor.rb diff --git a/Gemfile b/Gemfile index 936139a..f5217d1 100644 --- a/Gemfile +++ b/Gemfile @@ -12,7 +12,7 @@ gem 'sass-rails', '~> 4.0.3' gem 'twitter-bootstrap-rails' gem 'less-rails' -gem 'httparty' +gem 'httmultiparty' gem 'uglifier', '>= 1.3.0' gem 'coffee-rails', '~> 4.0.0' @@ -29,7 +29,9 @@ gem 'simple_form' gem 'inherited_resources' gem 'delayed_job_active_record' +gem 'delayed_job_web' gem 'foreman' +gem 'carrierwave' group :development do gem 'better_errors' diff --git a/Gemfile.lock b/Gemfile.lock index 9cafaea..8711895 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -69,6 +69,11 @@ GEM rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) + carrierwave (0.10.0) + activemodel (>= 3.2.0) + activesupport (>= 3.2.0) + json (>= 1.7) + mime-types (>= 1.16) celluloid (0.15.2) timers (~> 1.1.0) celluloid-io (0.15.0) @@ -100,6 +105,10 @@ GEM delayed_job_active_record (4.0.1) activerecord (>= 3.0, < 4.2) delayed_job (>= 3.0, < 4.1) + delayed_job_web (1.2.9) + activerecord (> 3.0.0) + delayed_job (> 2.0.3) + sinatra (>= 1.4.4) devise (3.2.4) bcrypt (~> 3.0) orm_adapter (~> 0.1) @@ -163,6 +172,10 @@ GEM haml (>= 4.0.0.rc.1) hpricot (~> 0.8.6) ruby_parser (~> 3.1.1) + httmultiparty (0.3.14) + httparty (>= 0.7.3) + mimemagic + multipart-post http_parser.rb (0.6.0) httparty (0.13.1) json (~> 1.8) @@ -200,10 +213,12 @@ GEM treetop (~> 1.4.8) method_source (0.8.2) mime-types (1.25.1) + mimemagic (0.2.1) mini_portile (0.5.3) minitest (5.3.3) multi_json (1.10.0) multi_xml (0.5.5) + multipart-post (2.0.0) mysql2 (0.3.15) nio4r (1.0.0) nokogiri (1.6.2) @@ -229,6 +244,8 @@ GEM rack (1.5.2) rack-livereload (0.3.15) rack + rack-protection (1.5.3) + rack rack-test (0.6.2) rack (>= 1.0) rails (4.1.1) @@ -304,6 +321,10 @@ GEM simple_form (3.0.2) actionpack (~> 4.0) activemodel (~> 4.0) + sinatra (1.4.5) + rack (~> 1.4) + rack-protection (~> 1.4) + tilt (~> 1.3, >= 1.3.4) slop (3.5.0) spring (1.1.3) sprockets (2.11.0) @@ -356,9 +377,11 @@ DEPENDENCIES binding_of_caller cancan capybara + carrierwave coffee-rails (~> 4.0.0) database_cleaner delayed_job_active_record + delayed_job_web devise factory_girl_rails faker @@ -369,7 +392,7 @@ DEPENDENCIES guard-rspec haml-rails html2haml - httparty + httmultiparty inherited_resources jquery-rails launchy diff --git a/app/admin/user.rb b/app/admin/user.rb index c9b8ee7..2c80e45 100644 --- a/app/admin/user.rb +++ b/app/admin/user.rb @@ -1,4 +1,6 @@ ActiveAdmin.register User do + menu :priority => 80 + permit_params :email, :password, :password_confirmation index do diff --git a/app/admin/v_libras_request.rb b/app/admin/v_libras_request.rb new file mode 100644 index 0000000..b643abc --- /dev/null +++ b/app/admin/v_libras_request.rb @@ -0,0 +1,18 @@ +ActiveAdmin.register VLibras::Request do + menu :priority => 10 + + + # See permitted parameters documentation: + # https://github.com/gregbell/active_admin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters + # + # permit_params :list, :of, :attributes, :on, :model + # + # or + # + # permit_params do + # permitted = [:permitted, :attributes] + # permitted << :other if resource.something? + # permitted + # end + +end diff --git a/app/admin/v_libras_video.rb b/app/admin/v_libras_video.rb new file mode 100644 index 0000000..6648e3a --- /dev/null +++ b/app/admin/v_libras_video.rb @@ -0,0 +1,17 @@ +ActiveAdmin.register VLibras::Video do + menu :priority => 15 + + # See permitted parameters documentation: + # https://github.com/gregbell/active_admin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters + # + # permit_params :list, :of, :attributes, :on, :model + # + # or + # + # permit_params do + # permitted = [:permitted, :attributes] + # permitted << :other if resource.something? + # permitted + # end + +end diff --git a/app/assets/stylesheets/application.css.scss b/app/assets/stylesheets/application.css.scss index a089a6d..050ab95 100644 --- a/app/assets/stylesheets/application.css.scss +++ b/app/assets/stylesheets/application.css.scss @@ -11,6 +11,7 @@ * file per style scope. * *= require 'bootstrap' + *= require 'bootstrap_overrides' *= require 'v_libras/videos' *= require_self */ diff --git a/app/assets/stylesheets/bootstrap_overrides.css.scss b/app/assets/stylesheets/bootstrap_overrides.css.scss new file mode 100644 index 0000000..8aecd73 --- /dev/null +++ b/app/assets/stylesheets/bootstrap_overrides.css.scss @@ -0,0 +1,46 @@ +.breadcrumb { + padding: 7px 14px; + margin: 0 0 18px; + background-color: #fbfbfb; + background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); + background-image: linear-gradient(top, #ffffff, #f5f5f5); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); + background-color: #fbfbfb; + background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); + background-image: linear-gradient(top, #ffffff, #f5f5f5); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); + border: 1px solid #ddd; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} +.breadcrumb li { + display: inline-block; + text-shadow: 0 1px 0 #ffffff; +} +.breadcrumb .divider { + padding: 0 5px; + color: #999999; +} +.breadcrumb .active a { + color: #333333; +} \ No newline at end of file diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index b78efb7..839e8dc 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -3,11 +3,10 @@ class ApplicationController < ActionController::Base # For APIs, you may want to use :null_session instead. protect_from_forgery with: :exception - protected def check_vlibras_api_status unless ApiClient.check_status - flash[:error] = 'SEAaaS API is down :(' + flash[:error] = t('error.api.offline') redirect_to home_path end end diff --git a/app/controllers/v_libras/requests_controller.rb b/app/controllers/v_libras/requests_controller.rb index 83d8773..01d7ae4 100644 --- a/app/controllers/v_libras/requests_controller.rb +++ b/app/controllers/v_libras/requests_controller.rb @@ -1,5 +1,6 @@ class VLibras::RequestsController < ApplicationController - before_filter :check_vlibras_api_status + protect_from_forgery with: :null_session, :only => [ :callback ] + before_filter :check_vlibras_api_status, :only => [ :rapid, :create ] def rapid @request = VLibras::Request.new @@ -8,16 +9,29 @@ class VLibras::RequestsController < ApplicationController def create @request = VLibras::Request.build_from_params(params, current_user) + video = FileUploader.new + video.cache!(params[:video]) + + subtitle = FileUploader.new + subtitle.cache!(params[:subtitle]) + + files = { :video => video, :subtitle => subtitle } + + if @request.save - @request.perform_request + @request.perform_request(files) flash[:success] = 'Sua requisição foi submetida com sucesso!' - redirect_to :action => :rapid + redirect_to v_libras_videos_path else flash[:error] = 'Algo deu errado com a sua requisição.' render :action => :rapid end + end + def callback + ApiClient::CallbackProcessor.process(params) + render :text => "OK!" end end diff --git a/app/controllers/v_libras/videos_controller.rb b/app/controllers/v_libras/videos_controller.rb index c491b8f..b446271 100644 --- a/app/controllers/v_libras/videos_controller.rb +++ b/app/controllers/v_libras/videos_controller.rb @@ -1,5 +1,5 @@ class VLibras::VideosController < ApplicationController - before_filter :check_vlibras_api_status + before_filter :check_vlibras_api_status, :only => [ :index ] def index @videos = current_user.videos diff --git a/app/models/v_libras/request.rb b/app/models/v_libras/request.rb index b337f98..76bccc2 100644 --- a/app/models/v_libras/request.rb +++ b/app/models/v_libras/request.rb @@ -2,18 +2,20 @@ # # Table name: v_libras_requests # -# id :integer not null, primary key -# status :string(255) -# service_type :string(255) -# owner_id :integer -# params :text -# response :text -# created_at :datetime -# updated_at :datetime +# id :integer not null, primary key +# status :string(255) +# service_type :string(255) +# owner_id :integer +# params :text +# response :text +# created_at :datetime +# updated_at :datetime +# video_filename :string(255) # class VLibras::Request < ActiveRecord::Base serialize :params + attr_accessor :video belongs_to :owner, :class => User @@ -21,13 +23,13 @@ class VLibras::Request < ActiveRecord::Base validates :service_type, presence: true, - inclusion: { in: %w(video-subtitle video), message: "%{value} is not a valid service type" } + inclusion: { in: %w(video-legenda video), message: "%{value} is not a valid service type" } validates :status, presence: true, - inclusion: { in: %w(created processing error success), message: "%{value} is not a valid service type" } + inclusion: { in: %w(created processing error success), message: "%{value} is not a valid status" } - before_save :default_values + before_validation :default_values default_scope { order('created_at DESC') } @@ -35,6 +37,7 @@ class VLibras::Request < ActiveRecord::Base request = self.new request.service_type = params[:service] + request.video_filename = params[:video].original_filename request.owner = user request.params = params[:params] @@ -42,10 +45,11 @@ class VLibras::Request < ActiveRecord::Base request end - def perform_request + def perform_request(files) logger.debug '[VLibras::Request] Starting request' + self.update!(status: 'processing') - ApiClient::Client.submit(self) + ApiClient::Client.submit(self, files) logger.debug '[VLibras::Request] Request done' end diff --git a/app/uploaders/file_uploader.rb b/app/uploaders/file_uploader.rb new file mode 100644 index 0000000..866e348 --- /dev/null +++ b/app/uploaders/file_uploader.rb @@ -0,0 +1,42 @@ +# encoding: utf-8 + +class FileUploader < CarrierWave::Uploader::Base + storage :file + + def store_dir + "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" + end + + # Provide a default URL as a default if there hasn't been a file uploaded: + # def default_url + # # For Rails 3.1+ asset pipeline compatibility: + # # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_')) + # + # "/images/fallback/" + [version_name, "default.png"].compact.join('_') + # end + + # Process files as they are uploaded: + # process :scale => [200, 300] + # + # def scale(width, height) + # # do something + # end + + # Create different versions of your uploaded files: + # version :thumb do + # process :resize_to_fit => [50, 50] + # end + + # Add a white list of extensions which are allowed to be uploaded. + # For images you might use something like this: + # def extension_white_list + # %w(jpg jpeg gif png) + # end + + # Override the filename of the uploaded files: + # Avoid using model.id or version_name here, see uploader/store.rb for details. + # def filename + # "something.jpg" if original_filename + # end + +end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 5004f84..f7cdf9d 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -72,15 +72,13 @@
-
- <% if content_for?(:menu) %> <% end %> -
+ <% flash.each do |type, message| %>
@@ -89,7 +87,7 @@ <% end %> <%= yield %> -
+ diff --git a/app/views/v_libras/requests/rapid.haml b/app/views/v_libras/requests/rapid.haml index 9bae1a7..2ba678f 100644 --- a/app/views/v_libras/requests/rapid.haml +++ b/app/views/v_libras/requests/rapid.haml @@ -4,7 +4,7 @@ %h2 = t('videos.new') - = form_tag v_libras_requests_path, method: :post do |f| + = form_tag v_libras_requests_path, method: :post, :multipart => true do |f| - if @request.errors.any? #error_explanation %p/ @@ -22,28 +22,27 @@ = radio_button_tag :service, 'video', false, :id => 'service-video' Voz %label.radio - = radio_button_tag :service, 'video-subtitle', false, :id => 'service-video-subtitle' + = radio_button_tag :service, 'video-legenda', false, :id => 'service-video-subtitle' Legenda (.SRT) #url.hide - = label_tag :url, t('videos.url'), :class => "bold" - = file_field_tag :url, :onchange => "return check_video(this)" + = label_tag :video, t('videos.url'), :class => "bold" + = file_field_tag :video, :onchange => "return check_video(this)" #legend.hide - = label_tag :legend, t('videos.subtitle'), :class => "bold" - = file_field_tag :legend, :prompt => "LEGENDA", :onchange => "return check_subtitle(this)" + = label_tag :subtitle, t('videos.subtitle'), :class => "bold" + = file_field_tag :subtitle, :prompt => "LEGENDA", :onchange => "return check_subtitle(this)" .field - = label_tag 'params[:window_size]', t('videos.window_size'), :class => "bold" - = select_tag 'params[:window_size]', options_for_select([['Pequena', 'pequeno'], ['Média', 'medio'], ['Grande', 'grande']]) + = label_tag 'params[tamanho]', t('videos.window_size'), :class => "bold" + = select_tag 'params[tamanho]', options_for_select([['Pequena', 'pequeno'], ['Média', 'medio'], ['Grande', 'grande']]) .field %p %b - = label_tag 'params[:window_position]', t('videos.window_position'), :class => "bold" - = select_tag 'params[:window_position]', options_for_select([[t('videos.top_left'), + = label_tag 'params[posicao]', t('videos.window_position'), :class => "bold" + = select_tag 'params[posicao]', options_for_select([[t('videos.top_left'), 'superior-esquerdo'], [t('videos.top_right'), 'superior-direito'], [t('videos.bottom_right'),'inferior-direito'], [t('videos.bottom_left'), 'inferior-esquerdo']]) .field - = label_tag 'params[:transparency]', t('videos.transparency'), :class => "bold" - = select_tag 'params[:transparency]', options_for_select([['Opaco', 'opaco'], ['Transparente', 'transparente']]) - = hidden_field_tag :user_id, :value => current_user.id + = label_tag 'params[transparencia]', t('videos.transparency'), :class => "bold" + = select_tag 'params[transparencia]', options_for_select([['Opaco', 'opaco'], ['Transparente', 'transparente']]) = submit_tag "Confirmar", :class => "btn btn-primary actions" diff --git a/app/views/v_libras/videos/index.haml b/app/views/v_libras/videos/index.haml index 17d5085..09e956a 100644 --- a/app/views/v_libras/videos/index.haml +++ b/app/views/v_libras/videos/index.haml @@ -1,20 +1,19 @@ .breadcrumb %h3= t('videos.list') -.row +.row.text-center - @videos.each do |video| - .span3 - = link_to image_tag("avatar.png"), video_path(video) + .span4 + = link_to image_tag("avatar.png"), video.url %p = link_to t('videos.show'), video_path(video), class: "btn btn-success" = link_to t('videos.delete'), video_path(video), confirm: t('shared.confirm_delete'), method: :delete, class: "btn btn-danger" - .breadcrumb.requests %h4= t('requests.list') -.row - %table.table.table-hover.table-striped.table-requests.span6.offset3 +.row-fluid + %table.table.table-hover.table-striped.table-requests.span8.offset2 %thead %tr %th Situação @@ -23,9 +22,9 @@ - @requests.each do |request| %tr - %td.span1= request_status_label(request.status) - %td.span2 Vídeo - %td.span3= time_ago_in_words(request.created_at) + %td.span2= request_status_label(request.status) + %td.span5= request.video_filename + %td.span5= time_ago_in_words(request.created_at) diff --git a/config/initializers/active_admin.rb b/config/initializers/active_admin.rb index 9db49ac..becd737 100644 --- a/config/initializers/active_admin.rb +++ b/config/initializers/active_admin.rb @@ -195,11 +195,11 @@ ActiveAdmin.setup do |config| # # If you wanted to add a static menu item to the default menu provided: # - # config.namespace :admin do |admin| - # admin.build_menu :default do |menu| - # menu.add label: "My Great Website", url: "http://www.mygreatwebsite.com", html_options: { target: :blank } - # end - # end + config.namespace :admin do |admin| + admin.build_menu :default do |menu| + menu.add label: 'Background Jobs Admin', url: 'delayed_job' + end + end # == Download Links diff --git a/config/initializers/can_access_delayed_job_web.rb b/config/initializers/can_access_delayed_job_web.rb new file mode 100644 index 0000000..cfd09a5 --- /dev/null +++ b/config/initializers/can_access_delayed_job_web.rb @@ -0,0 +1,7 @@ +class CanAccessDelayedJobWeb + def self.matches?(request) + current_user = request.env['warden'].user + return false if current_user.blank? + Ability.new(current_user).can? :manage, DelayedJobWeb + end +end \ No newline at end of file diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 5c6c892..97f46f3 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -9,6 +9,10 @@ pt-BR: error: 'Erro' success: 'Sucesso' + error: + api: + offline: 'O serviço de tradução de LIBRAS está fora do ar. Iremos notificar o administrador. Desculpe-nos o inconveniente.' + shared: main: "MENU" about: "SOBRE O PROJETO" diff --git a/config/routes.rb b/config/routes.rb index 1e1105e..fb82ea1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,6 +1,12 @@ Rails.application.routes.draw do devise_for :users, ActiveAdmin::Devise.config + constraints CanAccessDelayedJobWeb do + namespace :admin do + match "/delayed_job" => DelayedJobWeb, :anchor => false, via: [:get, :post] + end + end + ActiveAdmin.routes(self) root 'static#home', as: :home @@ -8,9 +14,12 @@ Rails.application.routes.draw do namespace :v_libras do resources :requests, :only => [ :new, :create ] do get 'rapid', on: :collection + post 'callback', on: :collection end resources :videos, :only => [ :index ] + + end end diff --git a/db/migrate/20140523175644_add_video_filename_to_request.rb b/db/migrate/20140523175644_add_video_filename_to_request.rb new file mode 100644 index 0000000..fcdd7f0 --- /dev/null +++ b/db/migrate/20140523175644_add_video_filename_to_request.rb @@ -0,0 +1,5 @@ +class AddVideoFilenameToRequest < ActiveRecord::Migration + def change + add_column :v_libras_requests, :video_filename, :string + end +end diff --git a/db/schema.rb b/db/schema.rb index a1f7c75..ed4b8e4 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20140522160613) do +ActiveRecord::Schema.define(version: 20140523175644) do create_table "delayed_jobs", force: true do |t| t.integer "priority", default: 0, null: false @@ -74,6 +74,7 @@ ActiveRecord::Schema.define(version: 20140522160613) do t.text "response" t.datetime "created_at" t.datetime "updated_at" + t.string "video_filename" end create_table "v_libras_videos", force: true do |t| diff --git a/lib/api_client/callback_processor.rb b/lib/api_client/callback_processor.rb new file mode 100644 index 0000000..bad554c --- /dev/null +++ b/lib/api_client/callback_processor.rb @@ -0,0 +1,7 @@ +class ApiClient::CallbackProcessor + def self.process(params) + request = VLibras::Request.find(params[:request_id]) + request.update(:status => 'success') + request.create_video(:url => params['response']) + end +end \ No newline at end of file diff --git a/lib/api_client/client.rb b/lib/api_client/client.rb index 699ba2b..9d6c3df 100644 --- a/lib/api_client/client.rb +++ b/lib/api_client/client.rb @@ -1,28 +1,34 @@ require 'httparty' module ApiClient::Client - include HTTParty + include HTTMultiParty default_timeout 10 * 60 - def self.submit(request) - request.update(status: 'processing') + def self.submit(request, files) + o = { query: request.params.clone } + o[:query].merge!({ :servico => request.service_type }) + o[:query].merge!({ :callback => "http://150.165.205.192:3000/v_libras/requests/callback?request_id=#{request.id}" }) - options = { query: request.params } + o[:query].merge!({ :video => files[:video].file.to_file }) - Delayed::Worker.logger.debug "[VLibras::Request] Options: #{options}" + unless files[:subtitle].file.nil? + o[:query].merge!({ :legenda => files[:subtitle].file.to_file }) + o[:query].merge!({ :linguagem => 'portugues' }) + end - binding.pry + Delayed::Worker.logger.debug "[VLibras::Request] Options: #{o}" - response = self.post(url_with_service('texto'), { query: { texto: 'bola', transparencia: 'opaco' } }) + response = self.post(ApiClient::API_URL, o) Delayed::Worker.logger.debug "[VLibras::Request] Status #{response.response.code}" if response.response.code == '200' - request.create_video(:url => response.parsed_response['response']) - request.update(:status => 'success') + else - request.update(:response => response.body, :status => 'error') + request.update!(:response => response.body, :status => 'error') end + rescue + end private -- libgit2 0.21.2