matterhorn_whymper 0.2.2 → 0.3.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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- M2ExMTYzYjRiZTg1YjQzZGY4NmI5MDhjOTIwNDE3YWQ2ODgyYTk3Ng==
4
+ Njg3OGRhNTBkYTBhNWY2MWJiM2Y4NzUyZGMyYTQ2NmExMTI4MzNjNA==
5
5
  data.tar.gz: !binary |-
6
- MGVhNWYyNmM1MzQ4ODRhYmIwZTYxMDZlYTA3NzMzYzNjMmUyZmRlOQ==
6
+ Y2RiNzg1OWE5OGI5ZWZkMGFjOGU5MDljY2ViMDNjYjQ3NDAwNjE4YQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MTNiNDI2Mjg0YzY4OWViYWMzMWFhNWNjZTRmMzVlNjU4YzhiZjYwOTEyNGU5
10
- NTYzNDg1NTIyZDI5NDczYTY4ODNiZDMxMzFiYzZiNzJjMzgxNDg4MzgzOWM1
11
- NDYzOGZjMmNkZjAwN2RmYmYzYWFkYzUwNmRkNjM5OWMzZDg1N2I=
9
+ YzgwM2RlZGQ3ZGE3MDY1YzFlYzdlMDBlOTRmYzRhMTFjN2E5OTU5MzBlN2Y2
10
+ NDg1ZTBmZGMwMDM1NTU2OWFjMGM0MzBlYmFhYzc4ZDg2ODMzZTc0ZWM2YTg4
11
+ ZDViMGNmNGEyZmU5NGE3OGYyNzgxN2NlNGQyZGZlYTJjMmFmNDM=
12
12
  data.tar.gz: !binary |-
13
- MmY2NTA4Y2NiZDFmYjM4YjAyYjk1NGNjOGZhZjEzZWRkZGQ2MTM3ZmE2MTYx
14
- Nzc3Nzc1NDAyOTM2NmEyZDlkNWViMWYxNDM2MmY3ZTBhMGEyN2NhNTI3NGIx
15
- NTlmNWMxMzFlN2UzNGQzNjc4ZDc3NWJmMWFhMTUwNmVhNTliZGI=
13
+ ODAyNDUzMzg0Y2JhMmY0NTBiMGZkYzgwZThhODkxOTMwMjY0ZDU1MjllMGJh
14
+ NDMwMDA0NGQwMThiNjQwYzMyMTYxNzcwYzE2ODVmMmZjNmZkNGZhYWNmMzYy
15
+ YmE3OTI4OTE5MjhiZDM4OTM0Y2ZiODQ5OTc2NzBhYzJjZjlhNzk=
data/.gitignore CHANGED
@@ -16,6 +16,7 @@ spec/reports
16
16
  test/tmp
17
17
  test/version_tmp
18
18
  tmp
19
+ log
19
20
  *.bundle
20
21
  *.so
21
22
  *.o
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in matterhorn-endpoint_api.gemspec
3
+ # Specify your gem's dependencies in matterhorn_whymper.gemspec
4
4
  gemspec
@@ -76,18 +76,32 @@ class Matterhorn::Endpoint::Ingest < Matterhorn::Endpoint
76
76
  @media_pkg_remote
77
77
  end
78
78
 
79
-
80
- def addTrack(file, flavor)
79
+ HTTP_PROTOCOL_RE = /^https?:/
80
+
81
+ def addTrack(file_or_url, flavor)
81
82
  unless @media_pkg_remote then raise(Matterhorn::Error, "No media package is available!"); end
82
- @media_pkg_local.add_track(file, flavor) if @media_pkg_local
83
+ @media_pkg_local.add_track(file_or_url, flavor) if @media_pkg_local
83
84
  begin
