croudia 1.0.0 → 1.0.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.
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