weibo_2 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -77,4 +77,29 @@ It should work.
77
77
  pic = File.open(tmpfile.path)
78
78
  client.statuses.upload(params[:status], pic)
79
79
  ```
80
+ ## Setting up SSL certificates
81
+
82
+ This gem using [faraday](https://github.com/technoweenie/faraday) for connection, which supports ssl. According to [this article](https://github.com/technoweenie/faraday/wiki/Setting-up-SSL-certificates), you can do as following to support ssl connection.
83
+
84
+ ### Ubuntu
85
+
86
+ To locate your SSL certificate folder, type `openssl version -a`. Append `/certs` to the OPENSSLDIR listed, here it would be `/usr/lib/ssl/certs`.
87
+
88
+ ```ruby
89
+ client = WeiboOAuth2::Client.new(YOUR_KEY, YOUR_SECRET, :ssl => {:ca_path => "/usr/lib/ssl/certs"})
90
+ # or as below if you have set WeiboOAuth2::Config.api_key and WeiboOAuth2::Config.api_secret already
91
+ # client = WeiboOAuth2::Client.new('', '', :ssl => {:ca_path => "/usr/lib/ssl/certs"})
92
+ ```
93
+
94
+ ### On Heroku, Fedora, CentOS
95
+
96
+ ```ruby
97
+ client = WeiboOAuth2::Client.new(YOUR_KEY, YOUR_SECRET, :ssl => {:ca_file => '/usr/lib/ssl/certs/ca-certificates.crt'})
98
+ # or as below if you have set WeiboOAuth2::Config.api_key and WeiboOAuth2::Config.api_secret already
99
+ # client = WeiboOAuth2::Client.new('', '', :ssl => {:ca_file => '/usr/lib/ssl/certs/ca-certificates.crt'})
100
+ ```
101
+
102
+ For Fedora and CentOS, use the path and file `/etc/pki/tls/certs/ca-bundle.crt` instead, or find your system path with `openssl version -a`.
103
+
104
+
80
105
 
data/example/example.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  require 'weibo_2'
2
4
  require 'time-ago-in-words'
3
5
 
@@ -10,18 +12,17 @@ WeiboOAuth2::Config.api_key = ENV['KEY']
10
12
  WeiboOAuth2::Config.api_secret = ENV['SECRET']
11
13
  WeiboOAuth2::Config.redirect_uri = ENV['REDIR_URI']
12
14
 
13
- client = WeiboOAuth2::Client.new
14
-
15
15
  get '/' do
16
- puts '* ' * 80
17
- puts session.inspect
18
- puts !client.authorized?
16
+ client = WeiboOAuth2::Client.new
19
17
  if session[:access_token] && !client.authorized?
20
18
  token = client.get_token_from_hash({:access_token => session[:access_token], :expires_at => session[:expires_at]})
21
- puts token.inspect
22
- if token.validated?
19
+ p "*" * 80 + "validated"
20
+ p token.inspect
21
+ p token.validated?
22
+
23
+ unless token.validated?
23
24
  reset_session
24
- redirect 'connect'
25
+ redirect '/connect'
25
26
  return
26
27
  end
27
28
  end
@@ -33,14 +34,18 @@ get '/' do
33
34
  end
34
35
 
35
36
  get '/connect' do
37
+ client = WeiboOAuth2::Client.new
36
38
  redirect client.authorize_url
37
39
  end
38
40
 
39
41
  get '/callback' do
42
+ client = WeiboOAuth2::Client.new
40
43
  access_token = client.auth_code.get_token(params[:code].to_s)
41
44
  session[:uid] = access_token.params["uid"]
42
45
  session[:access_token] = access_token.token
43
46
  session[:expires_at] = access_token.expires_at
47
+ p "*" * 80 + "callback"
48
+ p access_token.inspect
44
49
  @user = client.users.show_by_uid(session[:uid].to_i)
45
50
  redirect '/'
46
51
  end
@@ -56,13 +61,16 @@ get '/screen.css' do
56
61
  end
57
62
 
58
63
  post '/update' do
64
+ client = WeiboOAuth2::Client.new
65
+ client.get_token_from_hash({:access_token => session[:access_token], :expires_at => session[:expires_at]})
59
66
  statuses = client.statuses
60
67
 
61
68
  unless params[:file] && (tmpfile = params[:file][:tempfile]) && (name = params[:file][:filename])
62
69
  statuses.update(params[:status])
63
70
  else
71
+ status = params[:status] || '图片'
64
72
  pic = File.open(tmpfile.path)
65
- statuses.upload(params[:status], pic)
73
+ statuses.upload(status, pic)
66
74
  end
67
75
 
68
76
  redirect '/'
@@ -7,4 +7,6 @@
7
7
  %body
8
8
  %h2="weibo oauth2 api example"
9
9
  %a{:href => (session[:uid] ? "/logout" : "/connect")}=(session[:uid] ? "logout" : "connect")
10
- = yield
10
+ = yield
11
+ %footer
12
+ %h6="http://github.com/simsicon/weibo_2"
@@ -4,5 +4,17 @@ module WeiboOAuth2
4
4
  def validated?
5
5
  !!@expires_at && !expired?
6
6
  end
7
+
8
+ def expired?
9
+ expires? && (expires_at < self.time_convertion(Time.now, '+08:00').to_i)
10
+ end
11
+
12
+
13
+ #Convert Time from a time zone to another time zone
14
+ #'+08:00' or '-08:00'
15
+ #return Time
16
+ def self.time_convertion(time, time_zone)
17
+ time.getutc.getlocal(time_zone)
18
+ end
7
19
  end
8
20
  end
@@ -30,8 +30,8 @@ module WeiboOAuth2
30
30
  end
31
31
 
32
32
  def get_token_from_hash(hash)
33
- access_token = hash.delete('access_token') || hash.delete(:access_token)
34
- opts = {:expires_at => hash["expires"] ||hash[:expires],
33
+ access_token = hash.delete(:access_token) || hash.delete('access_token')
34
+ opts = {:expires_at => (hash.delete(:expires_at) || hash.delete('expires_at')),
35
35
  :header_format => "OAuth2 %s",
36
36
  :param_name => "access_token"}
37
37
 
@@ -1,3 +1,19 @@
1
1
  module WeiboOAuth2
2
- VERSION = "0.0.7"
2
+
3
+ class Version
4
+ MAJOR = 0 unless defined? MAJOR
5
+ MINOR = 0 unless defined? MINOR
6
+ PATCH = 8 unless defined? PATCH
7
+ PRE = nil unless defined? PRE
8
+
9
+ class << self
10
+
11
+ # @return [String]
12
+ def to_s
13
+ [MAJOR, MINOR, PATCH, PRE].compact.join('.')
14
+ end
15
+
16
+ end
17
+
18
+ end
3
19
  end
@@ -0,0 +1,44 @@
1
+ require 'weibo_2'
2
+
3
+ WeiboOAuth2::Config.api_key = 'abc'
4
+ WeiboOAuth2::Config.api_secret = 'def'
5
+ WeiboOAuth2::Config.redirect_uri = 'https://example.com/callback'
6
+
7
+ describe WeiboOAuth2::Client do
8
+ it 'should assign id and secret from config' do
9
+ subject.id.should == 'abc'
10
+ subject.secret.should == 'def'
11
+ end
12
+
13
+ it 'should assign site from default' do
14
+ subject.site.should == 'https://api.weibo.com/2/'
15
+ end
16
+
17
+ it 'should get authorize_url' do
18
+ authorize_url = 'https://api.weibo.com/oauth2/authorize?client_id=abc&response_type=code&redirect_uri=https%3A%2F%2Fexample.com%2Fcallback'
19
+ subject.authorize_url.should == authorize_url
20
+ end
21
+
22
+ it 'should leave Faraday::Connection#ssl unset' do
23
+ subject.connection.ssl.should == {}
24
+ end
25
+
26
+ it "defaults raise_errors to true" do
27
+ subject.options[:raise_errors].should be_true
28
+ end
29
+
30
+ it "allows true/false for raise_errors option" do
31
+ client = OAuth2::Client.new('abc', 'def', :site => 'https://api.example.com', :raise_errors => false)
32
+ client.options[:raise_errors].should be_false
33
+ client = OAuth2::Client.new('abc', 'def', :site => 'https://api.example.com', :raise_errors => true)
34
+ client.options[:raise_errors].should be_true
35
+ end
36
+
37
+ it "allows get/post for access_token_method option" do
38
+ client = OAuth2::Client.new('abc', 'def', :site => 'https://api.example.com', :access_token_method => :get)
39
+ client.options[:access_token_method].should == :get
40
+ client = OAuth2::Client.new('abc', 'def', :site => 'https://api.example.com', :access_token_method => :post)
41
+ client.options[:access_token_method].should == :post
42
+ end
43
+
44
+ end
data/weibo_2.gemspec CHANGED
@@ -13,7 +13,9 @@ Gem::Specification.new do |gem|
13
13
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
14
  gem.name = "weibo_2"
15
15
  gem.require_paths = ["lib"]
16
- gem.version = WeiboOAuth2::VERSION
16
+ gem.version = WeiboOAuth2::Version
17
+
18
+ gem.add_development_dependency "rspec", "~> 2.6"
17
19
 
18
20
  gem.add_runtime_dependency 'oauth2', "~> 0.8.0"
19
21
  gem.add_runtime_dependency 'hashie', "~> 1.2.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weibo_2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,24 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-15 00:00:00.000000000 Z
12
+ date: 2012-07-23 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '2.6'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '2.6'
14
30
  - !ruby/object:Gem::Dependency
15
31
  name: oauth2
16
32
  requirement: !ruby/object:Gem::Requirement
@@ -121,6 +137,7 @@ files:
121
137
  - lib/weibo_2/oauth.rb
122
138
  - lib/weibo_2/strategy/auth_code.rb
123
139
  - lib/weibo_2/version.rb
140
+ - spec/client_spec.rb
124
141
  - weibo_2.gemspec
125
142
  homepage: ''
126
143
  licenses: []
@@ -146,5 +163,6 @@ rubygems_version: 1.8.24
146
163
  signing_key:
147
164
  specification_version: 3
148
165
  summary: A oauth2 gem for weibo
149
- test_files: []
166
+ test_files:
167
+ - spec/client_spec.rb
150
168
  has_rdoc: