request.rb
1.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# == Schema Information
#
# 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
# video_filename :string(255)
#
class VLibras::Request < ActiveRecord::Base
serialize :params
attr_accessor :video
belongs_to :owner, :class => User
has_one :video, :class => VLibras::Video
validates :service_type,
presence: true,
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 status" }
before_validation :default_values
default_scope { order('created_at DESC') }
def self.build_from_params(params, user)
request = self.new
request.service_type = params[:service]
request.video_filename = params[:video].original_filename
request.owner = user
request.params = params[:params]
request
end
def perform_request(files)
logger.debug '[VLibras::Request] Starting request'
self.update!(status: 'processing')
ApiClient::Client.submit(self, files)
logger.debug '[VLibras::Request] Request done'
end
handle_asynchronously :perform_request
private
def default_values
self.status ||= 'created'
end
end