transloadit 2.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ci.yml +23 -0
  3. data/.standard.yml +0 -0
  4. data/CHANGELOG.md +70 -55
  5. data/Gemfile +1 -1
  6. data/README.md +162 -86
  7. data/Rakefile +12 -17
  8. data/examples/README.md +94 -55
  9. data/examples/basic/audio-concat-transcoder.rb +29 -19
  10. data/examples/basic/audio-transcoder.rb +32 -22
  11. data/examples/basic/image-transcoder.rb +22 -17
  12. data/examples/basic/main.rb +31 -37
  13. data/examples/basic/media-transcoder.rb +2 -7
  14. data/lib/transloadit/api_model.rb +13 -13
  15. data/lib/transloadit/assembly.rb +27 -24
  16. data/lib/transloadit/exception.rb +2 -4
  17. data/lib/transloadit/request.rb +58 -52
  18. data/lib/transloadit/response/assembly.rb +14 -13
  19. data/lib/transloadit/response.rb +10 -10
  20. data/lib/transloadit/step.rb +13 -13
  21. data/lib/transloadit/template.rb +5 -5
  22. data/lib/transloadit/version.rb +1 -1
  23. data/lib/transloadit.rb +24 -24
  24. data/test/fixtures/cassettes/cancel_assembly.yml +3 -3
  25. data/test/fixtures/cassettes/create_template.yml +1 -1
  26. data/test/fixtures/cassettes/delete_template.yml +1 -1
  27. data/test/fixtures/cassettes/fetch_assemblies.yml +1 -1
  28. data/test/fixtures/cassettes/fetch_assembly_aborted.yml +3 -3
  29. data/test/fixtures/cassettes/fetch_assembly_errors.yml +3 -3
  30. data/test/fixtures/cassettes/fetch_assembly_executing.yml +3 -3
  31. data/test/fixtures/cassettes/fetch_assembly_notifications.yml +1 -1
  32. data/test/fixtures/cassettes/fetch_assembly_ok.yml +6 -6
  33. data/test/fixtures/cassettes/fetch_assembly_uploading.yml +3 -3
  34. data/test/fixtures/cassettes/fetch_billing.yml +1 -1
  35. data/test/fixtures/cassettes/fetch_root.yml +3 -3
  36. data/test/fixtures/cassettes/fetch_template.yml +1 -1
  37. data/test/fixtures/cassettes/fetch_templates.yml +1 -1
  38. data/test/fixtures/cassettes/post_assembly.yml +2 -2
  39. data/test/fixtures/cassettes/rate_limit_fail.yml +3 -3
  40. data/test/fixtures/cassettes/rate_limit_succeed.yml +4 -4
  41. data/test/fixtures/cassettes/replay_assembly.yml +2 -2
  42. data/test/fixtures/cassettes/replay_assembly_notification.yml +1 -1
  43. data/test/fixtures/cassettes/submit_assembly.yml +3 -3
  44. data/test/fixtures/cassettes/update_template.yml +1 -1
  45. data/test/test_helper.rb +10 -10
  46. data/test/unit/test_transloadit.rb +66 -66
  47. data/test/unit/transloadit/test_api.rb +35 -33
  48. data/test/unit/transloadit/test_assembly.rb +148 -112
  49. data/test/unit/transloadit/test_request.rb +41 -42
  50. data/test/unit/transloadit/test_response.rb +76 -76
  51. data/test/unit/transloadit/test_step.rb +52 -52
  52. data/test/unit/transloadit/test_template.rb +49 -54
  53. data/transloadit.gemspec +25 -26
  54. metadata +25 -41
  55. data/.travis.yml +0 -13
@@ -1,4 +1,4 @@
1
- require 'transloadit'
1
+ require "transloadit"
2
2
 
3
3
  #
4
4
  # Represents an Assembly API ready to make calls to the REST API endpoints.
@@ -22,7 +22,7 @@ class Transloadit::Assembly < Transloadit::ApiModel
22
22
  # server-side template. It's submitted along with a list of files to process,
23
23
  # at which point Transloadit will process and store the files according to the
24
24
  # rules in the Assembly.
25
- # See the Transloadit {documentation}[http://transloadit.com/docs/building-assembly-instructions]
25
+ # See the Transloadit {documentation}[https://transloadit.com/docs/building-assembly-instructions]
26
26
  # for futher information on Assemblies and their parameters.
