dailymotion-api-client 0.1.2 → 0.2.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 +9 -9
- data/.rubocop.yml +11 -0
- data/.rubocop_todo.yml +34 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +2 -0
- data/CHANGELOG.md +9 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +29 -7
- data/README.md +63 -14
- data/Rakefile +1 -0
- data/dailymotion-api-client.gemspec +8 -5
- data/lib/dailymotion-api-client.rb +1 -0
- data/lib/dailymotion-api/client.rb +50 -7
- data/lib/dailymotion-api/version.rb +2 -1
- data/spec/lib/dailymotion-api/client_spec.rb +92 -16
- data/spec/spec_helper.rb +5 -4
- metadata +37 -4
- data/.rvmrc +0 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZDRlNTI2ZjI0NmJmNGQxOWYxMDk5MTk2OWMyNjNlOWQ0NTM2OTBkMQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
7
|
-
|
6
|
+
ZTJjN2JhOGQ4ODNmNmQ2ZTc3NGZjYjc2Y2IyZWM2ZWQwNzEyMjBlMA==
|
7
|
+
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OGIyZTBmZmYxYjAwZGYwODY3YjNkNWY4NWIwYTdlOTlmNzVhOGQ4NzFlYzEy
|
10
|
+
OWRkODU0ODliOTU2NzNhOTFkZmFjMWRjMjMzMzZkNDRkYjg1OGE1MDdmY2U3
|
11
|
+
OTg0MmZmMTZlNTA4MDhjZGYyYzQ5OWJjMDMzYWQwMzI5ZjE4NGI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YjUyYzA1NmJhNDliYTEwZmJmODVlMmUyZWM2MzZjZTMzNzU3MmQwZDVhZDU1
|
14
|
+
Yjc5MzJiZWJmYzVmN2MyNjk5MjU4NzY2YWYzM2ZkYjEzZGVlYTVlMzg2OWVl
|
15
|
+
OTNiMDFjNTkwN2RhNzViZTA5YWQxZDZlN2EzN2ZjY2NmN2RmZjM=
|
data/.rubocop.yml
ADDED
data/.rubocop_todo.yml
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# This configuration was generated by
|
2
|
+
# `rubocop --auto-gen-config`
|
3
|
+
# on 2015-08-13 14:01:08 -0300 using RuboCop version 0.33.0.
|
4
|
+
# The point is for the user to remove these configuration records
|
5
|
+
# one by one as the offenses are removed from the code base.
|
6
|
+
# Note that changes in the inspected code, or installation of new
|
7
|
+
# versions of RuboCop, may require this file to be generated again.
|
8
|
+
|
9
|
+
# Offense count: 38
|
10
|
+
# Configuration parameters: AllowURI, URISchemes.
|
11
|
+
Metrics/LineLength:
|
12
|
+
Max: 250
|
13
|
+
|
14
|
+
# Offense count: 1
|
15
|
+
Style/AccessorMethodName:
|
16
|
+
Exclude:
|
17
|
+
- 'lib/dailymotion-api/client.rb'
|
18
|
+
|
19
|
+
# Offense count: 1
|
20
|
+
# Configuration parameters: Exclude.
|
21
|
+
Style/FileName:
|
22
|
+
Exclude:
|
23
|
+
- 'lib/dailymotion-api-client.rb'
|
24
|
+
|
25
|
+
# Offense count: 1
|
26
|
+
Style/RescueModifier:
|
27
|
+
Exclude:
|
28
|
+
- 'lib/dailymotion-api/client.rb'
|
29
|
+
|
30
|
+
# Offense count: 1
|
31
|
+
# Cop supports --auto-correct.
|
32
|
+
# Configuration parameters: SupportedStyles.
|
33
|
+
Style/SpaceBeforeBlockBraces:
|
34
|
+
EnforcedStyle: no_space
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
dailymotion-api-client
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-1.9.3-p194
|
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## 0.2.0
|
4
|
+
|
5
|
+
- Rename `get_upload_url` to `generate_upload_url`
|
6
|
+
- Add a `request_access_token_manage_videos_scope` to request an access token with "manage_videos" scope
|
7
|
+
- Add support to get a list of videos from the authenticated user
|
8
|
+
- Add support to get info from the authenticated user
|
9
|
+
- Add support to delete a video
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,22 +1,32 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
dailymotion-api-client (0.
|
4
|
+
dailymotion-api-client (0.2.0)
|
5
5
|
httmultiparty
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
+
ast (2.1.0)
|
11
|
+
astrolabe (1.3.1)
|
12
|
+
parser (~> 2.2)
|
10
13
|
diff-lcs (1.2.1)
|
11
|
-
httmultiparty (0.3.
|
14
|
+
httmultiparty (0.3.16)
|
12
15
|
httparty (>= 0.7.3)
|
16
|
+
mimemagic
|
13
17
|
multipart-post
|
14
|
-
httparty (0.
|
15
|
-
|
18
|
+
httparty (0.13.5)
|
19
|
+
json (~> 1.8)
|
16
20
|
multi_xml (>= 0.5.2)
|
17
|
-
|
18
|
-
|
19
|
-
|
21
|
+
json (1.8.3)
|
22
|
+
mimemagic (0.3.0)
|
23
|
+
multi_xml (0.5.5)
|
24
|
+
multipart-post (2.0.0)
|
25
|
+
parser (2.2.2.6)
|
26
|
+
ast (>= 1.1, < 3.0)
|
27
|
+
powerpack (0.1.1)
|
28
|
+
rainbow (2.0.0)
|
29
|
+
rake (0.9.2.2)
|
20
30
|
rspec (2.13.0)
|
21
31
|
rspec-core (~> 2.13.0)
|
22
32
|
rspec-expectations (~> 2.13.0)
|
@@ -25,10 +35,22 @@ GEM
|
|
25
35
|
rspec-expectations (2.13.0)
|
26
36
|
diff-lcs (>= 1.1.3, < 2.0)
|
27
37
|
rspec-mocks (2.13.0)
|
38
|
+
rubocop (0.33.0)
|
39
|
+
astrolabe (~> 1.3)
|
40
|
+
parser (>= 2.2.2.5, < 3.0)
|
41
|
+
powerpack (~> 0.1)
|
42
|
+
rainbow (>= 1.99.1, < 3.0)
|
43
|
+
ruby-progressbar (~> 1.4)
|
44
|
+
ruby-progressbar (1.7.5)
|
28
45
|
|
29
46
|
PLATFORMS
|
30
47
|
ruby
|
31
48
|
|
32
49
|
DEPENDENCIES
|
33
50
|
dailymotion-api-client!
|
51
|
+
rake
|
34
52
|
rspec
|
53
|
+
rubocop
|
54
|
+
|
55
|
+
BUNDLED WITH
|
56
|
+
1.10.6
|
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# DailyMotion API Ruby Client
|
2
2
|
|
3
|
+
[](https://travis-ci.org/ggarnier/dailymotion-api-client)
|
4
|
+
|
3
5
|
Client for DailyMotion API (http://www.dailymotion.com/doc/api/graph-api.html) written in Ruby.
|
4
6
|
|
5
7
|
## Installation
|
@@ -18,22 +20,69 @@ Or install it yourself as:
|
|
18
20
|
|
19
21
|
## Usage
|
20
22
|
|
23
|
+
To use this client, you need to register an account at Dailymotion and [create an API key](http://www.dailymotion.com/settings/developer/new). You need an API key and API secret.
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
# Create an instance of DailymotionApi::Client
|
27
|
+
client = DailymotionApi::Client.new(username: "username", password: "password", api_key: "key", api_secret: "secret")
|
28
|
+
```
|
29
|
+
|
21
30
|
### Publishing a video
|
22
31
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
32
|
+
```ruby
|
33
|
+
# Request an access token
|
34
|
+
client.request_access_token
|
35
|
+
|
36
|
+
# Request an upload url
|
37
|
+
client.generate_upload_url
|
38
|
+
|
39
|
+
# Post your video
|
40
|
+
client.post_video(File.new("my_video.mp4"))
|
41
|
+
|
42
|
+
# Create a video
|
43
|
+
client.create_video
|
44
|
+
|
45
|
+
# Update video metadata an publish it
|
46
|
+
client.publish_video(title: "my video", channel: "shortfilms", tags: "my_tag")
|
47
|
+
```
|
48
|
+
|
49
|
+
### Getting info about a published video
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
# Get basic metadata for a video with id "video_id"
|
53
|
+
client.get_video("video_id")
|
54
|
+
=> {"id"=>"video_id", "title"=>"my video", "channel"=>"shortfilms", "owner"=>"owner_id"}
|
55
|
+
|
56
|
+
# Get specific fields for a video with id "video_id"
|
57
|
+
client.get_video("video_id", "url,title")
|
58
|
+
=> {"url"=>"http://www.dailymotion.com/video/video_id_my-video_shortfilms", "title"=>"my video"}
|
59
|
+
```
|
60
|
+
|
61
|
+
### Getting info about authenticated user
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
client.request_access_token
|
65
|
+
|
66
|
+
client.get_authenticated_user_info
|
67
|
+
=> {"id"=>"owner_id", "screenname"=>"username"}
|
68
|
+
|
69
|
+
client.get_authenticated_user_info("screenname")
|
70
|
+
=> {"screenname"=>"username"}
|
71
|
+
```
|
72
|
+
|
73
|
+
### Getting a list of videos published by authenticated user
|
74
|
+
|
75
|
+
```ruby
|
76
|
+
client.request_access_token
|
77
|
+
|
78
|
+
client.get_authenticated_user_videos
|
79
|
+
=> {"page"=>1, "limit"=>10, "explicit"=>false, "total"=>1, "has_more"=>false, "list"=>[{"id"=>"video_id", "title"=>"my video", "channel"=>"shortfilms", "owner"=>"owner_id"}]}
|
80
|
+
|
81
|
+
client.get_authenticated_user_videos("url")
|
82
|
+
=> {"page"=>1, "limit"=>10, "explicit"=>false, "total"=>1, "has_more"=>false, "list"=>[{"url"=>"http://www.dailymotion.com/video/video_id_my-video_shortfilms"}]}
|
83
|
+
```
|
84
|
+
|
85
|
+
### Deleting a video
|
37
86
|
|
38
87
|
## Contributing
|
39
88
|
|
data/Rakefile
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
2
|
+
|
3
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
5
|
+
require "dailymotion-api/version"
|
5
6
|
|
6
7
|
Gem::Specification.new do |gem|
|
7
8
|
gem.name = "dailymotion-api-client"
|
8
9
|
gem.version = DailymotionApi::VERSION
|
9
10
|
gem.authors = ["Guilherme Garnier"]
|
10
11
|
gem.email = ["guilherme.garnier@gmail.com"]
|
11
|
-
gem.description =
|
12
|
-
gem.summary =
|
12
|
+
gem.description = "DailyMotion API Ruby client"
|
13
|
+
gem.summary = "DailyMotion API Ruby client"
|
13
14
|
gem.homepage = "http://github.com/ggarnier/dailymotion-api-client"
|
14
15
|
|
15
|
-
gem.files = `git ls-files`.split(
|
16
|
+
gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
16
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
19
|
gem.require_paths = ["lib"]
|
@@ -20,4 +21,6 @@ Gem::Specification.new do |gem|
|
|
20
21
|
gem.add_runtime_dependency "httmultiparty"
|
21
22
|
|
22
23
|
gem.add_development_dependency "rspec"
|
24
|
+
gem.add_development_dependency "rake"
|
25
|
+
gem.add_development_dependency "rubocop"
|
23
26
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
|
2
3
|
module DailymotionApi
|
3
4
|
class Client
|
4
5
|
API_URL = "https://api.dailymotion.com"
|
@@ -13,38 +14,80 @@ module DailymotionApi
|
|
13
14
|
end
|
14
15
|
|
15
16
|
def request_access_token
|
16
|
-
response = HTTMultiParty.post("#{API_URL}/oauth/token", body:
|
17
|
+
response = HTTMultiParty.post("#{API_URL}/oauth/token", body: request_access_token_params)
|
18
|
+
@access_token = response.parsed_response["access_token"]
|
19
|
+
end
|
20
|
+
|
21
|
+
def request_access_token_manage_videos_scope
|
22
|
+
response = HTTMultiParty.post("#{API_URL}/oauth/token", body: request_access_token_params.merge(scope: "manage_videos"))
|
17
23
|
@access_token = response.parsed_response["access_token"]
|
18
24
|
end
|
19
25
|
|
20
|
-
def
|
26
|
+
def generate_upload_url
|
21
27
|
response = HTTMultiParty.get("#{API_URL}/file/upload?access_token=#{@access_token}")
|
22
28
|
@upload_url = response.parsed_response["upload_url"]
|
23
29
|
end
|
24
30
|
|
25
31
|
def post_video(video)
|
26
|
-
response = HTTMultiParty.post(@upload_url, body: {file: video})
|
32
|
+
response = HTTMultiParty.post(@upload_url, body: { file: video })
|
27
33
|
@uploaded_video_url = response.parsed_response["url"]
|
28
34
|
end
|
29
35
|
|
30
36
|
def create_video
|
31
|
-
response = HTTMultiParty.post("#{API_URL}/me/videos", body: {access_token: @access_token, url: @uploaded_video_url})
|
37
|
+
response = HTTMultiParty.post("#{API_URL}/me/videos", body: { access_token: @access_token, url: @uploaded_video_url })
|
32
38
|
@video_id = response.parsed_response["id"]
|
33
39
|
end
|
34
40
|
|
35
|
-
def publish_video(
|
36
|
-
HTTMultiParty.post("#{API_URL}/video/#{@video_id}", body:
|
41
|
+
def publish_video(metadata)
|
42
|
+
HTTMultiParty.post("#{API_URL}/video/#{@video_id}", body: metadata.merge(access_token: @access_token, published: true))
|
37
43
|
end
|
38
44
|
|
39
45
|
def get_video(video_id, fields = "")
|
40
46
|
return nil unless video_id
|
41
47
|
|
42
|
-
|
48
|
+
url = "#{API_URL}/video/#{video_id}"
|
49
|
+
url << "?fields=#{fields}" unless fields.empty?
|
50
|
+
|
51
|
+
response = HTTMultiParty.get(url)
|
43
52
|
response.parsed_response
|
44
53
|
end
|
45
54
|
|
46
55
|
def video_url
|
47
56
|
@video_url ||= get_video(@video_id, "url")["url"] rescue nil
|
48
57
|
end
|
58
|
+
|
59
|
+
def get_authenticated_user_videos(fields = "")
|
60
|
+
if fields.empty?
|
61
|
+
response = HTTMultiParty.get("#{API_URL}/me/videos", headers: { "Authorization" => "Bearer #{@access_token}" })
|
62
|
+
else
|
63
|
+
response = HTTMultiParty.get("#{API_URL}/me/videos?fields=#{fields}", headers: { "Authorization" => "Bearer #{@access_token}" })
|
64
|
+
end
|
65
|
+
|
66
|
+
response.parsed_response
|
67
|
+
end
|
68
|
+
|
69
|
+
def get_authenticated_user_info(fields = "")
|
70
|
+
if fields.empty?
|
71
|
+
response = HTTMultiParty.get("#{API_URL}/me/", headers: { "Authorization" => "Bearer #{@access_token}" })
|
72
|
+
else
|
73
|
+
response = HTTMultiParty.get("#{API_URL}/me?fields=#{fields}", headers: { "Authorization" => "Bearer #{@access_token}" })
|
74
|
+
end
|
75
|
+
|
76
|
+
response.parsed_response
|
77
|
+
end
|
78
|
+
|
79
|
+
def delete_video(video_id)
|
80
|
+
# It's required to get an access token with manage_videos scope
|
81
|
+
return nil unless video_id
|
82
|
+
|
83
|
+
response = HTTMultiParty.delete("#{API_URL}/me/videos/#{video_id}", headers: { "Authorization" => "Bearer #{@access_token}" })
|
84
|
+
response.parsed_response
|
85
|
+
end
|
86
|
+
|
87
|
+
private
|
88
|
+
|
89
|
+
def request_access_token_params
|
90
|
+
{ grant_type: "password", client_id: @api_key, client_secret: @api_secret, username: @username, password: @password }
|
91
|
+
end
|
49
92
|
end
|
50
93
|
end
|
@@ -1,10 +1,12 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
|
2
3
|
require "spec_helper"
|
3
4
|
|
4
5
|
describe DailymotionApi::Client do
|
5
6
|
before do
|
6
7
|
HTTMultiParty.stub(:get)
|
7
8
|
HTTMultiParty.stub(:post)
|
9
|
+
HTTMultiParty.stub(:delete)
|
8
10
|
end
|
9
11
|
|
10
12
|
let! :client do
|
@@ -13,28 +15,28 @@ describe DailymotionApi::Client do
|
|
13
15
|
|
14
16
|
describe "#request_access_token" do
|
15
17
|
it "should do a request for an access token" do
|
16
|
-
response = stub("response", parsed_response: {"access_token" => "token"})
|
17
|
-
HTTMultiParty.should_receive(:post).with("https://api.dailymotion.com/oauth/token", body: {grant_type: "password", client_id: "key", client_secret: "secret", username: "test", password: "12345"}).and_return(response)
|
18
|
+
response = stub("response", parsed_response: { "access_token" => "token" })
|
19
|
+
HTTMultiParty.should_receive(:post).with("https://api.dailymotion.com/oauth/token", body: { grant_type: "password", client_id: "key", client_secret: "secret", username: "test", password: "12345" }).and_return(response)
|
18
20
|
|
19
21
|
client.request_access_token.should == "token"
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
23
|
-
describe "#
|
25
|
+
describe "#generate_upload_url" do
|
24
26
|
it "should request an upload url" do
|
25
27
|
client.instance_variable_set(:@access_token, "token")
|
26
|
-
response = stub("response", parsed_response: {"upload_url" => "upload_url"})
|
28
|
+
response = stub("response", parsed_response: { "upload_url" => "upload_url" })
|
27
29
|
HTTMultiParty.should_receive(:get).with("https://api.dailymotion.com/file/upload?access_token=token").and_return(response)
|
28
30
|
|
29
|
-
client.
|
31
|
+
client.generate_upload_url.should == "upload_url"
|
30
32
|
end
|
31
33
|
end
|
32
34
|
|
33
35
|
describe "#post_video" do
|
34
36
|
it "should post the video" do
|
35
37
|
client.instance_variable_set(:@upload_url, "upload_url")
|
36
|
-
response = stub("response", parsed_response: {"url" => "video_url"})
|
37
|
-
HTTMultiParty.should_receive(:post).with("upload_url", body: {file: "video_data"}).and_return(response)
|
38
|
+
response = stub("response", parsed_response: { "url" => "video_url" })
|
39
|
+
HTTMultiParty.should_receive(:post).with("upload_url", body: { file: "video_data" }).and_return(response)
|
38
40
|
|
39
41
|
client.post_video("video_data").should == "video_url"
|
40
42
|
end
|
@@ -44,8 +46,8 @@ describe DailymotionApi::Client do
|
|
44
46
|
it "should post the video" do
|
45
47
|
client.instance_variable_set(:@access_token, "token")
|
46
48
|
client.instance_variable_set(:@uploaded_video_url, "video_url")
|
47
|
-
response = stub("response", parsed_response: {"id" => "video_id"})
|
48
|
-
HTTMultiParty.should_receive(:post).with("https://api.dailymotion.com/me/videos", body: {access_token: "token", url: "video_url"}).and_return(response)
|
49
|
+
response = stub("response", parsed_response: { "id" => "video_id" })
|
50
|
+
HTTMultiParty.should_receive(:post).with("https://api.dailymotion.com/me/videos", body: { access_token: "token", url: "video_url" }).and_return(response)
|
49
51
|
|
50
52
|
client.create_video.should == "video_id"
|
51
53
|
end
|
@@ -55,19 +57,31 @@ describe DailymotionApi::Client do
|
|
55
57
|
it "should publish the video" do
|
56
58
|
client.instance_variable_set(:@access_token, "token")
|
57
59
|
client.instance_variable_set(:@video_id, "video_id")
|
58
|
-
HTTMultiParty.should_receive(:post).with("https://api.dailymotion.com/video/video_id", body: {access_token: "token", published: true, title: "video title", channel: "shortfilms", tags: "some_tag"})
|
60
|
+
HTTMultiParty.should_receive(:post).with("https://api.dailymotion.com/video/video_id", body: { access_token: "token", published: true, title: "video title", channel: "shortfilms", tags: "some_tag" })
|
59
61
|
|
60
62
|
client.publish_video(title: "video title", channel: "shortfilms", tags: "some_tag")
|
61
63
|
end
|
62
64
|
end
|
63
65
|
|
64
66
|
describe "#get_video" do
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
67
|
+
context "without parameters" do
|
68
|
+
it "should return requested video metadata" do
|
69
|
+
parsed_response = { "url" => "video_url", "channel" => "video_channel" }
|
70
|
+
response = stub("response", parsed_response: parsed_response)
|
71
|
+
HTTMultiParty.should_receive(:get).with("https://api.dailymotion.com/video/123?fields=url,channel").and_return(response)
|
72
|
+
|
73
|
+
client.get_video("123", "url,channel").should == parsed_response
|
74
|
+
end
|
75
|
+
end
|
69
76
|
|
70
|
-
|
77
|
+
context "with parameters" do
|
78
|
+
it "should return basic video metadata" do
|
79
|
+
parsed_response = { "id" => "video_id", "title" => "my video" }
|
80
|
+
response = stub("response", parsed_response: parsed_response)
|
81
|
+
HTTMultiParty.should_receive(:get).with("https://api.dailymotion.com/video/123").and_return(response)
|
82
|
+
|
83
|
+
client.get_video("123").should == parsed_response
|
84
|
+
end
|
71
85
|
end
|
72
86
|
end
|
73
87
|
|
@@ -75,7 +89,7 @@ describe DailymotionApi::Client do
|
|
75
89
|
context "when video_id is defined" do
|
76
90
|
it "should return the video url" do
|
77
91
|
client.instance_variable_set(:@video_id, "video_id")
|
78
|
-
response = stub("response", parsed_response: {"url" => "url"})
|
92
|
+
response = stub("response", parsed_response: { "url" => "url" })
|
79
93
|
HTTMultiParty.should_receive(:get).with("https://api.dailymotion.com/video/video_id?fields=url").and_return(response)
|
80
94
|
|
81
95
|
client.video_url.should == "url"
|
@@ -87,5 +101,67 @@ describe DailymotionApi::Client do
|
|
87
101
|
client.video_url.should be_nil
|
88
102
|
end
|
89
103
|
end
|
104
|
+
|
105
|
+
describe "#request_access_token_manage_videos_scope" do
|
106
|
+
it "should do a request for an access token with manage videos scrope" do
|
107
|
+
response = stub("response", parsed_response: { "access_token" => "token" })
|
108
|
+
HTTMultiParty.should_receive(:post).with("https://api.dailymotion.com/oauth/token", body: { grant_type: "password", client_id: "key", client_secret: "secret", username: "test", password: "12345", scope: "manage_videos" }).and_return(response)
|
109
|
+
|
110
|
+
client.request_access_token_manage_videos_scope.should == "token"
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe "#get_authenticated_user_info " do
|
115
|
+
it "should return the information of an user authenticated with filters" do
|
116
|
+
parsed_response = { "id" => "id", "screenname" => "screenname" }
|
117
|
+
response = stub("response", parsed_response: parsed_response)
|
118
|
+
HTTMultiParty.should_receive(:get).with("https://api.dailymotion.com/me?fields=id,screenname", headers: { "Authorization" => "Bearer #{@access_token}" }).and_return(response)
|
119
|
+
|
120
|
+
client.get_authenticated_user_info("id,screenname").should == parsed_response
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
describe "#get_authenticated_user_info" do
|
125
|
+
it "should return the information of an user authenticated without filters" do
|
126
|
+
parsed_response = { "id" => "id", "screenname" => "screenname" }
|
127
|
+
response = stub("response", parsed_response: parsed_response)
|
128
|
+
HTTMultiParty.should_receive(:get).with("https://api.dailymotion.com/me/", headers: { "Authorization" => "Bearer #{@access_token}" }).and_return(response)
|
129
|
+
|
130
|
+
client.get_authenticated_user_info.should == parsed_response
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
describe "#get_authenticated_user_videos" do
|
135
|
+
it "should return the information of an user authenticated with filters" do
|
136
|
+
parsed_response = { "page" => "1", "limit" => "10", "explicit" => "false", "total" => "1", "has_more" => "false", "list" => [{ "id" => "idvideo", "title" => "testvideo" }] }
|
137
|
+
response = stub("response", parsed_response: parsed_response)
|
138
|
+
HTTMultiParty.should_receive(:get).with("https://api.dailymotion.com/me/videos?fields=id,title", headers: { "Authorization" => "Bearer #{@access_token}" }).and_return(response)
|
139
|
+
|
140
|
+
client.get_authenticated_user_videos("id,title").should == parsed_response
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
describe "#get_authenticated_user_videos" do
|
145
|
+
it "should return the information of an user authenticated without filters" do
|
146
|
+
parsed_response = {
|
147
|
+
"page" => "1", "limit" => "10", "explicit" => "false", "total" => "1", "has_more" => "false",
|
148
|
+
"list" => [{ "id" => "idvideo", "title" => "testvideo", "channel" => "sportTest", "owner" => "test" }]
|
149
|
+
}
|
150
|
+
response = stub("response", parsed_response: parsed_response)
|
151
|
+
HTTMultiParty.should_receive(:get).with("https://api.dailymotion.com/me/videos", headers: { "Authorization" => "Bearer #{@access_token}" }).and_return(response)
|
152
|
+
|
153
|
+
client.get_authenticated_user_videos.should == parsed_response
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
describe "#delete_video" do
|
158
|
+
it "should delete a specific video" do
|
159
|
+
parsed_response = {}
|
160
|
+
response = stub("response", parsed_response: parsed_response)
|
161
|
+
HTTMultiParty.should_receive(:delete).with("https://api.dailymotion.com/me/videos/xxx", headers: { "Authorization" => "Bearer #{@access_token}" }).and_return(response)
|
162
|
+
|
163
|
+
client.delete_video("xxx").should == parsed_response
|
164
|
+
end
|
165
|
+
end
|
90
166
|
end
|
91
167
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
ENV['RACK_ENV'] ||= 'test'
|
3
2
|
|
4
|
-
|
3
|
+
ENV["RACK_ENV"] ||= "test"
|
5
4
|
|
6
|
-
|
7
|
-
|
5
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
|
6
|
+
|
7
|
+
require "rspec"
|
8
|
+
require "dailymotion-api-client"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dailymotion-api-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Guilherme Garnier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httmultiparty
|
@@ -38,6 +38,34 @@ dependencies:
|
|
38
38
|
- - ! '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
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: rubocop
|
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'
|
41
69
|
description: DailyMotion API Ruby client
|
42
70
|
email:
|
43
71
|
- guilherme.garnier@gmail.com
|
@@ -46,7 +74,12 @@ extensions: []
|
|
46
74
|
extra_rdoc_files: []
|
47
75
|
files:
|
48
76
|
- .rspec
|
49
|
-
- .
|
77
|
+
- .rubocop.yml
|
78
|
+
- .rubocop_todo.yml
|
79
|
+
- .ruby-gemset
|
80
|
+
- .ruby-version
|
81
|
+
- .travis.yml
|
82
|
+
- CHANGELOG.md
|
50
83
|
- Gemfile
|
51
84
|
- Gemfile.lock
|
52
85
|
- README.md
|
@@ -76,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
109
|
version: '0'
|
77
110
|
requirements: []
|
78
111
|
rubyforge_project:
|
79
|
-
rubygems_version: 2.
|
112
|
+
rubygems_version: 2.4.8
|
80
113
|
signing_key:
|
81
114
|
specification_version: 4
|
82
115
|
summary: DailyMotion API Ruby client
|
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm use --create 1.9.3-p194@dailymotion-api-client
|