bitmovin-api 0.0.1.pre

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,180 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('../helpers', __FILE__)
4
+
5
+ module Bitmovin
6
+ # Represents a bitmovin Job
7
+ # @see https://bitmovin.com/encoding-documentation/encoder-api-reference-documentation/#/reference/jobs Bitmovin Job docs
8
+ class Job
9
+ include Bitmovin::Helpers
10
+
11
+ ATTRIBUTES = %i{
12
+ job_id
13
+ input_id
14
+ output_id
15
+ speed
16
+ encoding_profile_id
17
+ audio_meta_data
18
+ manifest_types
19
+ deinterlace
20
+ extract_closed_captinos
21
+ merge_audio_channel_configs
22
+ duration
23
+ start_time
24
+ created_at
25
+ }
26
+
27
+ ATTRIBUTES.each do |_attr|
28
+ define_method _attr do
29
+ @details[_attr]
30
+ end
31
+
32
+ define_method :"#{_attr}=" do |value|
33
+ @details[_attr] = value
34
+ end
35
+ end
36
+
37
+ #
38
+ # @param params [Hash] Job details
39
+ # @option params input_id [Integer] Job input id
40
+ # @option params output_id [Integer] Job output id
41
+ # @option params encoding_profile_id [Integer] Encoding profile id
42
+ # @option params audio_meta_data [Hash] Meta data of the audio streams (Only available when using standard as speed setting)
43
+ # * :default_stream_id (Integer) - Default stream id of the audio stream
44
+ # * :language (String) - Language abbreviation [ISO 639-1]
45
+ # * :label (String) - Label of the language field
46
+ # @option params manifest_types [Array<String>] Available values: mpd | m3u8
47
+ # @option params extract_closed_captinos [Boolean] Extract closed captions from the input file
48
+ # @option params deinterlace [Boolean] Create de-interlaced output
49
+ # @option params merge_audio_channel_configs [Hash] Merge multiple mono audio input streams to stereo or 5.1 audio streams (Only available when using standard as speed setting)
50
+ # * :audio_channels [Array] - Array of mono input streams
51
+ #
52
+ def initialize(params={})
53
+ @details = params
54
+ end
55
+
56
+ #
57
+ # @param params [Hash] Job details
58
+ # @option params input_id [Integer] Job input id
59
+ # @option params output_id [Integer] Job output id
60
+ # @option params encoding_profile_id [Integer] Encoding profile id
61
+ # @option params audio_meta_data [Hash] Meta data of the audio streams (Only available when using standard as speed setting)
62
+ # * :default_stream_id (Integer) - Default stream id of the audio stream
63
+ # * :language (String) - Language abbreviation [ISO 639-1]
64
+ # * :label (String) - Label of the language field
65
+ # @option params manifest_types [Array<String>] Available values: mpd | m3u8
66
+ # @option params extract_closed_captinos [Boolean] Extract closed captions from the input file
67
+ # @option params deinterlace [Boolean] Create de-interlaced output
68
+ # @option params merge_audio_channel_configs [Hash] Merge multiple mono audio input streams to stereo or 5.1 audio streams (Only available when using standard as speed setting)
69
+ # * :audio_channels [Array] - Array of mono input streams
70
+ #
71
+ def self.create(params={})
72
+ new(params).create
73
+ end
74
+
75
+ ##
76
+ # Creates a new bitmovin encoding job with params given within initialization
77
+ # @return [Bitmovin::Job] Bitmovin Job details
78
+ def create
79
+ make_create_request
80
+ end
81
+
82
+ ##
83
+ # Get bitmovin encoding job details
84
+ # @param reload Force reload from server
85
+ # @return [Hash] Bitmovin Job details
86
+ def details(reload = false)
87
+ return @details unless reload
88
+
89
+ reload_details
90
+ end
91
+
92
+ # Get bitmovin encoding job status
93
+ # @param reload Force reload from server
94
+ # @return [Hash] Bitmovin Job details
95
+ def status(reload = false)
96
+ return @status if !reload && @status
97
+
98
+ reload_status
99
+ end
100
+
101
+ # Get bitmovin encoding job status
102
+ # @param reload Force reload from server
103
+ # @return [Hash] Bitmovin Job details
104
+ def manifest(reload = false)
105
+ return @manifest if !reload && @manifest
106
+
107
+ reload_manifest
108
+ end
109
+
110
+ class << self
111
+ include Bitmovin::Helpers
112
+
113
+ ##
114
+ # Get list of available jobs (10 Jobs per page)
115
+ # @param status [String, Symbol] Available values: all | finished | enqueued | inprogress | error
116
+ # @param page [Integer] number of page
117
+ # @param reload [Integer] Force reload from server
118
+ # @return [Array<Bitmovin::Job>] array of encoding profiles
119
+ #
120
+ def list(status = :all, page = 1, reload = false)
121
+ var_name = :"@#{status}_list#{ page }"
122
+
123
+ val = instance_variable_get var_name
124
+
125
+ return val if val && !relaod
126
+
127
+ get = Net::HTTP::Get.new "/api/jobs/#{ page }/#{ status }", initheaders = headers
128
+
129
+ response = Bitmovin.http.request get
130
+
131
+ json = prepare_response_json(response.body)
132
+
133
+ value_to_set = json[:jobs].map { |p| Bitmovin::Job.new(p) }
134
+
135
+ instance_variable_set var_name, value_to_set
136
+ end
137
+ end
138
+
139
+ private
140
+
141
+ def reload_manifest
142
+ get = Net::HTTP::Get.new "/api/job/#{ @details[:job_id] }/manifest-info", initheaders = headers
143
+
144
+ response = Bitmovin.http.request get
145
+
146
+ @manifest = prepare_response_json response.body
147
+ @manifest
148
+ end
149
+
150
+ def reload_status
151
+ get = Net::HTTP::Get.new "/api/job/#{ @details[:job_id] }/status", initheaders = headers
152
+
153
+ response = Bitmovin.http.request get
154
+
155
+ @status = prepare_response_json response.body
156
+ @status
157
+ end
158
+
159
+ def reload_details
160
+ get = Net::HTTP::Get.new "/api/job/#{ @details[:job_id] }", initheaders = headers
161
+
162
+ response = Bitmovin.http.request get
163
+
164
+ @details = prepare_response_json response.body
165
+ @details
166
+ end
167
+
168
+ def make_create_request
169
+ payload = prepare_request_json @details
170
+
171
+ post = Net::HTTP::Post.new "/api/job/create", initheaders = headers
172
+ post.body = payload
173
+
174
+ response = Bitmovin.http.request post
175
+
176
+ @details = prepare_response_json response.body
177
+ self
178
+ end
179
+ end
180
+ end
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('../helpers', __FILE__)
4
+
5
+ module Bitmovin
6
+ # Represents a bitmovin Output
7
+ # @see https://bitmovin.com/encoding-documentation/encoder-api-reference-documentation/#/reference/outputs Bitmovin Output docs
8
+ class Output
9
+ include Bitmovin::Helpers
10
+
11
+ ##
12
+ #@private
13
+ ATTRIBUTES = %i{
14
+ output_id
15
+ type
16
+ name
17
+ bucket
18
+ region
19
+ access_key
20
+ secret_key
21
+ account_name
22
+ account_key
23
+ container
24
+ prefix
25
+ make_public
26
+ create_sub_directory
27
+ }
28
+
29
+ ATTRIBUTES.each do |_attr|
30
+ define_method _attr do
31
+ @details[_attr]
32
+ end
33
+
34
+ define_method :"#{_attr}=" do |value|
35
+ @details[_attr] = value
36
+ end
37
+ end
38
+
39
+ ##
40
+ # @param params [Hash] Output details
41
+ # @option params [String] :type Type of Output
42
+ # @option params [String] :name Name of output profile
43
+ # @option params [String] :bucket S3 Bucket name for s3 output
44
+ # @option params [String] :region ('us-east-1') S3 region of bucket, required for S3 outputs
45
+ # @option params [String] :access_key S3/GCS Access Key, required for S3 outputs
46
+ # @option params [String] :secret_key S3/GCS Secret key, required for S3 outputs
47
+ # @option params [String] :account_name MS Azure account name, required for Azure outputs
48
+ # @option params [String] :account_key MS Azure account key, required for Azure outputs
49
+ # @option params [String] :container Name of Azure storage container
50
+ # @option params [String] :prefix Virtual sub-directory for file
51
+ # @option params [Boolean] :make_public If true, all transfered files can be accessed by their respective URL from anyone
52
+ # @option params [Boolean] :create_sub_directory (true) if true, create a sub directory for your job (<job_id>_<hash>)
53
+ #
54
+ def initialize(params={})
55
+ @details = params
56
+ end
57
+
58
+ ##
59
+ # Creates a new bitmovin output
60
+ #
61
+ # @param (#initialize)
62
+ #
63
+ # @return [Bitmovin::Output] Bitmovin Output details
64
+ #
65
+ def self.create(params={})
66
+ new(params).create
67
+ end
68
+
69
+ ##
70
+ # Creates a new bitmovin output with params given within initialization
71
+ # @return [Bitmovin::Input] Bitmovin Output details
72
+ #
73
+ def create
74
+ make_create_request
75
+ end
76
+
77
+ ##
78
+ # Get bitmovin input details
79
+ # @param reload [Boolean] force data reload from server
80
+ # @return [Hash] output data as a ruby hash
81
+ def details(reload = false)
82
+ return @details if !reload && @details
83
+
84
+ reload_details
85
+ end
86
+
87
+ private
88
+
89
+ ##
90
+ # @private
91
+ def make_create_request
92
+ if %w{s3 gcs}.include? @details[:type]
93
+ raise Bitmovin::ApiParameterEmptyError.new(parameter = :access_key) unless @details[:access_key]
94
+ raise Bitmovin::ApiParameterEmptyError.new(parameter = :secret_key) unless @details[:secret_key]
95
+ end
96
+
97
+ payload = prepare_request_json @details
98
+ post = Net::HTTP::Post.new "/api/output/create", initheaders = headers
99
+ post.body = payload
100
+
101
+ response = Bitmovin.http.request post
102
+
103
+ @details = prepare_response_json response.body
104
+ self
105
+ rescue Net::HTTPRequestTimeOut => e
106
+ nil
107
+ end
108
+
109
+ ##
110
+ # private
111
+ def reload_details
112
+ get = Net::HTTP::Get.new "/api/output/#{@params[:output_id]}", initheaders = headers
113
+ response = Bitmovin.http.request get
114
+
115
+ @details = prepare_response_json response.body
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,101 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('../helpers', __FILE__)
4
+
5
+ module Bitmovin
6
+ # Represents a bitmovin transfer Job
7
+ # @see https://bitmovin.com/encoding-documentation/encoder-api-reference-documentation/#/reference/jobs Bitmovin Job docs
8
+ class TransferJob
9
+ include Bitmovin::Helpers
10
+
11
+ ATTRIBUTES = %i{
12
+ id
13
+ job_id
14
+ output_id
15
+ status
16
+ progress
17
+ created_at
18
+ output_name
19
+ }
20
+
21
+ ATTRIBUTES.each do |_attr|
22
+ define_method _attr do
23
+ @details[_attr]
24
+ end
25
+
26
+ define_method :"#{_attr}=" do |value|
27
+ @details[_attr] = value
28
+ end
29
+ end
30
+
31
+ #
32
+ # @option params job_id [Integer] Job-ID
33
+ # @option params output_id [Integer] Output-ID
34
+ #
35
+ def initialize(params={})
36
+ @details = params
37
+ end
38
+
39
+ #
40
+ # @option params job_id [Integer] Job-ID
41
+ # @option params output_id [Integer] Output-ID
42
+ #
43
+ # @return [Bitmovin::TransferJob] Bitmovin Transfer Job details
44
+ #
45
+ def self.create(params={})
46
+ new(params).create
47
+ end
48
+
49
+ ##
50
+ # Creates a new bitmovin transfer job with params given within initialization
51
+ # @return [Bitmovin::TransferJob] Bitmovin Transfer Job details
52
+ def create
53
+ make_create_request
54
+ end
55
+
56
+ ##
57
+ # Get bitmovin encoding job details
58
+ # @param reload Force reload from server
59
+ # @return [Hash] Bitmovin Job details
60
+ def details(reload = false)
61
+ return @details
62
+ end
63
+
64
+ class << self
65
+ include Bitmovin::Helpers
66
+
67
+ ##
68
+ # Get list of available transfers related to job
69
+ # @return [Array<Bitmovin::TransferJob>] array of transfer jobs
70
+ #
71
+ def list(reload = false)
72
+ return @list if @list && !relaod
73
+
74
+ get = Net::HTTP::Get.new "/api/jobs/#{ @details[:job_id] }/transfers", initheaders = headers
75
+
76
+ response = Bitmovin.http.request get
77
+
78
+ json = prepare_response_json(response.body)
79
+
80
+ @list = json[:jobs].map { |p| Bitmovin::TransferJob.new(p) }
81
+
82
+ @list
83
+ end
84
+ end
85
+
86
+ private
87
+
88
+ def make_create_request
89
+ payload = prepare_request_json @details
90
+
91
+ post = Net::HTTP::Post.new "/api/job/transfer", initheaders = headers
92
+ post.body = payload
93
+
94
+ response = Bitmovin.http.request post
95
+ puts response
96
+
97
+ @details = prepare_response_json response.body
98
+ self
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,3 @@
1
+ module Bitmovin
2
+ VERSION = "0.0.1.pre"
3
+ end
@@ -0,0 +1,10 @@
1
+ require 'rack'
2
+ require "apib/mock_server"
3
+
4
+ base_url = "http://private-anon-6f2a0baf67-bitcodinrestapi.apiary-proxy.com/api"
5
+ api_b = File.expand_path('../bitcodinrestapi.apib', __FILE__)
6
+ blueprint = File.read(api_b)
7
+
8
+ app = Apib::MockServer.new(base_url, blueprint)
9
+
10
+ Rack::Handler.default.run app
metadata ADDED
@@ -0,0 +1,174 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bitmovin-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.pre
5
+ platform: ruby
6
+ authors:
7
+ - DevilsNightsix
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-02-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: yard
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: byebug
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: guard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard-minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: apib-mock_server
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: minitest-color
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: Simple ruby wrapper for bitmovin encoding service api. Written in pure
126
+ ruby with no runtime dependencies.
127
+ email: eeendi94@gmail.com
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - ".gitignore"
133
+ - Gemfile
134
+ - Gemfile.lock
135
+ - Guardfile
136
+ - README.md
137
+ - Rakefile
138
+ - bitcodinrestapi.apib
139
+ - bitmovin-api.gemspec
140
+ - lib/bitmovin.rb
141
+ - lib/bitmovin/client.rb
142
+ - lib/bitmovin/encoding_profile.rb
143
+ - lib/bitmovin/helpers.rb
144
+ - lib/bitmovin/input.rb
145
+ - lib/bitmovin/job.rb
146
+ - lib/bitmovin/output.rb
147
+ - lib/bitmovin/transfer_job.rb
148
+ - lib/bitmovin/version.rb
149
+ - test_api.rb
150
+ homepage: http://rubygems.org/gems/bitmovin-api
151
+ licenses:
152
+ - MIT
153
+ metadata: {}
154
+ post_install_message:
155
+ rdoc_options: []
156
+ require_paths:
157
+ - lib
158
+ required_ruby_version: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ required_rubygems_version: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">"
166
+ - !ruby/object:Gem::Version
167
+ version: 1.3.1
168
+ requirements: []
169
+ rubyforge_project:
170
+ rubygems_version: 2.5.0
171
+ signing_key:
172
+ specification_version: 4
173
+ summary: Bitmovin api client
174
+ test_files: []