27
27
  #
28
28
  # Accepts as many IO objects as you wish to process in the assembly.
@@ -36,7 +36,7 @@ class Transloadit::Assembly < Transloadit::ApiModel
36
36
  # @param [Array<IO>] *ios the files for the assembly to process
37
37
  # @param [Hash] params additional POST data to submit with the request;
38
38
  # for a full list of parameters, see the official documentation
39
- # on {templates}[http://transloadit.com/docs/templates].
39
+ # on {templates}[https://transloadit.com/docs/templates].
40
40
  # @option params [Step, Array<Step>] :steps the steps to perform in this
41
41
  # assembly
42
42
  # @option params [String] :notify_url A URL to be POSTed when the assembly
@@ -46,18 +46,18 @@ class Transloadit::Assembly < Transloadit::ApiModel
46
46
  # specifying params here directly
47
47
  #
48
48
  def create!(*ios, **params)
49
- params[:steps] = _wrap_steps_in_hash(params[:steps]) if !params[:steps].nil?
49
+ params[:steps] = _wrap_steps_in_hash(params[:steps]) unless params[:steps].nil?
50
50
 
51
51
  extra_params = {}
52
- extra_params.merge!(self.options[:fields]) if self.options[:fields]
52
+ extra_params.merge!(options[:fields]) if options[:fields]
53
53
 
54
- trials = self.options[:tries] || DEFAULT_TRIES
54
+ trials = options[:tries] || DEFAULT_TRIES
55
55
  (1..trials).each do |trial|
56
56
  # update the payload with file entries
57
- ios.each_with_index {|f, i| extra_params.update :"file_#{i}" => f }
57
+ ios.each_with_index { |f, i| extra_params.update "file_#{i}": f }
58
58
 
59
59
  response = _do_request(
60
- '/assemblies',params,'post', extra_params
60
+ "/assemblies", params, "post", extra_params
61
61
  ).extend!(Transloadit::Response::Assembly)
62
62
 
63
63
  return response unless response.rate_limit?
@@ -71,9 +71,9 @@ class Transloadit::Assembly < Transloadit::ApiModel
71
71
  # keeping this method for backward compatibility
72
72
  #
73
73
  def submit!(*ios)
74
- warn "#{caller(1)[0]}: warning: Transloadit::Assembly#submit!"\
74
+ warn "#{caller(1..1).first}: warning: Transloadit::Assembly#submit!" \
75
75
  " is deprecated. use Transloadit::Assembly#create! instead"
76
- self.create!(*ios)
76
+ create!(*ios)
77
77
  end
78
78
 
79
79
  #
@@ -81,7 +81,7 @@ class Transloadit::Assembly < Transloadit::ApiModel
81
81
  # @param [Hash] additional GET data to submit with the request
82
82
  #
83
83
  def list(params = {})
84
- _do_request('/assemblies', params)
84
+ _do_request("/assemblies", params)
85
85
  end
86
86
 
87
87
  #
@@ -98,8 +98,8 @@ class Transloadit::Assembly < Transloadit::ApiModel
98
98
  # @param [Hash] params additional POST data to submit with the request
99
99
  #
100
100
  def replay(id, params = {})
101
- params.merge!({ :wait => false })
102
- _do_request("/assemblies/#{id}/replay", params, 'post').extend!(Transloadit::Response::Assembly)
101
+ params[:wait] = false
102
+ _do_request("/assemblies/#{id}/replay", params, "post").extend!(Transloadit::Response::Assembly)
103
103
  end
104
104
 
105
105
  #
@@ -116,17 +116,17 @@ class Transloadit::Assembly < Transloadit::ApiModel
116
116
  # @param [Hash] params additional POST data to submit with the request
117
117
  #
118
118
  def replay_notification(id, params = {})
119
- _do_request("/assembly_notifications/#{id}/replay", params, 'post')
119
+ _do_request("/assembly_notifications/#{id}/replay", params, "post")
120
120
  end
121
121
 
122
122
  #
123
123
  # @return [Hash] a Transloadit-compatible Hash of the Assembly's contents
124
124
  #
125
125
  def to_hash
