brightcove-api 1.0.1 → 1.0.2
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.
- data/README.rdoc +4 -1
- data/Rakefile +0 -1
- data/VERSION +1 -1
- data/brightcove-api.gemspec +3 -5
- data/lib/brightcove-api.rb +22 -7
- data/test/fakeweb/delete_video_response.json +1 -0
- data/test/test_brightcove-api.rb +36 -4
- metadata +7 -22
data/README.rdoc
CHANGED
@@ -5,6 +5,7 @@ Ruby gem for interacting with the Brightcove media API. http://docs.brightcove.c
|
|
5
5
|
== Requirements
|
6
6
|
|
7
7
|
* HTTParty
|
8
|
+
* JSON
|
8
9
|
* FakeWeb (only for testing)
|
9
10
|
|
10
11
|
== Install
|
@@ -21,7 +22,9 @@ Ruby gem for interacting with the Brightcove media API. http://docs.brightcove.c
|
|
21
22
|
=> {"items"=>[{"name"=>"Documentarian Skydiving", "id"=>496518762, "linkText"=>nil, "linkURL"=>nil}, {"name"=>"Surface Tricks", "id"=>496518763, "linkText"=>nil, "linkURL"=>nil}, {"name"=>"Free Skiing", "id"=>496518765, "linkText"=>nil, "linkURL"=>nil}], "page_number"=>0, "page_size"=>3, "total_count"=>-1}
|
22
23
|
>> response = brightcove.get('find_all_videos', {:page_size => 5, :sort_by => 'PLAYS_TOTAL'})
|
23
24
|
=> {"items"=>[{"longDescription"=>nil, "name"=>"Wild Slopes '06", "lastModifiedDate"=>"1171324523307", "thumbnailURL"=>"http://brightcove.vo.llnwd.net/d2/unsecured/media/270881183/270881183_502534829_94499905676eb7cd04a558da2adcf6a34f437b88.jpg?pubId=270881183", "tags"=>["adventure", "snowboarding"], "playsTrailingWeek"=>35, "shortDescription"=>"A ski and snowboard movie that challenges the hype and dares you to see what freeskiing and snowboarding have become. Documenting the very best of this year's riding and culture.", "playsTotal"=>4458, "adKeys"=>nil, "id"=>496518766, "length"=>51251, "videoStillURL"=>"http://brightcove.vo.llnwd.net/d2/unsecured/media/270881183/270881183_502534838_f80fe64f052328cd3b2e158d7234003a23091845.jpg?pubId=270881183", "publishedDate"=>"1171324434811", "creationDate"=>"1171267200000", "linkText"=>nil, "economics"=>"FREE", "referenceId"=>"title010", "linkURL"=>nil}, {"longDescription"=>nil, "name"=>"Jellyfish", "lastModifiedDate"=>"1245181300374", "thumbnailURL"=>"http://brightcove.vo.llnwd.net/d7/unsecured/media/270881183/270881183_26530711001_jellyFish.jpg?pubId=270881183", "tags"=>["sea", "custom skins"], "playsTrailingWeek"=>46, "shortDescription"=>"Jellyfish", "playsTotal"=>4081, "adKeys"=>nil, "id"=>26512561001, "length"=>28400, "videoStillURL"=>"http://brightcove.vo.llnwd.net/d7/unsecured/media/270881183/270881183_26519430001_vs-270881183-vid26513829001-img0000.jpg?pubId=270881183", "publishedDate"=>"1245172164326", "creationDate"=>"1245172164326", "linkText"=>nil, "economics"=>"AD_SUPPORTED", "referenceId"=>nil, "linkURL"=>nil}, {"longDescription"=>"Long Description", "name"=>"Demo Title 2", "lastModifiedDate"=>"1263581295791", "thumbnailURL"=>"http://brightcove.vo.llnwd.net/d2/unsecured/media/270881183/270881183_275925069_d1f97c7f07f2a3f4de7b38eda3761f16f39d2a99.jpg?pubId=270881183", "tags"=>[], "playsTrailingWeek"=>1, "shortDescription"=>"Short Description", "playsTotal"=>3876, "adKeys"=>nil, "id"=>276024035, "length"=>418742, "videoStillURL"=>"http://brightcove.vo.llnwd.net/d2/unsecured/media/270881183/270881183_275943599_b7e2ca63c0311fa3f0b027304b41d252f12d2d66.jpg?pubId=270881183", "publishedDate"=>"1161296014264", "creationDate"=>"1161241200000", "linkText"=>"Related Link", "economics"=>"FREE", "referenceId"=>nil, "linkURL"=>"http://www.brightcove.com"}, {"longDescription"=>nil, "name"=>"Dolphins", "lastModifiedDate"=>"1263581295790", "thumbnailURL"=>"http://brightcove.vo.llnwd.net/d7/unsecured/media/270881183/270881183_26531197001_dolphins.jpg?pubId=270881183", "tags"=>["sea", "custom skins"], "playsTrailingWeek"=>30, "shortDescription"=>"Dolphins", "playsTotal"=>3870, "adKeys"=>nil, "id"=>26511963001, "length"=>12800, "videoStillURL"=>"http://brightcove.vo.llnwd.net/d7/unsecured/media/270881183/270881183_26519372001_vs-270881183-vid26510372001-img0000.jpg?pubId=270881183", "publishedDate"=>"1245171732987", "creationDate"=>"1245171732987", "linkText"=>nil, "economics"=>"AD_SUPPORTED", "referenceId"=>nil, "linkURL"=>nil}, {"longDescription"=>nil, "name"=>"Welcome to Brightcove 3", "lastModifiedDate"=>"1225134261511", "thumbnailURL"=>"http://brightcove.vo.llnwd.net/d6/unsecured/media/270881183/270881183_1858983740_brightcove3-thumb.jpg?pubId=270881183", "tags"=>[], "playsTrailingWeek"=>0, "shortDescription"=>"Tareef Kawaf, Brightcove's SVP of Engineering, welcomes you to Brightcove 3.", "playsTotal"=>3349, "adKeys"=>nil, "id"=>1858922805, "length"=>53820, "videoStillURL"=>"http://brightcove.vo.llnwd.net/d6/unsecured/media/270881183/270881183_1858994782_vid-StudioDashboards.jpg?pubId=270881183", "publishedDate"=>"1225134261508", "creationDate"=>"1224096089173", "linkText"=>nil, "economics"=>"AD_SUPPORTED", "referenceId"=>nil, "linkURL"=>nil}], "page_number"=>0, "page_size"=>5, "total_count"=>-1}
|
24
|
-
|
25
|
+
>> response = brightcove.post('delete_video', {:video_id => '595153263001'})
|
26
|
+
=> {"result"=>{}, "id"=>nil, "error"=>nil}
|
27
|
+
|
25
28
|
== Note on Patches/Pull Requests
|
26
29
|
|
27
30
|
* Fork the project.
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.2
|
data/brightcove-api.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{brightcove-api}
|
8
|
-
s.version = "1.0.
|
8
|
+
s.version = "1.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["David Czarnecki"]
|
12
|
-
s.date = %q{2010-09-
|
12
|
+
s.date = %q{2010-09-25}
|
13
13
|
s.description = %q{Ruby gem for interacting with the Brightcove media API. http://docs.brightcove.com/en/media/}
|
14
14
|
s.email = %q{dczarnecki@agoragames.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
"VERSION",
|
26
26
|
"brightcove-api.gemspec",
|
27
27
|
"lib/brightcove-api.rb",
|
28
|
+
"test/fakeweb/delete_video_response.json",
|
28
29
|
"test/fakeweb/find_all_videos_response.json",
|
29
30
|
"test/helper.rb",
|
30
31
|
"test/test_brightcove-api.rb"
|
@@ -46,18 +47,15 @@ Gem::Specification.new do |s|
|
|
46
47
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
47
48
|
s.add_runtime_dependency(%q<httparty>, ["= 0.5.2"])
|
48
49
|
s.add_runtime_dependency(%q<fakeweb>, ["= 1.2.8"])
|
49
|
-
s.add_runtime_dependency(%q<mocha>, ["= 0.9.8"])
|
50
50
|
s.add_runtime_dependency(%q<json>, ["= 1.2.4"])
|
51
51
|
else
|
52
52
|
s.add_dependency(%q<httparty>, ["= 0.5.2"])
|
53
53
|
s.add_dependency(%q<fakeweb>, ["= 1.2.8"])
|
54
|
-
s.add_dependency(%q<mocha>, ["= 0.9.8"])
|
55
54
|
s.add_dependency(%q<json>, ["= 1.2.4"])
|
56
55
|
end
|
57
56
|
else
|
58
57
|
s.add_dependency(%q<httparty>, ["= 0.5.2"])
|
59
58
|
s.add_dependency(%q<fakeweb>, ["= 1.2.8"])
|
60
|
-
s.add_dependency(%q<mocha>, ["= 0.9.8"])
|
61
59
|
s.add_dependency(%q<json>, ["= 1.2.4"])
|
62
60
|
end
|
63
61
|
end
|
data/lib/brightcove-api.rb
CHANGED
@@ -5,7 +5,7 @@ module Brightcove
|
|
5
5
|
class API
|
6
6
|
include HTTParty
|
7
7
|
|
8
|
-
VERSION = '1.0.
|
8
|
+
VERSION = '1.0.2'.freeze
|
9
9
|
|
10
10
|
DEFAULT_HEADERS = {
|
11
11
|
'User-Agent' => "brightcove-api gem #{VERSION}"
|
@@ -13,18 +13,22 @@ module Brightcove
|
|
13
13
|
|
14
14
|
headers(DEFAULT_HEADERS)
|
15
15
|
|
16
|
-
|
16
|
+
READ_API_URL = 'http://api.brightcove.com/services/library'
|
17
|
+
WRITE_API_URL = 'http://api.brightcove.com/services/post'
|
17
18
|
|
18
|
-
attr_accessor :
|
19
|
+
attr_accessor :read_api_url
|
20
|
+
attr_accessor :write_api_url
|
21
|
+
attr_accessor :token
|
19
22
|
|
20
23
|
# Brightcove returns text/html as the Content-Type for a response even though the response is JSON.
|
21
24
|
# So, let's just parse the response as JSON
|
22
25
|
format(:json)
|
23
26
|
|
24
27
|
# Initialize with your API token
|
25
|
-
def initialize(token,
|
28
|
+
def initialize(token, read_api_url = READ_API_URL, write_api_url = WRITE_API_URL)
|
26
29
|
@token = token
|
27
|
-
@
|
30
|
+
@read_api_url = read_api_url
|
31
|
+
@write_api_url = write_api_url
|
28
32
|
end
|
29
33
|
|
30
34
|
def debug(location = $stderr)
|
@@ -44,7 +48,18 @@ module Brightcove
|
|
44
48
|
query = {}
|
45
49
|
query.merge!({:query => options})
|
46
50
|
|
47
|
-
self.class.get(@
|
48
|
-
end
|
51
|
+
self.class.get(@read_api_url, query)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Post to Brightcove using a particular API method, api_method. The parameters hash is where you add all the required parameters appropriate for the API call.
|
55
|
+
def post(api_method, parameters = {})
|
56
|
+
parameters.merge!({"token" => @token})
|
57
|
+
|
58
|
+
body = {}
|
59
|
+
body.merge!({:method => api_method})
|
60
|
+
body.merge!({:params => parameters})
|
61
|
+
|
62
|
+
self.class.post(@write_api_url, {:body => {:json => JSON.generate(body)}})
|
63
|
+
end
|
49
64
|
end
|
50
65
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
{"result":{}, "id":nil, "error":nil}
|
data/test/test_brightcove-api.rb
CHANGED
@@ -12,14 +12,33 @@ class TestBrightcoveApi < Test::Unit::TestCase
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_api_version
|
15
|
-
assert_equal '1.0.
|
15
|
+
assert_equal '1.0.2', Brightcove::API::VERSION
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
18
|
+
def test_can_set_read_api_url
|
19
19
|
brightcove = Brightcove::API.new('apikeytoken')
|
20
|
-
brightcove.api_url = 'http://some.api.com'
|
21
20
|
|
22
|
-
assert_equal
|
21
|
+
assert_equal Brightcove::API::READ_API_URL, brightcove.read_api_url
|
22
|
+
|
23
|
+
brightcove.read_api_url = 'http://some.api.com'
|
24
|
+
|
25
|
+
assert_equal 'http://some.api.com', brightcove.read_api_url
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_can_set_write_api_url
|
29
|
+
brightcove = Brightcove::API.new('apikeytoken')
|
30
|
+
|
31
|
+
assert_equal Brightcove::API::WRITE_API_URL, brightcove.write_api_url
|
32
|
+
|
33
|
+
brightcove.write_api_url = 'http://some.api.com'
|
34
|
+
|
35
|
+
assert_equal 'http://some.api.com', brightcove.write_api_url
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_can_set_token
|
39
|
+
brightcove = Brightcove::API.new('apikeytoken')
|
40
|
+
|
41
|
+
assert_equal 'apikeytoken', brightcove.token
|
23
42
|
end
|
24
43
|
|
25
44
|
def test_can_set_http_headers
|
@@ -41,4 +60,17 @@ class TestBrightcoveApi < Test::Unit::TestCase
|
|
41
60
|
assert_equal 5, brightcove_response['items'].size
|
42
61
|
assert_equal 0, brightcove_response['page_number']
|
43
62
|
end
|
63
|
+
|
64
|
+
def test_delete_video
|
65
|
+
FakeWeb.register_uri(:post,
|
66
|
+
'http://api.brightcove.com/services/post',
|
67
|
+
:body => File.join(File.dirname(__FILE__), 'fakeweb', 'delete_video_response.json'),
|
68
|
+
:content_type => "application/json")
|
69
|
+
|
70
|
+
brightcove = Brightcove::API.new('0Z2dtxTdJAxtbZ-d0U7Bhio2V1Rhr5Iafl5FFtDPY8E.')
|
71
|
+
brightcove_response = brightcove.post('delete_video', {:video_id => '595153261337'})
|
72
|
+
|
73
|
+
assert brightcove_response.has_key?('result')
|
74
|
+
assert_equal brightcove_response['error'], 'nil'
|
75
|
+
end
|
44
76
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brightcove-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 2
|
10
|
+
version: 1.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Czarnecki
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-09-
|
18
|
+
date: 2010-09-25 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -50,26 +50,10 @@ dependencies:
|
|
50
50
|
version: 1.2.8
|
51
51
|
type: :runtime
|
52
52
|
version_requirements: *id002
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: mocha
|
55
|
-
prerelease: false
|
56
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - "="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
hash: 43
|
62
|
-
segments:
|
63
|
-
- 0
|
64
|
-
- 9
|
65
|
-
- 8
|
66
|
-
version: 0.9.8
|
67
|
-
type: :runtime
|
68
|
-
version_requirements: *id003
|
69
53
|
- !ruby/object:Gem::Dependency
|
70
54
|
name: json
|
71
55
|
prerelease: false
|
72
|
-
requirement: &
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
73
57
|
none: false
|
74
58
|
requirements:
|
75
59
|
- - "="
|
@@ -81,7 +65,7 @@ dependencies:
|
|
81
65
|
- 4
|
82
66
|
version: 1.2.4
|
83
67
|
type: :runtime
|
84
|
-
version_requirements: *
|
68
|
+
version_requirements: *id003
|
85
69
|
description: Ruby gem for interacting with the Brightcove media API. http://docs.brightcove.com/en/media/
|
86
70
|
email: dczarnecki@agoragames.com
|
87
71
|
executables: []
|
@@ -100,6 +84,7 @@ files:
|
|
100
84
|
- VERSION
|
101
85
|
- brightcove-api.gemspec
|
102
86
|
- lib/brightcove-api.rb
|
87
|
+
- test/fakeweb/delete_video_response.json
|
103
88
|
- test/fakeweb/find_all_videos_response.json
|
104
89
|
- test/helper.rb
|
105
90
|
- test/test_brightcove-api.rb
|