adobe_media_encoder 0.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: '089631b4dd833020bc8e6e471852701e01bd9355dcf1770480a7c8ae31109668'
4
+ data.tar.gz: 21a8d51f1e12d65f4263dca135a32ae18c961e23956b17f94e8ccbcfd47cc156
5
+ SHA512:
6
+ metadata.gz: 38b2bb824a77052772f572949df9761cc0b527650079a8ad49e595d2bbe1fb70b914e8f593f7a3aa6db9ea4431218116df1636861a2f10e41c6564d74e26bb95
7
+ data.tar.gz: cf9093dfa2d94d6257d6a5f8b8765ce8937a6893a428e9f045ef9e9c33ac8f0bad12758dba4ae5020cc9805d0d3779e7d80930634e362e704623688bb731275a
@@ -0,0 +1,15 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /dev/
7
+ /doc/
8
+ /pkg/
9
+ /spec/reports/
10
+ /tmp/
11
+ *.bundle
12
+ *.so
13
+ *.o
14
+ *.a
15
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'json_pure', :platforms => :mri_18
4
+
5
+ # Specify your gem's dependencies in adobe_media_encoder.gemspec
6
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 John Whitson
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,98 @@
1
+ # Adobe Media Encoder (AME)
2
+
3
+ A library for interacting with the Adobe Media Encoder API
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'adobe_media_encoder'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install adobe_media_encoder
20
+
21
+ ## Command Line Utilitie(s)
22
+
23
+ ### AME API CLI [bin/ame_api](./bin/ame_api)
24
+ An executable to interact with the Adobe Media Encoder API using a Command Line Interface
25
+
26
+ ### ADOBE MEDIA ENCODER 2015
27
+
28
+ ### Start AME service from the Mac Command Line
29
+
30
+ cd '/Applications/Adobe Media Encoder CC 2015.3/Adobe Media Encoder CC 2015.app/Contents/ame_webservice_console.app/Contents/MacOS/';./ame_webservice_console
31
+
32
+
33
+ ### Configure the Web Server ports
34
+
35
+ vi /Applications/Adobe\ Media\ Encoder\ CC\ 2015.3/Adobe\ Media\ Encoder\ CC\ 2015.app/Contents/Resources/ame_webservice_config.ini
36
+
37
+
38
+ ### ADOBE MEDIA ENCODER 2017
39
+
40
+ ### Start AME service from the Mac Command Line
41
+
42
+ cd '/Applications/Adobe Media Encoder CC 2017/Adobe Media Encoder CC 2017.app/Contents/ame_webservice_console.app/Contents/MacOS/';./ame_webservice_console
43
+
44
+
45
+ ### Configure the Web Server ports
46
+
47
+ vi /Applications/Adobe\ Media\ Encoder\ CC\ 2017/Adobe\ Media\ Encoder\ CC\ 2017.app/Contents/Resources/ame_webservice_config.ini
48
+
49
+
50
+ #### Usage
51
+ --host-address HOSTADDRESS The AME API server address.
52
+ default: localhost
53
+ --host-port PORT The port on the AME API server to connect to.
54
+ default: 8080
55
+ --method-name METHODNAME
56
+ --method-arguments JSON
57
+ --pretty-print
58
+ --log-to FILENAME Log file location.
59
+ default: STDERR
60
+ --log-level LEVEL Logging level. Available Options: debug, info, warn, error, fatal
61
+ default: warn
62
+ --[no-]options-file [FILENAME]
63
+ Path to a file which contains default command line arguments.
64
+ default: ~/.options/ame_api
65
+ -h, --help Show this message.
66
+
67
+ #### Examples of Usage
68
+
69
+ job_abort
70
+ ame_api --host-address localhost --host-port 8080 --method-name job_abort
71
+ ame_api --host-address localhost --host-port 8080 --method-name job_abort --method-arguments '{"jobId":""}'
72
+
73
+ job_history
74
+ ame_api --host-address localhost --host-port 8080 --method-name job_history
75
+
76
+ job_status
77
+ ame_api --host-address localhost --host-port 8080 --method-name job_status
78
+
79
+ job_submit
80
+ ame_api --host-address localhost --host-port 8080 --method-name job_status --method-arguments '{"SourcePresetPath":"","SourceFilePath":"","DestinationPath":"","OverwriteDestinationIfPresent":"","NotificationTarget":"","BackupNotificationTarget":"","NotificationRateInMilliseconds":""}'
81
+
82
+ server_kill
83
+ ame_api --host-address localhost --host-port 8080 --method-name server_kill
84
+
85
+ server_restart
86
+ ame_api --host-address localhost --host-port 8080 --method-name server_restart
87
+
88
+ server_status
89
+ ame_api --host-address localhost --host-port 8080 --method-name server_status
90
+
91
+
92
+ ## Contributing
93
+
94
+ 1. Fork it ( https://github.com/XPlatform-Consulting/adobe_media_encoder.git/fork )
95
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
96
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
97
+ 4. Push to the branch (`git push origin my-new-feature`)
98
+ 5. Create a new Pull Request
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'adobe_media_encoder/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'adobe_media_encoder'
8
+ spec.version = AdobeMediaEncoder::VERSION
9
+ spec.authors = ['John Whitson']
10
+ spec.email = ['john.whitson@gmail.com']
11
+ spec.summary = %q{A library for interacting with the Adobe Media Encoder API}
12
+ # spec.description = %q{}
13
+ spec.homepage = 'https://github.com/XPlatform-Consulting/adobe_media_encoder'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_development_dependency 'bundler', '~> 1.7'
22
+ spec.add_development_dependency 'rake', '~> 10.0'
23
+
24
+ # spec.add_development_dependency 'sinatra'
25
+ end
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ lib_path = File.expand_path('../../lib', __FILE__)
3
+ $:.unshift(lib_path) unless $:.include?(lib_path) or !File.exists?(lib_path)
4
+
5
+ require 'adobe_media_encoder/api/cli'
6
+
7
+ ARGV << '--help' if ARGV.empty?
8
+ AdobeMediaEncoder::API::CLI.new
@@ -0,0 +1,5 @@
1
+ require 'adobe_media_encoder/version'
2
+
3
+ module AdobeMediaEncoder
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,97 @@
1
+ require 'json'
2
+ require 'logger'
3
+ require 'optparse'
4
+ require 'pp'
5
+
6
+ require 'adobe_media_encoder/api/client'
7
+
8
+ module AdobeMediaEncoder
9
+
10
+ module API
11
+
12
+ class CLI
13
+
14
+ LOGGING_LEVELS = {
15
+ :debug => Logger::DEBUG,
16
+ :info => Logger::INFO,
17
+ :warn => Logger::WARN,
18
+ :error => Logger::ERROR,
19
+ :fatal => Logger::FATAL
20
+ }
21
+
22
+ attr_accessor :logger, :api
23
+
24
+ def parse_arguments
25
+ arguments = {
26
+ :log_to => STDERR,
27
+ :log_level => Logger::WARN,
28
+ :options_file_path => File.expand_path(File.basename($0, '.*'), '~/.options'),
29
+ :host => AdobeMediaEncoder::API::Client::HTTPClient::DEFAULT_HTTP_HOST_ADDRESS,
30
+ :port => AdobeMediaEncoder::API::Client::HTTPClient::DEFAULT_HTTP_HOST_PORT,
31
+ }
32
+ op = OptionParser.new
33
+ op.on('--host-address HOSTADDRESS', 'The AdobeAnywhere server address.',
34
+ "\tdefault: #{arguments[:host]}") { |v| arguments[:host] = v }
35
+ op.on('--host-port PORT', 'The port on the AdobeAnywhere server to connect to.',
36
+ "\tdefault: #{arguments[:port]}") { |v| arguments[:port] = v }
37
+ op.on('--method-name METHODNAME', '') { |v| arguments[:method_name] = v }
38
+ op.on('--method-arguments JSON', '') { |v| arguments[:method_arguments] = v }
39
+ op.on('--pretty-print', '') { |v| arguments[:pretty_print] = v }
40
+ op.on('--log-to FILENAME', 'Log file location.', "\tdefault: STDERR") { |v| arguments[:log_to] = v }
41
+ op.on('--log-level LEVEL', LOGGING_LEVELS.keys, "Logging level. Available Options: #{LOGGING_LEVELS.keys.join(', ')}",
42
+ "\tdefault: #{LOGGING_LEVELS.invert[arguments[:log_level]]}") { |v| arguments[:log_level] = LOGGING_LEVELS[v] }
43
+ op.on('--[no-]options-file [FILENAME]', 'Path to a file which contains default command line arguments.', "\tdefault: #{arguments[:options_file_path]}" ) { |v| arguments[:options_file_path] = v}
44
+ op.on_tail('-h', '--help', 'Show this message.') { puts op; exit }
45
+ op.parse!(ARGV.dup)
46
+
47
+ arguments_file_path = arguments[:options_file_path]
48
+ # Make sure that arguments from the command line override those from the arguments file
49
+ op.parse!(ARGV.dup) if op.load(arguments_file_path)
50
+ arguments
51
+ end
52
+
53
+
54
+ def initialize(args = {})
55
+ args = parse_arguments.merge(args)
56
+ @logger = Logger.new(args[:log_to])
57
+ logger.level = args[:log_level] if args[:log_level]
58
+ args[:logger] = logger
59
+
60
+ @api = AdobeMediaEncoder::API::Client.new(args)
61
+
62
+ ## LIST METHODS
63
+ #methods = api.methods; methods -= Object.methods; methods.sort.each { |method| puts "#{method} #{api.method(method).parameters rescue ''}" }; exit
64
+
65
+ # http.log_request_body = true
66
+ # http.log_response_body = true
67
+ # http.log_pretty_print_body = true
68
+
69
+
70
+ method_name = args[:method_name]
71
+ send(method_name, args[:method_arguments], :pretty_print => args[:pretty_print]) if method_name
72
+
73
+ end
74
+
75
+ def send(method_name, method_arguments, args = {})
76
+ method_name = method_name.to_sym
77
+ logger.debug { "Executing Method: #{method_name}" }
78
+
79
+ send_arguments = [ method_name ]
80
+
81
+ if method_arguments
82
+ method_arguments = JSON.parse(method_arguments) if method_arguments.is_a?(String) and method_arguments.start_with?('{', '[')
83
+ send_arguments << method_arguments
84
+ end
85
+
86
+ response = api.__send__(*send_arguments)
87
+ puts response.respond_to?(:body) ? response.body : response
88
+
89
+ exit
90
+ end
91
+
92
+ # CLI
93
+ end
94
+ # API
95
+ end
96
+ # AdobeMediaEncoder
97
+ end
@@ -0,0 +1,250 @@
1
+ require 'logger'
2
+ require 'net/http'
3
+ require 'net/https'
4
+ require 'rexml/document'
5
+
6
+ require 'adobe_media_encoder'
7
+
8
+ class String
9
+
10
+ def camel_case
11
+ return self if self !~ /_/ && self =~ /[A-Z]+.*/
12
+ split('_').collect(&:capitalize).join
13
+ end
14
+ alias :camelize :camel_case
15
+
16
+ def camel_case_lower
17
+ camel_case.uncapitalize
18
+ end
19
+
20
+ def snake_case
21
+ self.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').gsub(/([a-z\d])([A-Z])/,'\1_\2').tr('-', '_').downcase
22
+ end
23
+ alias :snakeize :snake_case
24
+
25
+ def uncapitalize
26
+ self[0, 1].downcase + self[1..-1]
27
+ end
28
+
29
+ end
30
+
31
+ module AdobeMediaEncoder
32
+
33
+ module API
34
+
35
+ class Client
36
+
37
+ class XMLHelper
38
+
39
+ def self.create_manifest(data)
40
+ <<-XML
41
+ <?xml version='1.0'?>
42
+ <manifest version='1.0'>#{ data.map { |k,v| _k = k.to_s.camel_case; "\n\t<#{_k}>#{v.to_s}</#{_k}>"}.join }
43
+ </manifest>
44
+ XML
45
+ end
46
+
47
+ def self.parse_payload(xml)
48
+ doc = REXML::Document.new(xml)
49
+ Hash[doc.elements['/payload'].elements.map { |e| [ e.name, e.text ] } ]
50
+ end
51
+
52
+ end
53
+
54
+ class HTTPClient
55
+
56
+ DEFAULT_HTTP_HOST_ADDRESS = 'localhost'
57
+ DEFAULT_HTTP_HOST_PORT = 8080
58
+
59
+ attr_accessor :logger, :log_request_body, :log_response_body, :log_pretty_print_body,
60
+
61
+ :host, :port, :http, :request, :response, :default_request_headers,
62
+
63
+ :base_uri
64
+
65
+ def initialize(args = { })
66
+ initialize_logger(args)
67
+ initialize_http(args)
68
+
69
+ @default_request_headers = {
70
+ 'Content-Type' => 'application/xml; charset=utf-8',
71
+ 'Accept' => 'application/xml',
72
+ }
73
+ @parse_response = true
74
+
75
+ @base_uri = "http://#{host}:#{port}/"
76
+
77
+ @log_request_body = args.fetch(:log_request_body, true)
78
+ @log_response_body = args.fetch(:log_response_body, true)
79
+ @log_pretty_print_body = args.fetch(:log_pretty_print_body, true)
80
+ end
81
+
82
+ def initialize_logger(args = { })
83
+ @logger = args[:logger] ||= Logger.new(args[:log_to] || STDERR)
84
+ log_level = args[:log_level]
85
+ if log_level
86
+ @logger.level = log_level
87
+ args[:logger] = @logger
88
+ end
89
+ @logger
90
+ end
91
+
92
+ def initialize_http(args = { })
93
+ @host = args[:host] ||= DEFAULT_HTTP_HOST_ADDRESS
94
+ @port = args[:port] ||= DEFAULT_HTTP_HOST_PORT
95
+ @http = Net::HTTP.new(host, port)
96
+ end
97
+
98
+ # Formats a HTTPRequest or HTTPResponse body for log output.
99
+ # @param [HTTPRequest|HTTPResponse] obj
100
+ # @return [String]
101
+ def format_body_for_log_output(obj)
102
+ output = ''
103
+ if obj.content_type == 'application/json'
104
+ if @log_pretty_print_body
105
+ _body = obj.body
106
+ output << "\n"
107
+ output << JSON.pretty_generate(JSON.parse(_body)) rescue _body
108
+ return output
109
+ else
110
+ return obj.body
111
+ end
112
+ else
113
+ return obj.body.inspect
114
+ end
115
+ end
116
+
117
+ def send_request(request)
118
+ @request = request
119
+ logger.debug { %(REQUEST: #{request.method} http#{http.use_ssl? ? 's' : ''}://#{http.address}:#{http.port}#{request.path} HEADERS: #{request.to_hash.inspect} #{log_request_body and request.request_body_permitted? ? "BODY: #{format_body_for_log_output(request)}" : ''}) }
120
+
121
+ @response = http.request(request)
122
+ logger.debug { %(RESPONSE: #{response.inspect} HEADERS: #{response.to_hash.inspect} #{log_response_body and response.respond_to?(:body) ? "BODY: #{format_body_for_log_output(response)}" : ''}) }
123
+
124
+ @parse_response ? response_parsed : response.body
125
+ end
126
+
127
+ def response_parsed
128
+ XMLHelper.parse_payload(response.body) #rescue response
129
+ end
130
+
131
+ def build_uri(path = '', query = { })
132
+ _query = query.is_a?(Hash) ? query.map { |k,v| "#{CGI.escape(k)}=#{CGI.escape(v)}" }.join('&') : query
133
+ _path = "#{path}#{_query and _query.respond_to?(:empty?) and !_query.empty? ? "?#{_query}" : ''}"
134
+ URI.parse(File.join(base_uri, _path))
135
+ end
136
+
137
+ def delete(path, options = { })
138
+ query = options.fetch(:query, { })
139
+ @uri = build_uri(path, query)
140
+ request = Net::HTTP::Delete.new(@uri.request_uri, default_request_headers)
141
+ send_request(request)
142
+ end
143
+
144
+ def get(path, query = nil, options = { })
145
+ query ||= options.fetch(:query, { })
146
+ @uri = build_uri(path, query)
147
+ request = Net::HTTP::Get.new(@uri.request_uri, default_request_headers)
148
+ send_request(request)
149
+ end
150
+
151
+ def put(path, body, options = { })
152
+ query = options.fetch(:query, { })
153
+ @uri = build_uri(path, query)
154
+ #body = JSON.generate(body) unless body.is_a?(String)
155
+
156
+ request = Net::HTTP::Put.new(@uri.request_uri, default_request_headers)
157
+ request.body = body
158
+ send_request(request)
159
+ end
160
+
161
+ def post(path, body = nil, options = { })
162
+ query = options.fetch(:query, { })
163
+ @uri = build_uri(path, query)
164
+ #body = JSON.generate(body) unless body.is_a?(String)
165
+
166
+ request = Net::HTTP::Post.new(@uri.request_uri, default_request_headers)
167
+ request.body = body
168
+ send_request(request)
169
+ end
170
+
171
+ end
172
+
173
+ attr_accessor :http
174
+
175
+ def initialize(args = { })
176
+ initialize_logger(args)
177
+ @http = HTTPClient.new(args)
178
+ end
179
+
180
+ def initialize_logger(args = { })
181
+ @logger = args[:logger] ||= Logger.new(args[:log_to] || STDOUT)
182
+ log_level = args[:log_level]
183
+ if log_level
184
+ @logger.level = log_level
185
+ args[:logger] = @logger
186
+ end
187
+ @logger
188
+ end
189
+
190
+ def normalize_args(args = { }, options = { })
191
+ case args
192
+ when Array
193
+ [*args].map { |a| normalize_args(a, options) } if normalize_args.is_a?(Array)
194
+ when Hash
195
+ symbolize_keys = options.fetch(:symbolize_keys, true)
196
+ camelize_keys = options.fetch(:camelize_keys, false)
197
+ uncapitalize_keys = options.fetch(:uncapitalize_keys, false)
198
+ downcase_keys = options.fetch(:downcase_keys, false)
199
+ Hash[args.map do |k, v|
200
+ _k = k.dup rescue k
201
+ _k = _k.to_s.camel_case if camelize_keys rescue _k
202
+ _k = _k.to_s.uncapitalize if uncapitalize_keys rescue _k
203
+ _k = _k.to_s.downcase if downcase_keys rescue _k
204
+ _k = symbolize_keys ? _k.to_sym : _k.to_s rescue _k
205
+ [_k, v ]
206
+ end]
207
+ else
208
+ args
209
+ end
210
+ end
211
+
212
+ def job_abort(args = { })
213
+ args = normalize_args(args, :symbolize_keys => true, :downcase_keys => true)
214
+ job_id = args[:id] || args[:job_id] || args[:jobid]
215
+ http.delete("job#{job_id ? "?jobID=#{job_id}" : ''}")
216
+ end
217
+
218
+ def job_history(args = { })
219
+ args = normalize_args(args, :symbolize_keys => true, :downcase_keys => true)
220
+ max_completed_jobs = args[:jobs] || args[:maxcompletedjobs]
221
+ http.get("history#{max_completed_jobs ? "?maxCompletedJobs=#{max_completed_jobs}" : ''}")
222
+ end
223
+
224
+ def job_status(args = { })
225
+ http.get('job')
226
+ end
227
+
228
+ def job_submit(args = { })
229
+ args = normalize_args(args, :symbolize_keys => false, :camelize_keys => true)
230
+ xml = XMLHelper.create_manifest(args)
231
+ http.post('job', xml)
232
+ end
233
+
234
+ def server_kill(args = { })
235
+ http.delete('server')
236
+ end
237
+
238
+ def server_restart(args = { })
239
+ http.post('server')
240
+ end
241
+
242
+ def server_status(args = { })
243
+ http.get('server')
244
+ end
245
+
246
+ end
247
+
248
+ end
249
+
250
+ end
@@ -0,0 +1,3 @@
1
+ module AdobeMediaEncoder
2
+ VERSION = '0.0.1'
3
+ end
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: adobe_media_encoder
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - John Whitson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-05-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description:
42
+ email:
43
+ - john.whitson@gmail.com
44
+ executables:
45
+ - ame_api
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - ".gitignore"
50
+ - Gemfile
51
+ - LICENSE.txt
52
+ - README.md
53
+ - Rakefile
54
+ - adobe_media_encoder.gemspec
55
+ - bin/ame_api
56
+ - lib/adobe_media_encoder.rb
57
+ - lib/adobe_media_encoder/api/cli.rb
58
+ - lib/adobe_media_encoder/api/client.rb
59
+ - lib/adobe_media_encoder/version.rb
60
+ homepage: https://github.com/XPlatform-Consulting/adobe_media_encoder
61
+ licenses:
62
+ - MIT
63
+ metadata: {}
64
+ post_install_message:
65
+ rdoc_options: []
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ requirements: []
79
+ rubyforge_project:
80
+ rubygems_version: 2.7.6
81
+ signing_key:
82
+ specification_version: 4
83
+ summary: A library for interacting with the Adobe Media Encoder API
84
+ test_files: []