126
- self.options.merge(
127
- :auth => self.transloadit.to_hash,
128
- :steps => self.steps
129
- ).delete_if {|k,v| v.nil?}
126
+ options.merge(
127
+ auth: transloadit.to_hash,
128
+ steps: steps
129
+ ).delete_if { |k, v| v.nil? }
130
130
  end
131
131
 
132
132
  private
@@ -140,11 +140,14 @@ class Transloadit::Assembly < Transloadit::ApiModel
140
140
  #
141
141
  def _wrap_steps_in_hash(steps)
142
142
  case steps
143
- when nil then steps
144
- when Hash then steps
145
- when Transloadit::Step then steps.to_hash
146
- else
147
- steps.inject({}) {|h, s| h.update s }
143
+ when nil then steps
144
+ when Hash then steps
145
+ when Transloadit::Step then steps.to_hash
146
+ else
147
+ if steps.uniq(&:name) != steps
148
+ raise ArgumentError, "There are different Assembly steps using the same name"
149
+ end
150
+ steps.inject({}) { |h, s| h.update s }
148
151
  end
149
152
  end
150
153
 
@@ -160,7 +163,7 @@ class Transloadit::Assembly < Transloadit::ApiModel
160
163
  warn "Rate limit reached. Waiting for #{response.wait_time} seconds before retrying."
161
164
  sleep response.wait_time
162
165
  # RestClient closes file streams at the end of a request.
163
- ios.collect! {|file| open file.path }
166
+ ios.collect! { |file| File.open file.path }
164
167
  else
165
168
  raise Transloadit::Exception::RateLimitReached.new(response)
166
169
  end
@@ -1,15 +1,13 @@
1
- require 'transloadit'
1
+ require "transloadit"
2
2
 
3
- require 'rest-client'
3
+ require "rest-client"
4
4
 
5
5
  module Transloadit::Exception
6
-
7
6
  #
8
7
  # Exception raised when Rate limit error response is returned from the API.
9
8
  # See {Rate Limiting}[https://transloadit.com/docs/api-docs/#rate-limiting]
10
9
  #
11
10
  class RateLimitReached < RestClient::RequestEntityTooLarge
12
-
13
11
  def default_message
14
12
  retry_msg = " Retry in #{@response.wait_time} seconds" if @response
15
13
  "Transloadit Rate Limit Reached.#{retry_msg}"
@@ -1,7 +1,7 @@
1
- require 'transloadit'
1
+ require "transloadit"
2
2
 
3
- require 'rest-client'
4
- require 'openssl'
3
+ require "rest-client"
4
+ require "openssl"
5
5
 
6
6
  #
7
7
  # Wraps requests to the Transloadit API. Ensures all API requests return a
@@ -10,16 +10,16 @@ require 'openssl'
10
10
  #
11
11
  class Transloadit::Request
12
12
  # The default Transloadit API endpoint.
13
- API_ENDPOINT = URI.parse('http://api2.transloadit.com/')
13
+ API_ENDPOINT = URI.parse("https://api2.transloadit.com/")
14
14
 
15
15
  # The default headers to send to the API.
16
- API_HEADERS = { 'User-Agent' => "Transloadit Ruby SDK #{Transloadit::VERSION}" }
16
+ API_HEADERS = {"Transloadit-Client" => "ruby-sdk:#{Transloadit::VERSION}"}
17
17
 
18
18
  # The HMAC algorithm used for calculation request signatures.
19
- HMAC_ALGORITHM = OpenSSL::Digest.new('sha1')
19
+ HMAC_ALGORITHM = OpenSSL::Digest.new("sha1")
20
20
 
21
21
  # @return [String] the API endpoint for the request
22
- attr_reader :url
22
+ attr_reader :url
23
23
 
24
24
  # @return [String] the authentication secret to sign the request with
25
25
  attr_accessor :secret
@@ -34,7 +34,7 @@ class Transloadit::Request
34
34
  # @param [String] secret an optional secret with which to sign the request
35
35
  #
36
36
  def initialize(url, secret = nil)
37
- self.url = URI.parse(url.to_s)
37
+ self.url = URI.parse(url.to_s)
38
38
  self.secret = secret
39
39
  end
40
40
 
@@ -46,8 +46,8 @@ class Transloadit::Request
46
46
  # @return [Transloadit::Response] the response