84
- @media_pkg_remote = http_client.post(
85
- "ingest/addTrack",
86
- { 'flavor' => flavor,
87
- 'mediaPackage' => @media_pkg_remote,
88
- 'BODY' => file
89
- }
90
- ).body
85
+ @media_pkg_remote =
86
+ if HTTP_PROTOCOL_RE =~ file_or_url
87
+ http_client.post(
88
+ "ingest/addTrack",
89
+ {
90
+ 'flavor' => flavor,
91
+ 'mediaPackage' => @media_pkg_remote,
92
+ 'url' => file_or_url
93
+ }
94
+ ).body
95
+ else
96
+ http_client.post(
97
+ "ingest/addTrack",
98
+ {
99
+ 'flavor' => flavor,
100
+ 'mediaPackage' => @media_pkg_remote,
101
+ 'BODY' => file_or_url
102
+ }
103
+ ).body
104
+ end
91
105
  rescue Matterhorn::HttpClientError => ex
92
106
  MatterhornWhymper.logger.error { "#{self.class.name}::addTrack | " +
93
107
  "Media package not valid! / media package:\n#{@media_pkg_remote}" }
@@ -1,6 +1,6 @@
1
1
  require 'net/http/post/multipart'
2
2
  require 'net/http/digest_auth'
3
-
3
+ require 'mime/types'
4
4
 
5
5
  # =================================================================================== Matterhorn ===
6
6
 
@@ -5,7 +5,7 @@ module MatterhornWhymper
5
5
 
6
6
  # -------------------------------------------------------------------------- const definitions ---
7
7
 
8
- VERSION = "0.2.2"
8
+ VERSION = "0.3.0"
9
9
 
10
10
 
11
11
  end # -------------------------------------------------------------------- end MatterhornWhymper ---
@@ -22,8 +22,10 @@ Gem::Specification.new do |spec|
22
22
  spec.add_runtime_dependency "multipart-post", "~> 2.0"
23
23
  spec.add_runtime_dependency "net-http-digest_auth", "~> 1.4"
24
24
  spec.add_runtime_dependency "nokogiri", "~> 1.6"
25
+ spec.add_runtime_dependency "mime-types", "> 1.25"
25
26
 
26
27
  spec.add_development_dependency "bundler", "~> 1.6"
27
28
  spec.add_development_dependency "rake", "~> 10.3"
28
29
  spec.add_development_dependency "rspec", "~> 2.14"
30
+ spec.add_development_dependency "webmock", "~> 1.18"
29
31
  end
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0"?>
2
+ <mediapackage xmlns="http://mediapackage.opencastproject.org" start="2014-06-16T14:20:42Z" id="188d25d5-c93d-4b09-80ab-95e13a352b14">
3
+ <media/>
4
+ <metadata/>
5
+ <attachments/>
6
+ <publications/>
7
+ </mediapackage>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
+ <mediapackage xmlns="http://mediapackage.opencastproject.org" start="2014-06-16T14:20:42Z" id="188d25d5-c93d-4b09-80ab-95e13a352b14">
3
+ <media>
4
+ <track type="source/raw" id="beef711f-6519-4cf6-8af5-8eac5aaa50c5"><tags/><url>http://mh-int-admin.bcc.switch.ch/files/mediapackage/188d25d5-c93d-4b09-80ab-95e13a352b14/beef711f-6519-4cf6-8af5-8eac5aaa50c5/isforAto1953.avi?AWSAccessKeyId=K8Z3D0TTLAO4O55WKZDD&amp;Expires=1403528601&amp;Signature=HShVG9L3lNeOOjffM9RuZ997oeo%3D</url></track>
5
+ </media>
6
+ <metadata/>
7
+ <attachments/>
8
+ <publications/>
9
+ </mediapackage>
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ if endpoint_configured?
4
+
5
+ describe Matterhorn::Endpoint::Ingest, "when talking to the remote server" do
6
+ include Support::RemoteHelpers
7
+
8
+ it "creates a mediapackage" do
9
+ Matterhorn::Endpoint.open(:ingest) do |ingest_endpoint|
10
+ ingest_endpoint.createMediaPackage()
11
+ mp_local = ingest_endpoint.media_package
12
+ mp_remote = ingest_endpoint.media_package('remote')
13
+ expect(mp_local).not_to be nil
14
+ expect(mp_remote).not_to be nil
15
+ end
16
+ end
17
+ end
18
+
19
+ end
data/spec/spec_helper.rb CHANGED
@@ -3,9 +3,16 @@ require 'yaml'
3
3
 
