dailymotion-api-client 0.1.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,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ODM3YjRiMDkzMjBjNzU0ZDhlNDJiYzU1M2VmOWFiNmQ1NjE3NDA2Zg==
5
+ data.tar.gz: !binary |-
6
+ MmQ3MGRhNmI4M2ZmODRjYWI4YTI0ZDEwMGFjNjU3ZTUwMTMxNDliZA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ YjA1ZjRiNWY4NzY2MzAzM2E3MjVlYjc4YjJjYmIzNmQ4YjRmY2UwZTM1MDVj
10
+ MzlhY2QxYmNmYjg3NDdjMTcyNThjODY1NDEwY2JkNjNhMmNmMDQ5ZjIzZTI0
11
+ MjU5NWNlN2NmYTE2ZDhlMzc5ZjE3N2U2NmEwZDBkNjk0ZjdmNzM=
12
+ data.tar.gz: !binary |-
13
+ MWQ2NGVlOGQ3ZWMyMGY4ZDFjM2YzYzcwM2RiYTk0N2RiOWQ3NmEzYWU5OTcy
14
+ MDQyMjllZDFkYWNmNzdkMjY0YzhlY2VkNWI3YzM0MjI3ZjE3NTE2OTIwYzZh
15
+ ZTc1NGNlOGJlYmZiNWQyNmU1NzAxNTViNDY5MzYzY2UwMTI0NTM=
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --colour
2
+ --format documentation
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use --create 1.9.3-p194@dailymotion-api-client
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in esportes-client.gemspec
4
+ gemspec
@@ -0,0 +1,34 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ dailymotion-api-client (0.1.0)
5
+ httmultiparty
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ diff-lcs (1.2.1)
11
+ httmultiparty (0.3.8)
12
+ httparty (>= 0.7.3)
13
+ multipart-post
14
+ httparty (0.10.2)
15
+ multi_json (~> 1.0)
16
+ multi_xml (>= 0.5.2)
17
+ multi_json (1.6.1)
18
+ multi_xml (0.5.3)
19
+ multipart-post (1.2.0)
20
+ rspec (2.13.0)
21
+ rspec-core (~> 2.13.0)
22
+ rspec-expectations (~> 2.13.0)
23
+ rspec-mocks (~> 2.13.0)
24
+ rspec-core (2.13.0)
25
+ rspec-expectations (2.13.0)
26
+ diff-lcs (>= 1.1.3, < 2.0)
27
+ rspec-mocks (2.13.0)
28
+
29
+ PLATFORMS
30
+ ruby
31
+
32
+ DEPENDENCIES
33
+ dailymotion-api-client!
34
+ rspec
@@ -0,0 +1,42 @@
1
+ # DailyMotion API Ruby Client
2
+
3
+ Client for DailyMotion API (http://www.dailymotion.com/doc/api/graph-api.html) written in Ruby.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'dailymotion-api-client'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install dailymotion-api-client
18
+
19
+ ## Usage
20
+
21
+ ### Publishing a video
22
+
23
+ # Create an instance of DailymotionApi::Client
24
+ client = DailymotionApi::Client.new(username: "username", password: "password", api_key: "key", api_secret: "secret")
25
+ # Request an access token
26
+ client.request_access_token
27
+ # Request an upload url
28
+ client.get_upload_url
29
+ # Post your video
30
+ client.post_video(File.new("my_video.mp4"))
31
+ # Create a video
32
+ client.create_video
33
+ # Update video data an publish it
34
+ client.publish_video(title: "my video", channel: "shortfilms", tags: "my_tag")
35
+
36
+ ## Contributing
37
+
38
+ 1. Fork it
39
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
40
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
41
+ 4. Push to the branch (`git push origin my-new-feature`)
42
+ 5. Create new Pull Request
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ desc "Run all examples"
5
+ RSpec::Core::RakeTask.new(:spec)
6
+
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'dailymotion-api/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "dailymotion-api-client"
8
+ gem.version = DailymotionApi::VERSION
9
+ gem.authors = ["Guilherme Garnier"]
10
+ gem.email = ["guilherme.garnier@gmail.com"]
11
+ gem.description = %q{DailyMotion API Ruby client}
12
+ gem.summary = %q{DailyMotion API Ruby client}
13
+ gem.homepage = "http://github.com/ggarnier/dailymotion-api-client"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_runtime_dependency "httmultiparty"
21
+
22
+ gem.add_development_dependency "rspec"
23
+ end
@@ -0,0 +1,8 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "httmultiparty"
3
+
4
+ module DailymotionApi
5
+ end
6
+
7
+ require "dailymotion-api/version"
8
+ require "dailymotion-api/client"
@@ -0,0 +1,37 @@
1
+ # -*- coding: utf-8 -*-
2
+ module DailymotionApi
3
+ class Client
4
+ API_URL = "https://api.dailymotion.com"
5
+
6
+ def initialize(params = {})
7
+ @username = params[:username]
8
+ @password = params[:password]
9
+ @api_key = params[:api_key]
10
+ @api_secret = params[:api_secret]
11
+ end
12
+
13
+ def request_access_token
14
+ response = HTTMultiParty.post("#{API_URL}/oauth/token", body: {grant_type: "password", client_id: @api_key, client_secret: @api_secret, username: @username, password: @password})
15
+ @access_token = response.parsed_response["access_token"]
16
+ end
17
+
18
+ def get_upload_url
19
+ response = HTTMultiParty.get("#{API_URL}/file/upload?access_token=#{@access_token}")
20
+ @upload_url = response.parsed_response["upload_url"]
21
+ end
22
+
23
+ def post_video(video)
24
+ response = HTTMultiParty.post(@upload_url, body: {file: video})
25
+ @video_url = response.parsed_response["url"]
26
+ end
27
+
28
+ def create_video
29
+ response = HTTMultiParty.post("#{API_URL}/me/videos", body: {access_token: @access_token, url: @video_url})
30
+ @video_id = response.parsed_response["id"]
31
+ end
32
+
33
+ def publish_video(data)
34
+ HTTMultiParty.post("#{API_URL}/video/#{@video_id}", body: data.merge(access_token: @access_token, published: true))
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,4 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module DailymotionApi
3
+ VERSION = "0.1.1"
4
+ end
@@ -0,0 +1,63 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "spec_helper"
3
+
4
+ describe DailymotionApi::Client do
5
+ before do
6
+ HTTMultiParty.stub(:get)
7
+ HTTMultiParty.stub(:post)
8
+ end
9
+
10
+ let! :client do
11
+ DailymotionApi::Client.new(username: "test", password: "12345", api_key: "key", api_secret: "secret")
12
+ end
13
+
14
+ describe "#request_access_token" do
15
+ 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
+
19
+ client.request_access_token.should == "token"
20
+ end
21
+ end
22
+
23
+ describe "#get_upload_url" do
24
+ it "should request an upload url" do
25
+ client.instance_variable_set(:@access_token, "token")
26
+ response = stub("response", parsed_response: {"upload_url" => "upload_url"})
27
+ HTTMultiParty.should_receive(:get).with("https://api.dailymotion.com/file/upload?access_token=token").and_return(response)
28
+
29
+ client.get_upload_url.should == "upload_url"
30
+ end
31
+ end
32
+
33
+ describe "#post_video" do
34
+ it "should post the video" do
35
+ 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
+
39
+ client.post_video("video_data").should == "video_url"
40
+ end
41
+ end
42
+
43
+ describe "#create_video" do
44
+ it "should post the video" do
45
+ client.instance_variable_set(:@access_token, "token")
46
+ client.instance_variable_set(:@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
+
50
+ client.create_video.should == "video_id"
51
+ end
52
+ end
53
+
54
+ describe "#publish_video" do
55
+ it "should publish the video" do
56
+ client.instance_variable_set(:@access_token, "token")
57
+ 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"})
59
+
60
+ client.publish_video(title: "video title", channel: "shortfilms", tags: "some_tag")
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,7 @@
1
+ # -*- encoding: utf-8 -*-
2
+ ENV['RACK_ENV'] ||= 'test'
3
+
4
+ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
5
+
6
+ require 'rspec'
7
+ require 'dailymotion-api-client'
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dailymotion-api-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Guilherme Garnier
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-03-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httmultiparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
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: rspec
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
+ description: DailyMotion API Ruby client
42
+ email:
43
+ - guilherme.garnier@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - .rspec
49
+ - .rvmrc
50
+ - Gemfile
51
+ - Gemfile.lock
52
+ - README.md
53
+ - Rakefile
54
+ - dailymotion-api-client.gemspec
55
+ - lib/dailymotion-api-client.rb
56
+ - lib/dailymotion-api/client.rb
57
+ - lib/dailymotion-api/version.rb
58
+ - spec/lib/dailymotion-api/client_spec.rb
59
+ - spec/spec_helper.rb
60
+ homepage: http://github.com/ggarnier/dailymotion-api-client
61
+ licenses: []
62
+ metadata: {}
63
+ post_install_message:
64
+ rdoc_options: []
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ requirements: []
78
+ rubyforge_project:
79
+ rubygems_version: 2.0.0
80
+ signing_key:
81
+ specification_version: 4
82
+ summary: DailyMotion API Ruby client
83
+ test_files:
84
+ - spec/lib/dailymotion-api/client_spec.rb
85
+ - spec/spec_helper.rb