douban-ruby 0.0.7 → 0.0.8
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/.gitignore +1 -0
- data/Gemfile +1 -6
- data/Gemfile.lock +19 -3
- data/{History.txt → History.rdoc} +5 -0
- data/README.rdoc +72 -0
- data/Rakefile +9 -21
- data/douban-ruby.gemspec +4 -1
- data/lib/douban.rb +6 -1
- data/lib/douban/authorize.rb +33 -4
- data/lib/douban/version.rb +1 -1
- data/spec/douban/author_spec.rb +2 -1
- data/spec/douban/authorize_spec.rb +2 -1
- data/spec/douban/collection_spec.rb +2 -1
- data/spec/douban/event_spec.rb +2 -1
- data/spec/douban/mail_spec.rb +2 -1
- data/spec/douban/miniblog_comment_spec.rb +2 -1
- data/spec/douban/miniblog_comments_spec.rb +2 -1
- data/spec/douban/miniblog_spec.rb +4 -4
- data/spec/douban/note_spec.rb +2 -1
- data/spec/douban/page_info_spec.rb +1 -1
- data/spec/douban/people_spec.rb +1 -1
- data/spec/douban/recommendation_comment_spec.rb +2 -1
- data/spec/douban/recommendation_spec.rb +2 -1
- data/spec/douban/review_spec.rb +2 -1
- data/spec/douban/subject_spec.rb +2 -1
- data/spec/douban/tag_spec.rb +2 -1
- data/spec/douban_spec.rb +1 -1
- data/spec/spec_helper.rb +4 -3
- metadata +27 -24
- data/README.txt +0 -25
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,16 +1,32 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
douban-ruby (0.0.8)
|
5
|
+
oauth
|
6
|
+
|
1
7
|
GEM
|
2
8
|
remote: http://rubygems.org/
|
3
9
|
specs:
|
4
|
-
|
10
|
+
diff-lcs (1.1.2)
|
11
|
+
oauth (0.4.4)
|
5
12
|
rake (0.8.7)
|
6
13
|
rcov (0.9.9)
|
7
|
-
rspec (
|
14
|
+
rspec (2.3.0)
|
15
|
+
rspec-core (~> 2.3.0)
|
16
|
+
rspec-expectations (~> 2.3.0)
|
17
|
+
rspec-mocks (~> 2.3.0)
|
18
|
+
rspec-core (2.3.1)
|
19
|
+
rspec-expectations (2.3.0)
|
20
|
+
diff-lcs (~> 1.1.2)
|
21
|
+
rspec-mocks (2.3.0)
|
8
22
|
|
9
23
|
PLATFORMS
|
10
24
|
ruby
|
11
25
|
|
12
26
|
DEPENDENCIES
|
27
|
+
bundler (>= 1.0.0)
|
28
|
+
douban-ruby!
|
13
29
|
oauth
|
14
30
|
rake
|
15
31
|
rcov
|
16
|
-
rspec (~>
|
32
|
+
rspec (~> 2.0)
|
data/README.rdoc
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
= Douban Ruby Client
|
2
|
+
|
3
|
+
http://github.com/lidaobing/douban-ruby
|
4
|
+
|
5
|
+
== Description
|
6
|
+
|
7
|
+
douban ruby client. including OAuth support.
|
8
|
+
|
9
|
+
* RDoc: http://rubydoc.info/github/lidaobing/douban-ruby/master/frames
|
10
|
+
* Douban API reference: http://www.douban.com/service/apidoc/reference/
|
11
|
+
|
12
|
+
== Installation
|
13
|
+
|
14
|
+
gem install douban-ruby
|
15
|
+
|
16
|
+
== Usage
|
17
|
+
|
18
|
+
=== Basic Process
|
19
|
+
|
20
|
+
require 'douban'
|
21
|
+
|
22
|
+
douban = Douban::Authorize.new(apikey, secret)
|
23
|
+
puts "please open #{douban.get_authorize_url}"
|
24
|
+
puts "after login, press Enter to continue"
|
25
|
+
|
26
|
+
gets
|
27
|
+
puts douban.get_people
|
28
|
+
|
29
|
+
=== Async Process (or Server Process)
|
30
|
+
|
31
|
+
class DoubanController < ApplicationController
|
32
|
+
DOUBAN_APIKEY = '0fb6d0a851af01a12f2471f8f50d04e3'
|
33
|
+
DOUBAN_SECRET = 'c59e3be2ccdde999'
|
34
|
+
|
35
|
+
def index
|
36
|
+
unless params[:oauth_token]
|
37
|
+
unless session[:access_token]
|
38
|
+
# step 1, initial state, store request_token to session
|
39
|
+
callback_url = url_for :action => :index
|
40
|
+
redirect_url = douban.get_authorize_url(callback_url)
|
41
|
+
session[:request_token] = douban.request_token :as_token
|
42
|
+
redirect_to redirect_url
|
43
|
+
else
|
44
|
+
# step 3, have access_token, now you can use douban API
|
45
|
+
douban.access_token = session[:access_token]
|
46
|
+
render :text => douban.get_people.inspect
|
47
|
+
end
|
48
|
+
else
|
49
|
+
if session[:request_token]
|
50
|
+
# step 2, return from douban, store access_token to session
|
51
|
+
douban.request_token = session[:request_token]
|
52
|
+
douban.auth
|
53
|
+
reset_session
|
54
|
+
session[:access_token] = douban.access_token :as_token
|
55
|
+
redirect_to :action => :index
|
56
|
+
else
|
57
|
+
# error branch, you return from douban, but no request_token in session
|
58
|
+
logger.info "return from oauth but no request_token"
|
59
|
+
redirect_to :action => :index
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
def douban
|
66
|
+
@douban ||= Douban::Authorize.new DOUBAN_APIKEY, DOUBAN_SECRET
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
== LICENSE:
|
71
|
+
|
72
|
+
licensed under Artistic License or GPL license.
|
data/Rakefile
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'bundler
|
3
|
-
|
2
|
+
require 'bundler'
|
3
|
+
Bundler::GemHelper.install_tasks
|
4
|
+
require 'rspec/core/rake_task'
|
4
5
|
require 'rake/rdoctask'
|
5
6
|
require File.expand_path("../lib/douban/version", __FILE__)
|
6
7
|
|
@@ -8,29 +9,16 @@ ENV["SPEC_OPTS"] ||= "-f nested --color -b"
|
|
8
9
|
ENV["RDOC_OPTS"] ||= "-c UTF-8"
|
9
10
|
|
10
11
|
|
11
|
-
|
12
|
+
RSpec::Core::RakeTask.new :spec
|
12
13
|
task :default => :spec
|
13
14
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
t.spec_files = FileList['spec/**/*_spec.rb' ]
|
18
|
-
t.rcov = true
|
19
|
-
t.rcov_opts = ['--exclude' , 'gems,spec' ]
|
20
|
-
end
|
15
|
+
RSpec::Core::RakeTask.new :rcov do |t|
|
16
|
+
t.rcov = true
|
17
|
+
t.rcov_opts = ['--exclude' , 'gems,spec' ]
|
21
18
|
end
|
22
19
|
|
23
20
|
Rake::RDocTask.new do |rd|
|
21
|
+
rd.main = "README.rdoc"
|
22
|
+
rd.rdoc_files.include("README.rdoc", "History.rdoc", "lib/**/*.rb")
|
24
23
|
rd.options << "--charset" << "UTF-8"
|
25
24
|
end
|
26
|
-
|
27
|
-
desc 'build gem file'
|
28
|
-
task :build do
|
29
|
-
system "gem build douban-ruby.gemspec"
|
30
|
-
end
|
31
|
-
|
32
|
-
desc 'upload gem file'
|
33
|
-
task :release => :build do
|
34
|
-
system "gem push douban-ruby-#{Douban::VERSION}"
|
35
|
-
end
|
36
|
-
|
data/douban-ruby.gemspec
CHANGED
@@ -10,13 +10,16 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.homepage = "http://rubygems.org/gems/douban-ruby"
|
11
11
|
s.summary = "douban ruby client. including OAuth support."
|
12
12
|
s.description = "Douban API reference: http://www.douban.com/service/apidoc/reference/"
|
13
|
+
s.rdoc_options << '--main' << 'README.rdoc' <<
|
14
|
+
'--charset' << 'UTF-8'
|
15
|
+
s.extra_rdoc_files = ['README.rdoc', 'History.rdoc']
|
13
16
|
|
14
17
|
s.required_rubygems_version = ">= 1.3.6"
|
15
18
|
s.rubyforge_project = "douban-ruby"
|
16
19
|
|
17
20
|
s.add_dependency "oauth"
|
18
21
|
s.add_development_dependency "bundler", ">= 1.0.0"
|
19
|
-
s.add_development_dependency 'rspec', '~>
|
22
|
+
s.add_development_dependency 'rspec', '~> 2.0'
|
20
23
|
s.add_development_dependency 'rake'
|
21
24
|
s.add_development_dependency 'rcov'
|
22
25
|
|
data/lib/douban.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
# Copyright (c) 2008 Hooopo
|
4
4
|
# Written and maintained by Hooopo<hoooopo@gmail.com>
|
5
5
|
#
|
6
|
+
# Copyright (C) 2010-2011 LI Daobing <lidaobing@gmail.com>
|
7
|
+
#
|
6
8
|
#
|
7
9
|
# This program is free software. You can re-distribute and/or
|
8
10
|
# modify this program under the same terms of ruby itself ---
|
@@ -49,5 +51,8 @@
|
|
49
51
|
#==Install and Wiki
|
50
52
|
# http://code.google.com/p/doubanclient-ruby/
|
51
53
|
|
52
|
-
|
54
|
+
|
55
|
+
module Douban
|
56
|
+
autoload :Authorize, 'douban/authorize'
|
57
|
+
end
|
53
58
|
require 'douban/version'
|
data/lib/douban/authorize.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
gem 'oauth'
|
3
1
|
require 'oauth'
|
4
2
|
require 'oauth/consumer'
|
5
3
|
require 'rexml/document'
|
@@ -25,8 +23,6 @@ module Douban
|
|
25
23
|
attr_reader :api_secret
|
26
24
|
attr_reader :authorize_url
|
27
25
|
attr_reader :consumer
|
28
|
-
attr_reader :request_token
|
29
|
-
attr_reader :access_token
|
30
26
|
|
31
27
|
@@debug = false
|
32
28
|
|
@@ -1122,6 +1118,23 @@ module Douban
|
|
1122
1118
|
@request_token = token
|
1123
1119
|
end
|
1124
1120
|
|
1121
|
+
|
1122
|
+
# :call-seq:
|
1123
|
+
# request_token => OAuth::RequestToken
|
1124
|
+
# request_token :as_token => OAuth::Token
|
1125
|
+
#
|
1126
|
+
# if you want to serialize request_token, use :as_token will be much shorter
|
1127
|
+
def request_token(arg=nil)
|
1128
|
+
if arg.nil?
|
1129
|
+
@request_token
|
1130
|
+
elsif arg == :as_token
|
1131
|
+
@request_token.nil? ? nil :
|
1132
|
+
OAuth::Token.new(@request_token.token, @request_token.secret)
|
1133
|
+
else
|
1134
|
+
raise ArgumentError
|
1135
|
+
end
|
1136
|
+
end
|
1137
|
+
|
1125
1138
|
def access_token=(token)
|
1126
1139
|
unless token.kind_of? OAuth::AccessToken
|
1127
1140
|
token = OAuth::AccessToken.new(
|
@@ -1132,6 +1145,22 @@ module Douban
|
|
1132
1145
|
@access_token = token
|
1133
1146
|
end
|
1134
1147
|
|
1148
|
+
# :call-seq:
|
1149
|
+
# access_token => OAuth::AccessToken
|
1150
|
+
# access_token :as_token => OAuth::Token
|
1151
|
+
#
|
1152
|
+
# if you want to serialize access_token, use :as_token will be much shorter
|
1153
|
+
def access_token(arg=nil)
|
1154
|
+
if arg.nil?
|
1155
|
+
@access_token
|
1156
|
+
elsif arg == :as_token
|
1157
|
+
@access_token.nil? ? nil :
|
1158
|
+
OAuth::Token.new(@access_token.token, @access_token.secret)
|
1159
|
+
else
|
1160
|
+
raise ArgumentError
|
1161
|
+
end
|
1162
|
+
end
|
1163
|
+
|
1135
1164
|
def get_recommendation(id)
|
1136
1165
|
resp=get("/recommendation/#{u(id.to_s)}")
|
1137
1166
|
if resp.code=="200"
|
data/lib/douban/version.rb
CHANGED
data/spec/douban/author_spec.rb
CHANGED
data/spec/douban/event_spec.rb
CHANGED
data/spec/douban/mail_spec.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
|
-
|
1
|
+
# -*- encoding: UTF-8 -*-
|
2
|
+
require "spec_helper"
|
2
3
|
|
3
4
|
require 'douban/miniblog'
|
4
5
|
|
5
6
|
module Douban
|
6
7
|
describe Miniblog do
|
7
8
|
before do
|
8
|
-
@s =
|
9
|
+
@s = %q{
|
9
10
|
<?xml version="1.0" encoding="UTF-8"?>
|
10
11
|
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:db="http://www.douban.com/xmlns/" xmlns:gd="http://schemas.google.com/g/2005" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:opensearch="http://a9.com/-/spec/opensearchrss/1.0/">
|
11
12
|
<id>http://api.douban.com/miniblog/374100199</id>
|
@@ -20,8 +21,7 @@ module Douban
|
|
20
21
|
<published>2010-06-30T19:27:41+08:00</published>
|
21
22
|
<content type="html">&lt;b&gt;单元测试0.921892231299059</content>
|
22
23
|
<db:attribute name="comments_count">0</db:attribute>
|
23
|
-
</entry>
|
24
|
-
eos
|
24
|
+
</entry>}
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should correct deserialize from string" do
|
data/spec/douban/note_spec.rb
CHANGED
data/spec/douban/people_spec.rb
CHANGED
data/spec/douban/review_spec.rb
CHANGED
data/spec/douban/subject_spec.rb
CHANGED
data/spec/douban/tag_spec.rb
CHANGED
data/spec/douban_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: douban-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 8
|
10
|
+
version: 0.0.8
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- LI Daobing
|
@@ -16,10 +16,12 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date:
|
19
|
+
date: 2011-01-02 00:00:00 +08:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
|
+
name: oauth
|
24
|
+
prerelease: false
|
23
25
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
26
|
none: false
|
25
27
|
requirements:
|
@@ -30,10 +32,10 @@ dependencies:
|
|
30
32
|
- 0
|
31
33
|
version: "0"
|
32
34
|
type: :runtime
|
33
|
-
name: oauth
|
34
|
-
prerelease: false
|
35
35
|
version_requirements: *id001
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
+
name: bundler
|
38
|
+
prerelease: false
|
37
39
|
requirement: &id002 !ruby/object:Gem::Requirement
|
38
40
|
none: false
|
39
41
|
requirements:
|
@@ -46,26 +48,25 @@ dependencies:
|
|
46
48
|
- 0
|
47
49
|
version: 1.0.0
|
48
50
|
type: :development
|
49
|
-
name: bundler
|
50
|
-
prerelease: false
|
51
51
|
version_requirements: *id002
|
52
52
|
- !ruby/object:Gem::Dependency
|
53
|
+
name: rspec
|
54
|
+
prerelease: false
|
53
55
|
requirement: &id003 !ruby/object:Gem::Requirement
|
54
56
|
none: false
|
55
57
|
requirements:
|
56
58
|
- - ~>
|
57
59
|
- !ruby/object:Gem::Version
|
58
|
-
hash:
|
60
|
+
hash: 3
|
59
61
|
segments:
|
60
|
-
-
|
61
|
-
- 3
|
62
|
+
- 2
|
62
63
|
- 0
|
63
|
-
version:
|
64
|
+
version: "2.0"
|
64
65
|
type: :development
|
65
|
-
name: rspec
|
66
|
-
prerelease: false
|
67
66
|
version_requirements: *id003
|
68
67
|
- !ruby/object:Gem::Dependency
|
68
|
+
name: rake
|
69
|
+
prerelease: false
|
69
70
|
requirement: &id004 !ruby/object:Gem::Requirement
|
70
71
|
none: false
|
71
72
|
requirements:
|
@@ -76,10 +77,10 @@ dependencies:
|
|
76
77
|
- 0
|
77
78
|
version: "0"
|
78
79
|
type: :development
|
79
|
-
name: rake
|
80
|
-
prerelease: false
|
81
80
|
version_requirements: *id004
|
82
81
|
- !ruby/object:Gem::Dependency
|
82
|
+
name: rcov
|
83
|
+
prerelease: false
|
83
84
|
requirement: &id005 !ruby/object:Gem::Requirement
|
84
85
|
none: false
|
85
86
|
requirements:
|
@@ -90,8 +91,6 @@ dependencies:
|
|
90
91
|
- 0
|
91
92
|
version: "0"
|
92
93
|
type: :development
|
93
|
-
name: rcov
|
94
|
-
prerelease: false
|
95
94
|
version_requirements: *id005
|
96
95
|
description: "Douban API reference: http://www.douban.com/service/apidoc/reference/"
|
97
96
|
email:
|
@@ -101,15 +100,16 @@ executables: []
|
|
101
100
|
|
102
101
|
extensions: []
|
103
102
|
|
104
|
-
extra_rdoc_files:
|
105
|
-
|
103
|
+
extra_rdoc_files:
|
104
|
+
- README.rdoc
|
105
|
+
- History.rdoc
|
106
106
|
files:
|
107
107
|
- .gitignore
|
108
108
|
- Gemfile
|
109
109
|
- Gemfile.lock
|
110
|
-
- History.
|
110
|
+
- History.rdoc
|
111
111
|
- Manifest.txt
|
112
|
-
- README.
|
112
|
+
- README.rdoc
|
113
113
|
- Rakefile
|
114
114
|
- douban-ruby.gemspec
|
115
115
|
- examples/example.rb
|
@@ -155,8 +155,11 @@ homepage: http://rubygems.org/gems/douban-ruby
|
|
155
155
|
licenses: []
|
156
156
|
|
157
157
|
post_install_message:
|
158
|
-
rdoc_options:
|
159
|
-
|
158
|
+
rdoc_options:
|
159
|
+
- --main
|
160
|
+
- README.rdoc
|
161
|
+
- --charset
|
162
|
+
- UTF-8
|
160
163
|
require_paths:
|
161
164
|
- lib
|
162
165
|
required_ruby_version: !ruby/object:Gem::Requirement
|
data/README.txt
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
= Douban Ruby Client
|
2
|
-
|
3
|
-
http://github.com/lidaobing/douban-ruby
|
4
|
-
|
5
|
-
== Description
|
6
|
-
|
7
|
-
douban ruby client. including OAuth support.
|
8
|
-
|
9
|
-
Douban API reference: http://www.douban.com/service/apidoc/reference/
|
10
|
-
|
11
|
-
== Requirments
|
12
|
-
|
13
|
-
* oauth: sudo gem install oauth
|
14
|
-
|
15
|
-
== INSTALL:
|
16
|
-
|
17
|
-
gem install douban-ruby
|
18
|
-
|
19
|
-
== Usage:
|
20
|
-
|
21
|
-
http://github.com/lidaobing/douban-ruby/blob/master/examples/example.rb
|
22
|
-
|
23
|
-
== LICENSE:
|
24
|
-
|
25
|
-
licensed under Artistic License or GPL license.
|