47
47
  #
48
48
  def get(params = {})
49
- self.request! do
50
- self.api[url.path + self.to_query(params)].get(API_HEADERS)
49
+ request! do
50
+ api[url.path + to_query(params)].get(API_HEADERS)
51
51
  end
52
52
  end
53
53
 
@@ -59,9 +59,9 @@ class Transloadit::Request
59
59
  # @return [Transloadit::Response] the response
60
60
  #
61
61
  def delete(payload = {})
62
- self.request! do
63
- options = {:payload => self.to_payload(payload)}
64
- self.api(options = options)[url.path].delete(API_HEADERS)
62
+ request! do
63
+ options = {payload: to_payload(payload)}
64
+ api(options)[url.path].delete(API_HEADERS)
65
65
  end
66
66
  end
67
67
 
@@ -73,8 +73,8 @@ class Transloadit::Request
73
73
  # @return [Transloadit::Response] the response
74
74
  #
75
75
  def post(payload = {})
76
- self.request! do
77
- self.api[url.path].post(self.to_payload(payload), API_HEADERS)
76
+ request! do
77
+ api[url.path].post(to_payload(payload), API_HEADERS)
78
78
  end
79
79
  end
80
80
 
@@ -86,8 +86,8 @@ class Transloadit::Request
86
86
  # @return [Transloadit::Response] the response
87
87
  #
88
88
  def put(payload = {})
89
- self.request! do
90
- self.api[url.path].put(self.to_payload(payload), API_HEADERS)
89
+ request! do
90
+ api[url.path].put(to_payload(payload), API_HEADERS)
91
91
  end
92
92
  end
93
93
 
@@ -95,7 +95,18 @@ class Transloadit::Request
95
95
  # @return [String] a human-readable version of the prepared Request
96
96
  #
97
97
  def inspect
98
- self.url.to_s.inspect
98
+ url.to_s.inspect
99
+ end
100
+
101
+ #
102
+ # Computes an HMAC digest from the key and message.
103
+ #
104
+ # @param [String] key the secret key to sign with
105
+ # @param [String] message the message to sign
106
+ # @return [String] the signature of the message
107
+ #
108
+ def self._hmac(key, message)
109
+ OpenSSL::HMAC.hexdigest HMAC_ALGORITHM, key, message
99
110
  end
100
111
 
101
112
  protected
@@ -110,11 +121,9 @@ class Transloadit::Request
110
121
  # @return [RestClient::Resource] the API endpoint for this instance
111
122
  #
112
123
  def api(options = {})
113
- @api ||= begin
114
- case self.url.host
115
- when String then RestClient::Resource.new(self.url.host, options = options)
116
- else RestClient::Resource.new(API_ENDPOINT.host, options = options)
117
- end
124
+ @api ||= case url.host
125
+ when String then RestClient::Resource.new("#{url.scheme}://#{url.host}", options)
126
+ else RestClient::Resource.new("#{API_ENDPOINT.scheme}://#{API_ENDPOINT.host}", options)
118
127
  end
119
128
  end
120
129
 
@@ -128,13 +137,24 @@ class Transloadit::Request
128
137
  #
129
138
  def to_payload(payload = nil)
130
139
  return {} if payload.nil?
131
- return {} if payload.respond_to?(:empty?) and payload.empty?
140
+ return {} if payload.respond_to?(:empty?) && payload.empty?
141
+
142
+ # Create a new hash with JSONified params and a signature if a secret was provided.
143
+ # Note: We first set :params and :signature to ensure that these are the first fields
144
+ # in the multipart requests, before any file. Otherwise, a signature will only be transmitted
145
+ # after all files have been uploaded. The order of the fields in a multipart request
146
+ # follows the order of the entries in the returned hash here.
147
+ # See https://github.com/transloadit/ruby-sdk/issues/51
148
+ new_payload = {
149
+ params: MultiJson.dump(payload[:params])
150
+ }
151
+ sig = signature(new_payload[:params])
152
+ new_payload[:signature] = sig unless sig.nil?
153
+
154
+ # Copy all values, excluding :params and :signature keys.
155
+ new_payload.update payload.reject { |key, _| key == :params || key == :signature }
132
156
 