4
4
  Bundler.setup
5
5
 
6
- require 'matterhorn_whymper' # and any other gems you need
6
+ require 'matterhorn_whymper'
7
+ require 'webmock/rspec'
8
+
9
+ require 'fileutils'
10
+
11
+ Dir.glob(File.expand_path('../support/**/*.rb', __FILE__)).each { |lib| require lib }
7
12
 
8
13
  RSpec.configure do |config|
14
+ config.include Support::FixtureHelpers
15
+
9
16
  MatterhornWhymper.configure do |mh_config|
10
17
  mh_yml = YAML::load_file( "./spec/matterhorn.yml" )
11
18
  mh_config.system_account_user = mh_yml['matterhorn']['system_account_user']
@@ -13,4 +20,16 @@ RSpec.configure do |config|
13
20
  mh_config.system_domain = mh_yml['matterhorn']['system_domain']
14
21
  mh_config.system_protocol = mh_yml['matterhorn']['system_protocol']
15
22
  end
23
+
24
+ logfile_path = File.expand_path('../../log/test.log', __FILE__)
25
+ FileUtils.mkdir_p(File.dirname(logfile_path))
26
+ MatterhornWhymper.logger = Logger.new(File.open(logfile_path, 'a'))
27
+ end
28
+
29
+ module Kernel
30
+ private
31
+
32
+ def endpoint_configured?
33
+ MatterhornWhymper.configuration.system_domain.to_s.strip != ''
34
+ end
16
35
  end
@@ -0,0 +1,15 @@
1
+ module Support
2
+ module FixtureHelpers
3
+ def file_fixture_base_path
4
+ File.expand_path('../../files', __FILE__)
5
+ end
6
+
7
+ def file_fixture_filename(path)
8
+ File.join(file_fixture_base_path, path)
9
+ end
10
+
11
+ def file_fixture_contents(path)
12
+ File.read(file_fixture_filename(path))
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Support
2
+ module RemoteHelpers
3
+ def self.included(context)
4
+ context.before do
5
+ MatterhornWhymper.logger.level = Logger::DEBUG
6
+ WebMock.allow_net_connect!
7
+ end
8
+
9
+ context.after do
10
+ WebMock.disable_net_connect!
11
+ MatterhornWhymper.logger.level = Logger::WARN
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+ require 'tempfile'
3
+
4
+ describe Matterhorn::Endpoint::Ingest do
5
+ before do
6
+ @ingest = Matterhorn::Endpoint::Ingest.new
7
+ stub_request(:head, %r{}).to_return(status: 200, body: '', headers: { 'WWW-Authenticate' => 'Basic realm="Matterhorn"' })
8
+ stub_request(:get, %r{/ingest/createMediaPackage}).to_return(status: 200, body: file_fixture_contents('empty_media_package.xml'))
9
+ end
10
+
11
+ it "adds a local file to its media package with addTrack" do
12
+ stub_request(:post, %r{/ingest/addTrack}).to_return(status: 200, body: file_fixture_contents('media_package_with_one_track.xml'))
13
+ @ingest.createMediaPackage
14
+ tempfile = Tempfile.new('source')
15
+ tempfile.close
16
+ begin
17
+ response_body = @ingest.addTrack(tempfile.path, 'source/raw')
18
+ expect(response_body).to start_with('<?xml')
19
+ ensure
20
+ tempfile.unlink
21
+ end
22
+ end
23
+
24
+ it "adds a source URL to its media package with addTrack" do
25
+ stub_request(:post, %r{/ingest/addTrack}).to_return(status: 200, body: file_fixture_contents('media_package_with_one_track.xml'))
26
+ @ingest.createMediaPackage
27
+ response_body = @ingest.addTrack('http://example.com/path/to/file', 'source/raw')
28
+ expect(response_body).to start_with('<?xml')
29
+ end
30
+ end
@@ -1,34 +1,17 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Matterhorn::Endpoint do
4
-
5
- it "does ingest endpoint available" do
4
+ it "sets up an ingest endpoint" do
6
5
  Matterhorn::Endpoint.open(:ingest) do |ingest_endpoint|
