Class: Cloudconvert::Conversion

Inherits:
Object
  • Object
show all
Defined in:
lib/cloudconvert/conversion.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConversion

request_connection => specific to file conversion



7
8
9
10
# File 'lib/cloudconvert/conversion.rb', line 7

def initialize
      raise Cloudconvert::API_KEY_ERROR if Cloudconvert.configuration.api_key == nil
  @conversion_connection = Faraday.new(:url => Cloudconvert::CONVERSION_URL)
end

Instance Attribute Details

#connObject

Returns the value of attribute conn.



3
4
5
# File 'lib/cloudconvert/conversion.rb', line 3

def conn
  @conn
end

#conversion_connectionObject

Returns the value of attribute conversion_connection.



3
4
5
# File 'lib/cloudconvert/conversion.rb', line 3

def conversion_connection
  @conversion_connection
end

#convert_request_urlObject

Returns the value of attribute convert_request_url.



3
4
5
# File 'lib/cloudconvert/conversion.rb', line 3

def convert_request_url
  @convert_request_url
end

#process_idObject

Returns the value of attribute process_id.



3
4
5
# File 'lib/cloudconvert/conversion.rb', line 3

def process_id
  @process_id
end

#request_connectionObject

Returns the value of attribute request_connection.



3
4
5
# File 'lib/cloudconvert/conversion.rb', line 3

def request_connection
  @request_connection
end

Instance Method Details

#api_keyObject



65
66
67
68
# File 'lib/cloudconvert/conversion.rb', line 65

def api_key
  raise Cloudconvert::API_KEY_ERROR if Cloudconvert.configuration.api_key == nil
  Cloudconvert.configuration.api_key
end

#build_upload_params(file_path, outputformat, callback_url = nil, options = {}) ⇒ Object

building params for local file



93
94
95
96
97
98
# File 'lib/cloudconvert/conversion.rb', line 93

def build_upload_params(file_path, outputformat, callback_url = nil, options = {})
  upload_params = { :format => outputformat}
  upload_params.merge!(:callback => callback(callback_url)) if callback(callback_url).present?
  upload_params.merge!(:input => "download",:link => file_path )
  upload_params.merge!(options)
end

#callback(callback_url = nil) ⇒ Object



70
71
72
# File 'lib/cloudconvert/conversion.rb', line 70

def callback(callback_url = nil)
  callback_url || Cloudconvert.configuration.callback
end

#cancel_conversionObject

cancels current conversion



29
30
31
32
# File 'lib/cloudconvert/conversion.rb', line 29

def cancel_conversion
  response = @request_connection.get "/process/#{@process_id.to_s}/cancel"
  parse_response(response.body)
end

#conversion_post_request(inputformat, outputformat) ⇒ Object

send conversion http request



75
76
77
# File 'lib/cloudconvert/conversion.rb', line 75

def conversion_post_request(inputformat, outputformat)
    @conversion_connection.post "https://api.cloudconvert.org/process?inputformat=#{inputformat}&outputformat=#{outputformat}&apikey=#{api_key}"
end

#convert(inputformat, outputformat, file_path, callback_url = nil, options = {}) ⇒ Object

convert request for file



13
14
15
16
17
18
19
# File 'lib/cloudconvert/conversion.rb', line 13

def convert(inputformat, outputformat, file_path, callback_url = nil, options = {})
  raise "File path cant be blank" if file_path.nil?
  @convert_request_url = start_conversion(inputformat, outputformat)
  #initiate connection with new response host
  initiate_connection(@convert_request_url)
  upload(build_upload_params(file_path, outputformat, callback_url, options))
end

#converter_options(inputformat = "", outputformat = "") ⇒ Object

returns all possible conversions and options



60
61
62
63
# File 'lib/cloudconvert/conversion.rb', line 60

def converter_options(inputformat ="", outputformat = "")
  response = @conversion_connection.get "conversiontypes", {:inputformat => inputformat,:outputformat => outputformat }
  parse_response(response.body)
end

#delete_conversionObject

deletes finished conversion



35
36
37
38
# File 'lib/cloudconvert/conversion.rb', line 35

def delete_conversion
  response = @request_connection.get "/process/#{@process_id.to_s}/delete"
  parse_response(response.body)
end

checks if conversion finished for process id and returns download link



48
49
50
51
# File 'lib/cloudconvert/conversion.rb', line 48

def download_link
  response = status
  response["step"] == "finished" ? "http:#{response['output']['url']}" : nil
end

#initiate_connection(url) ⇒ Object



88
89
90
# File 'lib/cloudconvert/conversion.rb', line 88

def initiate_connection(url)
  @request_connection = Faraday.new(:url => url)
end

#list_conversionsObject

lists all conversions



22
23
24
25
# File 'lib/cloudconvert/conversion.rb', line 22

def list_conversions
   response = @conversion_connection.get '/processes', {:apikey => api_key }
   parse_response(response.body)
end

#parse_response(response) ⇒ Object



100
101
102
# File 'lib/cloudconvert/conversion.rb', line 100

def parse_response(response)
  JSON.parse(response)
end

#start_conversion(inputformat, outputformat) ⇒ Object



79
80
81
82
83
84
85
86
# File 'lib/cloudconvert/conversion.rb', line 79

def start_conversion(inputformat, outputformat)
  response = conversion_post_request(inputformat,outputformat)

  parsed_response = parse_response(response.body)
  @process_id = parsed_response["id"]

  "https://#{parsed_response['host']}"
end

#statusObject

checks status of conversion with process_id



54
55
56
57
# File 'lib/cloudconvert/conversion.rb', line 54

def status
  response = @request_connection.get "/process/#{@process_id.to_s}"
  parse_response(response.body)
end

#upload(upload_params) ⇒ Object

upload request



41
42
43
44
# File 'lib/cloudconvert/conversion.rb', line 41

def upload(upload_params)
  response = @request_connection.post "/process/#{@process_id.to_s}", upload_params
  parse_response(response.body)
end