croudia 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fb3a0686cfdaa7c6f90d6e512c28a40f6367a6cb
4
- data.tar.gz: 8350f383e5f846169b696c6653afd805f6498c16
3
+ metadata.gz: c980e95cf02f420c143e76e15a2aa2dc0e850ce6
4
+ data.tar.gz: f654ad400d4ac8195127f94ee359477ebb503d4e
5
5
  SHA512:
6
- metadata.gz: 1fe3050abdbbd48263071db6435d669386ee2b846739d07db79498525653934aeaff6d24b3aa9ec95b089773affbad8cd0150af9002882fda7b2372a8d577372
7
- data.tar.gz: f2f081a62a57f4e20267c9d141eac2138ecc95067240b88466d6b5584ce65ed3c7bdb252c1d70ccd00a0587c424ca9b88767e5e4e35955f3ffb13dd40adb36f6
6
+ metadata.gz: fc7a71258db70b68d07bed0ae5a5114862edf1717fffa66740aa7f97d2a8eaedca24f5cb21ba0d37e0dfd84041151c9e3abd3129b7f1dfa6fc1c4cc7469f8a9a
7
+ data.tar.gz: e5ab68cb788c8412aaab28e94da5f8ed18ac16560dd2e726b1c1775f23c5e99281ee6b4b1fea7d0e2d35df96133e1a7b3babf277e79d583df98f57c452147a8c
data/README.md CHANGED
@@ -32,12 +32,18 @@ croudia = Croudia::Client.new(
32
32
  # Get URL
33
33
  url = croudia.authorize_url
34
34
 
35
- # Or add scope query in URL
36
- url = croudia.authrorize_url(scope: "scope_value")
35
+ # Or add state query in URL
36
+ url = croudia.authrorize_url(state: "state_value")
37
37
 
38
38
  # Retrieve an access token
39
39
  access_token = croudia.get_access_token("code param returned by user")
40
40
  #=> { "access_token" => " ... ", "refresh_token" => " ... ", ... }
41
+
42
+ # Refresh an access token
43
+ new_access_token = croudia.get_access_token(
44
+ grant_type: :refresh_token,
45
+ refresh_token: "refresh_token"
46
+ )
41
47
  ```
42
48
 
43
49
  ### Using the API
data/croudia.gemspec CHANGED
@@ -7,6 +7,7 @@ Gem::Specification.new do |gem|
7
7
  gem.description = 'Ruby Wrapper for the Croudia API'
8
8
  gem.summary = 'Croudia API'
9
9
  gem.homepage = 'https://github.com/wktk/croudia-gem'
10
+ gem.license = 'MIT'
10
11
 
11
12
  gem.files = `git ls-files`.split($\)
12
13
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -17,7 +18,6 @@ Gem::Specification.new do |gem|
17
18
 
18
19
  gem.add_dependency 'faraday', '~> 0.8.7'
19
20
  gem.add_dependency 'faraday_middleware', '~> 0.9.0'
20
- gem.add_dependency 'hashie', '~> 2.0.5'
21
21
  gem.add_development_dependency 'rake', '~> 10.1.0'
22
22
  gem.add_development_dependency 'rdoc', '~> 4.0.1'
23
23
  gem.add_development_dependency 'rspec', '~> 2.14.0'
@@ -0,0 +1,12 @@
1
+ require 'croudia/base'
2
+
3
+ module Croudia
4
+ class AccessToken < Croudia::Base
5
+ attr_reader :access_token, :refresh_token, :expires_in, :token_type
6
+ alias :token :access_token
7
+
8
+ def to_s
9
+ access_token
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ require 'croudia/user'
2
+
3
+ module Croudia
4
+ module API
5
+ module Account
6
+ # Retrieve the Authenticated User
7
+ #
8
+ # @params params [Hash] Additional params
9
+ # @return [Croudia::User] Current user's object
10
+ def verify_credentials(params={})
11
+ resp = get('/account/verify_credentials.json', params)
12
+ Croudia::User.new(resp)
13
+ end
14
+ alias current_user verify_credentials
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,5 @@
1
+ require 'croudia/access_token'
2
+
1
3
  module Croudia
2
4
  module API
3
5
  module OAuth
@@ -25,7 +27,8 @@ module Croudia
25
27
  params[:client_id] ||= @client_id
26
28
  params[:client_secret] ||= @client_secret
27
29
  params[:grant_type] ||= 'authorization_code'
28
- post('/oauth/token', params)
30
+ resp = post('/oauth/token', params)
31
+ Croudia::AccessToken.new(resp)
29
32
  end
30
33
  end
31
34
  end
@@ -50,6 +50,22 @@ module Croudia
50
50
  resp = get("/statuses/show/#{status_id}.json", params)
51
51
  Croudia::Status.new(resp)
52
52
  end
53
+
54
+ # Spread a status
55
+ #
56
+ # @param status_id [String, Integer, Croudia::Status] Status to spread
57
+ # @param params [Hash]
58
+ # @return [Croudia::Status] My status including spreaded status
59
+ def spread(status_id, params={})
60
+ case status_id
61
+ when String, Integer
62
+ when Croudia::Status
63
+ status_id = status_id.id_str
64
+ end
65
+
66
+ resp = post("/statuses/spread/#{status_id}.json", params)
67
+ Croudia::Status.new(resp)
68
+ end
53
69
  end
54
70
  end
55
71
  end
data/lib/croudia/base.rb CHANGED
@@ -5,10 +5,10 @@ module Croudia
5
5
  mod = Module.new do
6
6
  attrs.each do |attr|
7
7
  define_method(attr) do
8
- @attrs[attr.to_sym]
8
+ @attrs[attr.to_s] || @attrs[attr.to_sym]
9
9
  end
10
10
  define_method("#{attr}?") do
11
- !!@attrs[attr.to_sym]
11
+ !!(@attrs[attr.to_s] || @attrs[attr.to_sym])
12
12
  end
13
13
  end
14
14
  end
@@ -1,3 +1,4 @@
1
+ require 'croudia/api/account'
1
2
  require 'croudia/api/favorites'
2
3
  require 'croudia/api/oauth'
3
4
  require 'croudia/api/statuses'
@@ -9,6 +10,7 @@ require 'faraday'
9
10
 
10
11
  module Croudia
11
12
  class Client
13
+ include Croudia::API::Account
12
14
  include Croudia::API::Favorites
13
15
  include Croudia::API::OAuth
14
16
  include Croudia::API::Statuses
@@ -3,7 +3,7 @@ require 'time'
3
3
  module Croudia
4
4
  module Creatable
5
5
  def created_at
6
- @created_at ||= Time.parse(@attrs[:created_at])
6
+ @created_at ||= Time.parse(@attrs['created_at'])
7
7
  end
8
8
  end
9
9
  end
@@ -21,7 +21,6 @@ module Croudia
21
21
  MIDDLEWARE = Faraday::Builder.new do |builder|
22
22
  builder.request :url_encoded
23
23
 
24
- builder.response :mashify
25
24
  builder.response :json
26
25
  builder.response :raise_error
27
26
 
@@ -4,8 +4,8 @@ module Croudia
4
4
  class Identity < Croudia::Base
5
5
  def initialize(*)
6
6
  super
7
- raise ArgumentError, 'argument must have an :id key' unless id
8
- @attrs[:id_str] = id.to_s
7
+ raise ArgumentError, 'argument must have an "id" key' unless id
8
+ @attrs['id_str'] ||= id.to_s
9
9
  end
10
10
 
11
11
  # @param other [Croudia::Identity]
@@ -16,7 +16,7 @@ module Croudia
16
16
 
17
17
  # @return [Integer]
18
18
  def id
19
- @attrs[:id]
19
+ @attrs['id'] || @attrs[:id]
20
20
  end
21
21
  end
22
22
  end
@@ -14,13 +14,13 @@ module Croudia
14
14
  :text, :user
15
15
 
16
16
  def initialize(attrs={})
17
- user = attrs.delete(:user)
18
- pss = attrs.delete(:play_spread_status)
19
- reply_status = attrs.delete(:reply_status)
17
+ user = attrs.delete('user')
18
+ pss = attrs.delete('play_spread_status')
19
+ reply_status = attrs.delete('reply_status')
20
20
  super(attrs)
21
- @attrs[:user] = Croudia::User.new(user) if user
22
- @attrs[:play_spread_status] = Croudia::Status.new(pss) if pss
23
- @attrs[:reply_status] = Croudia::Status.new(reply_status) if reply_status
21
+ @attrs['user'] = Croudia::User.new(user) if user
22
+ @attrs['play_spread_status'] = Croudia::Status.new(pss) if pss
23
+ @attrs['reply_status'] = Croudia::Status.new(reply_status) if reply_status
24
24
  end
25
25
  end
26
- end
26
+ end
@@ -1,3 +1,3 @@
1
1
  module Croudia
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.1'
3
3
  end
@@ -0,0 +1,21 @@
1
+ require 'helper'
2
+
3
+ describe Croudia::API::Account do
4
+ before do
5
+ @client = Croudia::Client.new
6
+ end
7
+
8
+ describe '#verify_credentials' do
9
+ before do
10
+ stub_get('/account/verify_credentials.json').to_return(
11
+ body: fixture(:user),
12
+ header: { content_type: 'application/json; charset=utf-8' }
13
+ )
14
+ end
15
+
16
+ it 'requests the correct resource' do
17
+ @client.verify_credentials
18
+ expect(a_get('/account/verify_credentials.json')).to have_been_made
19
+ end
20
+ end
21
+ end
@@ -49,5 +49,15 @@ describe Croudia::API::OAuth do
49
49
  client_secret: 'cs-value',
50
50
  })).to have_been_made
51
51
  end
52
+
53
+ it 'returns the correct token' do
54
+ access_token = @client.get_access_token(code: 'code_value')
55
+ expect(access_token['access_token']).to eq 'access_token_value'
56
+ end
57
+
58
+ it 'can return a token via #access_token' do
59
+ access_token = @client.get_access_token(code: 'code_value')
60
+ expect(access_token.access_token).to eq 'access_token_value'
61
+ end
52
62
  end
53
63
  end
@@ -70,4 +70,18 @@ describe Croudia::API::Statuses do
70
70
  expect(a_get('/statuses/show/1234.json')).to have_been_made
71
71
  end
72
72
  end
73
+
74
+ describe '#spread' do
75
+ before do
76
+ stub_post('/statuses/spread/1234.json').to_return(
77
+ body: fixture(:status),
78
+ header: { content_type: 'application/json: charset=utf-8' }
79
+ )
80
+ end
81
+
82
+ it 'requests the correct resource' do
83
+ @client.spread(1234)
84
+ expect(a_post('/statuses/spread/1234.json')).to have_been_made
85
+ end
86
+ end
73
87
  end
@@ -2,7 +2,7 @@ require 'helper'
2
2
 
3
3
  describe Croudia::Base do
4
4
  before do
5
- @base = Croudia::Base.new(id: 1)
5
+ @base = Croudia::Base.new('id' => 1)
6
6
  end
7
7
 
8
8
  describe '#[]' do
@@ -21,7 +21,7 @@ describe Croudia::Base do
21
21
 
22
22
  describe '#attrs' do
23
23
  it 'returns a hash of attributes' do
24
- expect(@base.attrs).to eq({id: 1})
24
+ expect(@base.attrs).to eq({'id' => 1})
25
25
  end
26
26
  end
27
27
  end
@@ -2,27 +2,27 @@ require 'helper'
2
2
 
3
3
  describe Croudia::Identity do
4
4
  describe '#initialize' do
5
- it 'raises ArguentError if :id attr is missing' do
5
+ it 'raises ArguentError if "id" attr is missing' do
6
6
  expect { Croudia::Identity.new }.to raise_error ArgumentError
7
7
  end
8
8
  end
9
9
 
10
10
  describe '#==' do
11
11
  it 'returns true when objects IDs are the same' do
12
- one = Croudia::Identity.new(id: 1, text: 'hoge')
13
- two = Croudia::Identity.new(id: 1, text: 'fuga')
12
+ one = Croudia::Identity.new('id' => 1, 'text' => 'hoge')
13
+ two = Croudia::Identity.new('id' => 1, 'text' => 'fuga')
14
14
  expect(one == two).to be_true
15
15
  end
16
16
 
17
17
  it 'returns false when objects IDs are different' do
18
- one = Croudia::Identity.new(id: 1)
19
- two = Croudia::Identity.new(id: 2)
18
+ one = Croudia::Identity.new('id' => 1)
19
+ two = Croudia::Identity.new('id' => 2)
20
20
  expect(one == two).to be_false
21
21
  end
22
22
 
23
23
  it 'returns false when classes are different' do
24
- one = Croudia::Identity.new(id: 1)
25
- two = Croudia::Base.new(id: 1)
24
+ one = Croudia::Identity.new('id' => 1)
25
+ two = Croudia::Base.new('id' => 1)
26
26
  expect(one == two).to be_false
27
27
  end
28
28
  end
@@ -3,27 +3,27 @@ require 'helper'
3
3
  describe Croudia::Status do
4
4
  describe '#==' do
5
5
  it 'returns true when objects IDs are the same' do
6
- status = Croudia::Status.new(id: 1, text: 'hoge')
7
- other = Croudia::Status.new(id: 1, text: 'fuga')
6
+ status = Croudia::Status.new('id' => 1, 'text' => 'hoge')
7
+ other = Croudia::Status.new('id' => 1, 'text' => 'fuga')
8
8
  expect(status == other).to be_true
9
9
  end
10
10
 
11
11
  it 'returns false when objects IDs are different' do
12
- status = Croudia::Status.new(id: 1)
13
- other = Croudia::Status.new(id: 2)
12
+ status = Croudia::Status.new('id' => 1)
13
+ other = Croudia::Status.new('id' => 2)
14
14
  expect(status == other).to be_false
15
15
  end
16
16
 
17
17
  it 'returns false when classes are different' do
18
- status = Croudia::Status.new(id: 1)
19
- other = Croudia::Identity.new(id: 1)
18
+ status = Croudia::Status.new('id' => 1)
19
+ other = Croudia::Identity.new('id' => 1)
20
20
  expect(status == other).to be_false
21
21
  end
22
22
  end
23
23
 
24
24
  describe '#created_at' do
25
25
  it 'returns a Time' do
26
- status = Croudia::Status.new(id: 3, created_at: 'Mon, 08 Jul 2013 01:23:45 +0900')
26
+ status = Croudia::Status.new('id' => 3, 'created_at' => 'Mon, 08 Jul 2013 01:23:45 +0900')
27
27
  expect(status.created_at).to be_a Time
28
28
  end
29
29
  end
@@ -3,27 +3,27 @@ require 'helper'
3
3
  describe Croudia::User do
4
4
  describe '#==' do
5
5
  it 'returns true when objects IDs are the same' do
6
- user = Croudia::User.new(id: 1, name: 'hoge')
7
- other = Croudia::User.new(id: 1, name: 'fuga')
6
+ user = Croudia::User.new('id' => 1, 'name' => 'hoge')
7
+ other = Croudia::User.new('id' => 1, 'name' => 'fuga')
8
8
  expect(user == other).to be_true
9
9
  end
10
10
 
11
11
  it 'returns false when objects IDs are different' do
12
- user = Croudia::User.new(id: 1)
13
- other = Croudia::User.new(id: 2)
12
+ user = Croudia::User.new('id' => 1)
13
+ other = Croudia::User.new('id' => 2)
14
14
  expect(user == other).to be_false
15
15
  end
16
16
 
17
17
  it 'returns false when classes are different' do
18
- user = Croudia::User.new(id: 1)
19
- other = Croudia::Identity.new(id: 1)
18
+ user = Croudia::User.new('id' => 1)
19
+ other = Croudia::Identity.new('id' => 1)
20
20
  expect(user == other).to be_false
21
21
  end
22
22
  end
23
23
 
24
24
  describe '#created_at' do
25
25
  it 'returns a Time' do
26
- user = Croudia::User.new(id: 3, created_at: 'Mon, 08 2013 01:23:45 +0900')
26
+ user = Croudia::User.new('id' => 3, 'created_at' => 'Mon, 08 2013 01:23:45 +0900')
27
27
  expect(user.created_at).to be_a Time
28
28
  end
29
29
  end
@@ -0,0 +1 @@
1
+ {"id":7987,"id_str":"7987","name":"wktk","screen_name":"wktk","profile_image_url_https":"https://croudia.com/testimages/download/9423","created_at":"Sun, 29 Jul 2012 19:21:21 +0900","description":"気軽に fav ります。Twitter でも @wktk です。 \r\nhttps://twitter.com/wktk\r\nhttps://github.com/wktk","favorites_count":68,"follow_request_sent":"underdevelopment","followers_count":12,"following":"underdevelopment","friends_count":11,"location":"Japan","statuses_count":26,"protected":false,"url":"http://wktk.jp/"}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: croudia
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - wktk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-07 00:00:00.000000000 Z
11
+ date: 2013-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.9.0
41
- - !ruby/object:Gem::Dependency
42
- name: hashie
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ~>
46
- - !ruby/object:Gem::Version
47
- version: 2.0.5
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ~>
53
- - !ruby/object:Gem::Version
54
- version: 2.0.5
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rake
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +108,8 @@ files:
122
108
  - Rakefile
123
109
  - croudia.gemspec
124
110
  - lib/croudia.rb
111
+ - lib/croudia/access_token.rb
112
+ - lib/croudia/api/account.rb
125
113
  - lib/croudia/api/favorites.rb
126
114
  - lib/croudia/api/oauth.rb
127
115
  - lib/croudia/api/statuses.rb
@@ -136,6 +124,7 @@ files:
136
124
  - lib/croudia/status.rb
137
125
  - lib/croudia/user.rb
138
126
  - lib/croudia/version.rb
127
+ - spec/croudia/api/account_spec.rb
139
128
  - spec/croudia/api/favorites_spec.rb
140
129
  - spec/croudia/api/oauth_spec.rb
141
130
  - spec/croudia/api/statuses_spec.rb
@@ -149,9 +138,11 @@ files:
149
138
  - spec/fixtures/access_token.json
150
139
  - spec/fixtures/status.json
151
140
  - spec/fixtures/timeline.json
141
+ - spec/fixtures/user.json
152
142
  - spec/helper.rb
153
143
  homepage: https://github.com/wktk/croudia-gem
154
- licenses: []
144
+ licenses:
145
+ - MIT
155
146
  metadata: {}
156
147
  post_install_message:
157
148
  rdoc_options: []
@@ -174,6 +165,7 @@ signing_key:
174
165
  specification_version: 4
175
166
  summary: Croudia API
176
167
  test_files:
168
+ - spec/croudia/api/account_spec.rb
177
169
  - spec/croudia/api/favorites_spec.rb
178
170
  - spec/croudia/api/oauth_spec.rb
179
171
  - spec/croudia/api/statuses_spec.rb
@@ -187,4 +179,5 @@ test_files:
187
179
  - spec/fixtures/access_token.json
188
180
  - spec/fixtures/status.json
189
181
  - spec/fixtures/timeline.json
182
+ - spec/fixtures/user.json
190
183
  - spec/helper.rb