7
6
  expect(ingest_endpoint).not_to be nil
8
7
  expect(ingest_endpoint.class.name).to eq 'Matterhorn::Endpoint::Ingest'
9
8
  end
10
9
  end
11
10
 
12
- it "does workflow endpoint available" do
11
+ it "sets up a workflow endpoint" do
13
12
  Matterhorn::Endpoint.open(:workflow) do |workflow_endpoint|
14
13
  expect(workflow_endpoint).not_to be nil
15
14
  expect(workflow_endpoint.class.name).to eq 'Matterhorn::Endpoint::Workflow'
16
15
  end
17
16
  end
18
-
19
17
  end
20
-
21
-
22
- describe "Ingest Mediapackages" do
23
-
24
- it "creates a mediapackage" do
25
- Matterhorn::Endpoint.open(:ingest) do |ingest_endpoint|
26
- ingest_endpoint.createMediaPackage()
27
- mp_local = ingest_endpoint.media_package
28
- mp_remote = ingest_endpoint.media_package('remote')
29
- expect(mp_local).not_to be nil
30
- expect(mp_remote).not_to be nil
31
- end
32
- end
33
-
34
- end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: matterhorn_whymper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Fritschi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-16 00:00:00.000000000 Z
11
+ date: 2014-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multipart-post
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mime-types
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>'
60
+ - !ruby/object:Gem::Version
61
+ version: '1.25'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>'
67
+ - !ruby/object:Gem::Version
68
+ version: '1.25'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +108,20 @@ dependencies:
94
108
  - - ~>
95
109
  - !ruby/object:Gem::Version
96
110
  version: '2.14'
111
+ - !ruby/object:Gem::Dependency
112
+ name: webmock
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '1.18'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: '1.18'
97
125
  description: ! "This Ruby wrapper is designed to write some ruby scripts against the\n
98
126
  \ Matterhorn Endpoint API"
99
127
  email:
@@ -120,10 +148,16 @@ files:
120
148
  - lib/matterhorn_whymper.rb
121
149
  - lib/matterhorn_whymper/version.rb
122
150
  - matterhorn_whymper.gemspec
123
- - spec/Matterhorn_whymper_spec.rb
124
- - spec/endpoints_spec.rb
151
+ - spec/files/empty_media_package.xml
152
+ - spec/files/media_package_with_one_track.xml
125
153
  - spec/matterhorn.yml.sample
154
+ - spec/remote/matterhorn/endpoint/ingest_spec.rb
126
155
  - spec/spec_helper.rb
156
+ - spec/support/fixture_helpers.rb
157
+ - spec/support/remote_helpers.rb
158
+ - spec/unit/Matterhorn_whymper_spec.rb
159
+ - spec/unit/matterhorn/endpoint/ingest_spec.rb
160
+ - spec/unit/matterhorn/endpoints_spec.rb
127
161
  homepage: https://github.com/switch-ch/matterhorn_whymper
128
162
  licenses:
129
163
  - MIT
@@ -149,7 +183,13 @@ signing_key:
149
183
  specification_version: 4
150
184
  summary: Ruby wrapper around the Matterhorn Endpoint API
151
185
  test_files:
152
- - spec/Matterhorn_whymper_spec.rb
153
- - spec/endpoints_spec.rb
186
+ - spec/files/empty_media_package.xml
187
+ - spec/files/media_package_with_one_track.xml
154
188
  - spec/matterhorn.yml.sample
189
+ - spec/remote/matterhorn/endpoint/ingest_spec.rb
155
190
  - spec/spec_helper.rb
191
+ - spec/support/fixture_helpers.rb
192
+ - spec/support/remote_helpers.rb
193
+ - spec/unit/Matterhorn_whymper_spec.rb
194
+ - spec/unit/matterhorn/endpoint/ingest_spec.rb
195
+ - spec/unit/matterhorn/endpoints_spec.rb