133
- # TODO: refactor this, don't update a hash that's not ours
134
- payload.update :params => MultiJson.dump(payload[:params])
135
- payload.update :signature => self.signature(payload[:params])
136
- payload.delete :signature if payload[:signature].nil?
137
- payload
157
+ new_payload
138
158
  end
139
159
 
140
160
  #
@@ -146,19 +166,18 @@ class Transloadit::Request
146
166
  # @return [String] the URI-encoded and escaped query parameters
147
167
  #
148
168
  def to_query(params = nil)
149
- return '' if params.nil?
150
- return '' if params.respond_to?(:empty?) and params.empty?
169
+ return "" if params.nil?
170
+ return "" if params.respond_to?(:empty?) && params.empty?
151
171
 
152
- escape = Regexp.new("[^#{URI::PATTERN::UNRESERVED}]")
153
172
  params_in_json = MultiJson.dump(params)
154
- uri_params = URI.escape(params_in_json, escape)
173
+ uri_params = URI.encode_www_form_component(params_in_json)
155
174
 
156
- params = {
157
- :params => uri_params,
158
- :signature => self.signature(params_in_json)
175
+ params = {
176
+ params: uri_params,
177
+ signature: signature(params_in_json)
159
178
  }
160
179
 
161
- '?' + params.map {|k,v| "#{k}=#{v}" if v }.compact.join('&')
180
+ "?" + params.map { |k, v| "#{k}=#{v}" if v }.compact.join("&")
162
181
  end
163
182
 
164
183
  #
@@ -166,7 +185,7 @@ class Transloadit::Request
166
185
  # is raised by RestClient.
167
186
  #
168
187
  def request!(&request)
169
- Transloadit::Response.new request.call
188
+ Transloadit::Response.new yield
170
189
  rescue RestClient::Exception => e
171
190
  Transloadit::Response.new e.response
172
191
  end
@@ -179,19 +198,6 @@ class Transloadit::Request
179
198
  # @return [String] the HMAC signature for the params
180
199
  #
181
200
  def signature(params)
182
- self.class._hmac(self.secret, params) if self.secret.to_s.length > 0
183
- end
184
-
185
- private
186
-
187
- #
188
- # Computes an HMAC digest from the key and message.
189
- #
190
- # @param [String] key the secret key to sign with
191
- # @param [String] message the message to sign
192
- # @return [String] the signature of the message
193
- #
194
- def self._hmac(key, message)
195
- OpenSSL::HMAC.hexdigest HMAC_ALGORITHM, key, message
201
+ self.class._hmac(secret, params) if secret.to_s.length > 0
196
202
  end
197
203
  end
@@ -1,36 +1,36 @@
1
- require 'transloadit'
1
+ require "transloadit"
2
2
 
3
3
  module Transloadit::Response::Assembly
4
4
  def reload!
5
- self.replace Transloadit::Request.new(self['assembly_url']).get
5
+ replace Transloadit::Request.new(self["assembly_ssl_url"]).get
6
6
  end
7
7
 
8
8
  def cancel!
9
- self.replace Transloadit::Request.new(self['assembly_url']).delete
9
+ replace Transloadit::Request.new(self["assembly_ssl_url"]).delete
10
10
  end
11
11
 
12
12
  def aborted?
13
- self['ok'] == 'REQUEST_ABORTED'
13
+ self["ok"] == "REQUEST_ABORTED"
14
14
  end
15
15
 
16
16
  def canceled?
17
- self['ok'] == 'ASSEMBLY_CANCELED'
17
+ self["ok"] == "ASSEMBLY_CANCELED"
18
18
  end
19
19
 
20
20
  def completed?
21
- self['ok'] == 'ASSEMBLY_COMPLETED'
21
+ self["ok"] == "ASSEMBLY_COMPLETED"
22
22
  end
23
23
 
24
24
  def error?
25
- self['error'] != nil
25
+ self["error"] != nil
26
26
  end
27
27
 
28
28
  def executing?
29
- self['ok'] == 'ASSEMBLY_EXECUTING'
29
+ self["ok"] == "ASSEMBLY_EXECUTING"
30
30
  end
31
31
 
32
32
  def replaying?
33
- self['ok'] == 'ASSEMBLY_REPLAYING'
33
+ self["ok"] == "ASSEMBLY_REPLAYING"
34
34
  end
35
35
 
36
36
  def finished?
@@ -38,15 +38,15 @@ module Transloadit::Response::Assembly
38
38
  end
39
39
 
40
40
  def uploading?
41
- self['ok'] == 'ASSEMBLY_UPLOADING'
41
+ self["ok"] == "ASSEMBLY_UPLOADING"
42
42
  end
43
43
 
44
44
  def rate_limit?
45
- self['error'] == 'RATE_LIMIT_REACHED'
45
+ self["error"] == "RATE_LIMIT_REACHED"
46
46
  end
47
47
 
48
48
  def wait_time
49
- self['info']['retryIn'] || 0
49
+ self["info"]["retryIn"] || 0
50
50
  end
51
51
 
52
52
  DEFAULT_RELOAD_TRIES = 600
@@ -55,7 +55,8 @@ module Transloadit::Response::Assembly
55
55
  tries = options[:tries] || DEFAULT_RELOAD_TRIES
56
56
 
57
57
  tries.times do
58
- sleep 1; reload!
58
+ sleep 1
59
+ reload!
59
60
  return self if finished?
60
61
  end
61
62
 
@@ -1,10 +1,10 @@
1
- require 'transloadit'
1
+ require "transloadit"
2
2
 
3
- require 'rest-client'
4
- require 'delegate'
3
+ require "rest-client"
4
+ require "delegate"
5
5
 
6
6
  class Transloadit::Response < Delegator
7
- autoload :Assembly, 'transloadit/response/assembly'
7
+ autoload :Assembly, "transloadit/response/assembly"
8
8
 
9
9
  #
10
10
  # Creates an enhanced response wrapped around a RestClient response.
@@ -12,7 +12,7 @@ class Transloadit::Response < Delegator
12
12
  # @param [RestClient::Response] response the JSON response to wrap
13
13
  #
14
14
  def initialize(response)
15
- self.__setobj__(response)
15
+ __setobj__(response)
16
16
  end
17
17
 
18
18
  #
@@ -22,7 +22,7 @@ class Transloadit::Response < Delegator
22
22
  # @return [String] the value for the attribute
23
23
  #
24
24
  def [](attribute)
25
- self.body[attribute.to_s]
25
+ body[attribute.to_s]
26
26
  end
27
27
 
28
28
  #
@@ -31,7 +31,7 @@ class Transloadit::Response < Delegator
31
31
  # @return [Hash] the parsed JSON body hash
32
32
  #
33
33
  def body
34
- MultiJson.load self.__getobj__.body
34
+ MultiJson.load __getobj__.body
35
35
  end
36
36
 
37
37
  #
@@ -40,7 +40,7 @@ class Transloadit::Response < Delegator
40
40
  # @return [String] a human-readable version of the body
41
41
  #
42
42
  def inspect
43
- self.body.inspect
43
+ body.inspect
44
44
  end
45
45
 
46
46
  #
@@ -51,7 +51,7 @@ class Transloadit::Response < Delegator
51
51
  # @return [Transloadit::Response] the extended response
52
52
  #
53
53
  def extend!(mod)
54
- self.extend(mod)
54
+ extend(mod)
55
55
  self
56
56
  end
57
57
 
@@ -84,7 +84,7 @@ class Transloadit::Response < Delegator
84
84
  # @return [Transloadit::Response] this response
85
85
  #
86
86
  def replace(other)
87
- self.__setobj__ other.__getobj__
87
+ __setobj__ other.__getobj__
88
88
  self
89
89
  end
90
90
  end
@@ -1,11 +1,11 @@
1
- require 'transloadit'
1
+ require "transloadit"
2
2
 
3
3
  #
4
4
  # Implements the concept of a step in the Transloadit API. Each Step has a
5
5
  # +robot+ (e.g., '/image/resize' or '/video/thumbnail') and a hash of
6
6
  # +options+ specific to the chosen robot.
7
7
  #
8
- # See the Transloadit {documentation}[http://transloadit.com/docs/building-assembly-instructions]
8
+ # See the Transloadit {documentation}[https://transloadit.com/docs/building-assembly-instructions]
9
9
  # for futher information on robot types and their parameters.
10
10
  #
11
11
  class Transloadit::Step
@@ -27,8 +27,8 @@ class Transloadit::Step
27
27
  # {Transloadit#step} for possible values
28
28
  #
29
29
  def initialize(name, robot, options = {})
30
- self.name = name
31
- self.robot = robot
30
+ self.name = name
31
+ self.robot = robot
32
32
  self.options = options
33
33
  end
34
34
 
@@ -38,7 +38,7 @@ class Transloadit::Step
38
38
  #
39
39
  # @param [Step, Array<Step>, Symbol, nil] input The input
40
40
  # step to use. Follows the conventions outlined in the
41
- # online {documentation}[http://transloadit.com/docs/building-assembly-instructions#special-parameters].
41
+ # online {documentation}[https://transloadit.com/docs/building-assembly-instructions#special-parameters].
42
42
  # The symbol +:original+ specifies that the original file should be sent
43
43
  # to the robot. A Step indicates that this Step's output should be used
44
44
  # as the input to this one. Likewise, an array of Steps tells Transloadit
@@ -49,12 +49,12 @@ class Transloadit::Step
49
49
  # that will actually be sent to the REST API.
50
50
  #
51
51
  def use(input)
52
- self.options.delete(:use) and return if input.nil?
52
+ options.delete(:use) && return if input.nil?
53
53
 
54
- self.options[:use] = case input
55
- when Symbol then input.inspect
56
- when Array then input.map {|i| i.name }
57
- else [ input.name ]
54
+ options[:use] = case input
55
+ when Symbol then input.inspect
56
+ when Array then input.map { |i| i.name }
57
+ else [input.name]
58
58
  end
59
59
  end
60
60
 
@@ -62,21 +62,21 @@ class Transloadit::Step
62
62
  # @return [String] a human-readable version of the Step
63
63
  #
64
64
  def inspect
65
- self.to_hash[self.name].inspect
65
+ to_hash[name].inspect
66
66
  end
67
67
 
68
68
  #
69
69
  # @return [Hash] a Transloadit-compatible Hash of the Step's contents
70
70
  #
71
71
  def to_hash
72
- { self.name => options.merge(:robot => self.robot) }
72
+ {name => options.merge(robot: robot)}
73
73
  end
74
74
 
75
75
  #
76
76
  # @return [String] JSON-encoded String containing the Step's hash contents
77
77
  #
78
78
  def to_json
79
- MultiJson.dump(self.to_hash)
79
+ MultiJson.dump(to_hash)
80
80
  end
81
81
 
82
82
  protected
@@ -1,4 +1,4 @@
1
- require 'transloadit'
1
+ require "transloadit"
2
2
 
3
3
  #
4
4
  # Represents a Template API ready to interact with its corresponding REST API.
@@ -18,7 +18,7 @@ class Transloadit::Template < Transloadit::ApiModel
18
18
  # see {template}[https://transloadit.com/templates]
19
19
  #
20
20
  def create(params)
21
- _do_request('/templates', params, 'post')
21
+ _do_request("/templates", params, "post")
22
22
  end
23
23
 
24
24
  #
@@ -26,7 +26,7 @@ class Transloadit::Template < Transloadit::ApiModel
26
26
  # @param [Hash] additional GET data to submit with the request
27
27
  #
28
28
  def list(params = {})
29
- _do_request('/templates', params)
29
+ _do_request("/templates", params)
30
30
  end
31
31
 
32
32
  #
@@ -49,7 +49,7 @@ class Transloadit::Template < Transloadit::ApiModel
49
49
  # see {template}[https://transloadit.com/templates]
50
50
  #
51
51
  def update(id, params = {})
52
- _do_request("/templates/#{id}", params, 'put')
52
+ _do_request("/templates/#{id}", params, "put")
53
53
  end
54
54
 
55
55
  #
@@ -58,6 +58,6 @@ class Transloadit::Template < Transloadit::ApiModel
58
58
  # @param [Hash] additional POST data to submit with the request
59
59
  #
60
60
  def delete(id, params = {})
61
- _do_request("/templates/#{id}", params, 'delete')
61
+ _do_request("/templates/#{id}", params, "delete")
62
62
  end
63
63
  end
@@ -1,3 +1,3 @@
1
1
  class Transloadit
2
- VERSION = '2.0.0'
2
+ VERSION = "3.0.0"
3
3
  end