croudia 1.0.3 → 1.0.5

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: 33f2b6ec843db67e93166dc5c052cc1e647f183b
4
- data.tar.gz: ed05284c38fcc8c4e756ee76d25e0397b7de8b90
3
+ metadata.gz: 4c74b6ada9b04df96b347e458384ad64a14744cb
4
+ data.tar.gz: 257ca2a1b2fe3e46a51b163d6f65fad0d2692e45
5
5
  SHA512:
6
- metadata.gz: d48722bc4ac4a6586cf5e5c23420df6bdf16c7223e483fd3ae2a155dada39303cbec7cf97cbe0c05fc22e02201517135fa959d1bfd4f144c5e65d2544f713cf0
7
- data.tar.gz: 136c18d8db07087a89137faed53c5e11009e85ddf4fa331ca16235e88d6c279ae6ea6b2196b1957d3c9f6d0a82705ba4a9527c11dc2589ab0bc65eb178b90d4d
6
+ metadata.gz: b3612bdb2751c1f0ded07f687ecd695d36ca03275b9927d6f5aa3f614194b1a98b8d6e6f4eed13ec1ce7f9f25e5cf6514129061e8fa19ec6e9bf03b771950de6
7
+ data.tar.gz: 3c9f5ed43a01ad3e27641fc8e13afdca87194595598cc1d50b6d45609d961ae6838f72e7b9bc12e873255878d6482614babc25b036134de512ce80b9238a3b97
data/README.md CHANGED
@@ -4,6 +4,9 @@
4
4
 
5
5
  A Ruby Wapper for the [Croudia](https://croudia.com) API
6
6
 
7
+ This software is not affiliated with [Croudia Inc](http://croudia.co.jp/).
8
+ Croudia is a registered trademark of Croudia Inc. in Japan.
9
+
7
10
  ## Installation
8
11
 
9
12
  Add this line to your application's Gemfile:
@@ -2,7 +2,15 @@ require 'croudia/base'
2
2
 
3
3
  module Croudia
4
4
  class AccessToken < Croudia::Base
5
- attr_reader :access_token, :refresh_token, :expires_in, :token_type
5
+ KEYS = [
6
+ :access_token,
7
+ :expires_in,
8
+ :refresh_token,
9
+ :token_type,
10
+ ]
11
+
12
+ attr_reader(*KEYS)
13
+
6
14
  alias :token :access_token
7
15
 
8
16
  def to_s
@@ -9,14 +9,7 @@ module Croudia
9
9
  # @param params [Hash]
10
10
  # @return [Croudia::Status] Favorited status
11
11
  def favorite(status_id, params={})
12
- case status_id
13
- when String, Integer
14
- when Croudia::Status
15
- status_id = status_id.id_str
16
- else
17
- raise ArgumentError, 'status_id is invalid'
18
- end
19
-
12
+ status_id = get_id(status_id)
20
13
  resp = post("/favorites/create/#{status_id}.json", params)
21
14
  Croudia::Status.new(resp)
22
15
  end
@@ -27,14 +20,7 @@ module Croudia
27
20
  # @param params [Hash]
28
21
  # @return [Croudia::Status] Unfavorited status
29
22
  def unfavorite(status_id, params={})
30
- case status_id
31
- when String, Integer
32
- when Croudia::Status
33
- status_id = status_id.id_str
34
- else
35
- raise ArgumentError, 'status_id is invalid'
36
- end
37
-
23
+ status_id = get_id(status_id)
38
24
  resp = delete("/favorites/destroy/#{status_id}.json", params)
39
25
  Croudia::Status.new(resp)
40
26
  end
@@ -9,19 +9,7 @@ module Croudia
9
9
  # @param params [Hash] Optional params
10
10
  # @return [Croudia::User] Followed user
11
11
  def follow(user, params={})
12
- case user
13
- when Hash
14
- params.merge!(user)
15
- when String
16
- params[:screen_name] = user
17
- when Integer
18
- params[:user_id] = user
19
- when Croudia::User
20
- params[:user_id] = user.id_str
21
- else
22
- raise ArgumentError, 'user must be a String, Integer or User'
23
- end
24
-
12
+ merge_user!(params, user)
25
13
  resp = post('/friendships/create.json', params)
26
14
  Croudia::User.new(resp)
27
15
  end
@@ -32,19 +20,7 @@ module Croudia
32
20
  # @param params
33
21
  # @return [Croudia::User] Unfollowed user
34
22
  def unfollow(user, params={})
35
- case user
36
- when Hash
37
- params.merge!(user)
38
- when String
39
- params[:screen_name] = user
40
- when Integer
41
- params[:user_id] = user
42
- when Croudia::user
43
- params[:user_id] = user.id_str
44
- else
45
- raise ArgumentError, 'user must be a String, Integer or User'
46
- end
47
-
23
+ merge_user!(params, user)
48
24
  resp = post('/friendships/destroy.json', params)
49
25
  Croudia::User.new(resp)
50
26
  end
@@ -0,0 +1,58 @@
1
+ require 'croudia/secret_mail'
2
+
3
+ module Croudia
4
+ module API
5
+ module SecretMails
6
+ # Get incoming secret mails
7
+ #
8
+ # @param params [Hash]
9
+ # @return [Array<Croudia::SecretMails>]
10
+ def secret_mails(params={})
11
+ resp = get('/secret_mails.json', params)
12
+ objects(Croudia::SecretMail, resp)
13
+ end
14
+
15
+ # Get outgoing secret mails
16
+ #
17
+ # @param params [Hash]
18
+ # @return [Array<Croudia::SecretMail>]
19
+ def secret_mails_sent(params={})
20
+ resp = get('/secret_mails/sent.json', params)
21
+ objects(Croudia::SecretMail, resp)
22
+ end
23
+
24
+ # Send a new secret mail
25
+ #
26
+ # @param text [String] Message body
27
+ # @param to_user [String, Integer, Croudia::User] Recipient user
28
+ # @param params [Hash]
29
+ def send_secret_mail(text, to_user={}, params={})
30
+ merge_text!(params, text, :text)
31
+ merge_user!(params, to_user)
32
+
33
+ resp = post('/secret_mails/new.json', params)
34
+ Croudia::SecretMail.new(resp)
35
+ end
36
+
37
+ # Destroy a secret mail
38
+ #
39
+ # @param id [Integer, String, Croudia::SecretMail]
40
+ # @param params [Hash]
41
+ # @return [Croudia::SecretMail]
42
+ def destroy_secret_mail(id, params={})
43
+ resp = post("/secret_mails/destroy/#{get_id(id)}.json", params)
44
+ Croudia::SecretMail.new(resp)
45
+ end
46
+
47
+ # Get a secret mail
48
+ #
49
+ # @param id [Integer, String, Croudia::SecretMail]
50
+ # @param params [Hash]
51
+ # @return [Croudia::SecretMail]
52
+ def show_secret_mail(id, params={})
53
+ resp = get("/secret_mails/show/#{get_id(id)}.json", params)
54
+ Croudia::SecretMail.new(resp)
55
+ end
56
+ end
57
+ end
58
+ end
@@ -8,13 +8,8 @@ module Croudia
8
8
  # @param status [String] Status text
9
9
  # @param params [Hash] Additional params
10
10
  # @return status [Croudia::Status] Posted status
11
- def update(status, params={})
12
- case status
13
- when String
14
- params[:status] ||= status
15
- when Hash
16
- params = status.merge(params)
17
- end
11
+ def update(text, params={})
12
+ merge_text!(params, text)
18
13
 
19
14
  resp = post('/statuses/update.json', params)
20
15
  Croudia::Status.new(resp)
@@ -26,13 +21,9 @@ module Croudia
26
21
  # @param params [Hash]
27
22
  # @return [Croudia::Status] Deleted status
28
23
  def destroy_status(status_id, params={})
29
- case status_id
30
- when String, Integer
31
- when Croudia::Status
32
- status_id = status_id.id_str
33
- end
34
-
35
- post("/statuses/destroy/#{status_id}.json", params)
24
+ status_id = get_id(status_id)
25
+ resp = post("/statuses/destroy/#{status_id}.json", params)
26
+ Croudia::Status.new(resp)
36
27
  end
37
28
 
38
29
  # Retrieve a status
@@ -41,12 +32,7 @@ module Croudia
41
32
  # @param params [Hash]
42
33
  # @return [Croudia::Status]
43
34
  def status(status_id, params={})
44
- case status_id
45
- when String, Integer
46
- when Croudia::Status
47
- status_id = status_id.id_str
48
- end
49
-
35
+ status_id = get_id(status_id)
50
36
  resp = get("/statuses/show/#{status_id}.json", params)
51
37
  Croudia::Status.new(resp)
52
38
  end
@@ -57,12 +43,7 @@ module Croudia
57
43
  # @param params [Hash]
58
44
  # @return [Croudia::Status] My status including spreaded status
59
45
  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
-
46
+ status_id = get_id(status_id)
66
47
  resp = post("/statuses/spread/#{status_id}.json", params)
67
48
  Croudia::Status.new(resp)
68
49
  end
@@ -9,7 +9,7 @@ module Croudia
9
9
  # @return [Array<Croudia::Status>]
10
10
  def public_timeline(params={})
11
11
  resp = get('/statuses/public_timeline.json', params)
12
- objectify_statuses(resp)
12
+ objects(Croudia::Status, resp)
13
13
  end
14
14
 
15
15
  # Home Timeline
@@ -18,7 +18,7 @@ module Croudia
18
18
  # @return [Array<Croudia::Status>]
19
19
  def home_timeline(params={})
20
20
  resp = get('/statuses/home_timeline.json', params)
21
- objectify_statuses(resp)
21
+ objects(Croudia::Status, resp)
22
22
  end
23
23
 
24
24
  # User Timeline
@@ -27,31 +27,16 @@ module Croudia
27
27
  # @param params [Hash]
28
28
  # @return [Array<Croudia::Status>
29
29
  def user_timeline(user, params={})
30
- case user
31
- when String
32
- params[:screen_name] ||= user
33
- when Integer
34
- params[:user_id] ||= user
35
- when Croudia::User
36
- params[:user_id] ||= user.id_str
37
- when Hash
38
- params = user.merge(params)
39
- end
40
-
30
+ merge_user!(params, user)
41
31
  resp = get('/statuses/user_timeline.json', params)
42
- objectify_statuses(resp)
32
+ objects(Croudia::Status, resp)
43
33
  end
44
34
 
45
35
  def mentions(params={})
46
36
  resp = get('/statuses/mentions.json', params)
47
- objectify_statuses(resp)
37
+ objects(Croudia::Status, resp)
48
38
  end
49
39
  alias mentions_timeline mentions
50
-
51
- private
52
- def objectify_statuses(statuses)
53
- statuses.map { |status| Croudia::Status.new(status) }
54
- end
55
40
  end
56
41
  end
57
42
  end
@@ -9,19 +9,7 @@ module Croudia
9
9
  # @param params [Hash] Optional params
10
10
  # @return [Croudia::User]
11
11
  def user(user, params={})
12
- case user
13
- when Hash
14
- params.merge!(user)
15
- when String
16
- params[:screen_name] = user
17
- when Integer
18
- params[:user_id] = user
19
- when Croudia::User
20
- params[:user_id] = user.id_str
21
- else
22
- raise ArgumentError, 'user must be a String, Integer or User'
23
- end
24
-
12
+ merge_user!(params, user)
25
13
  resp = get('/users/show.json', params)
26
14
  Croudia::User.new(resp)
27
15
  end
@@ -0,0 +1,51 @@
1
+ module Croudia
2
+ module API
3
+ module Utils
4
+
5
+ private
6
+
7
+ def get_id(id)
8
+ case id
9
+ when String, Integer
10
+ id
11
+ when Croudia::Identity
12
+ id.id_str
13
+ else
14
+ raise ArgumentError, 'id is invalid'
15
+ end
16
+ end
17
+
18
+ def merge_user!(params, user)
19
+ case user
20
+ when Hash
21
+ params.merge!(user)
22
+ when String
23
+ params[:screen_name] = user
24
+ when Integer
25
+ params[:user_id] = user
26
+ when Croudia::User
27
+ params[:user_id] = user.id_str
28
+ else
29
+ raise ArgumentError, 'user must be a String, Integer or User'
30
+ end
31
+
32
+ params
33
+ end
34
+
35
+ def merge_text!(params, text, key=:status)
36
+ case text
37
+ when Hash
38
+ params.merge!(text)
39
+ else
40
+ params[key] ||= text.to_s
41
+ end
42
+
43
+ params
44
+ end
45
+
46
+ def objects(klass, array)
47
+ array.map { |hash| klass.new(hash) }
48
+ end
49
+ end
50
+ end
51
+ end
data/lib/croudia/base.rb CHANGED
@@ -2,18 +2,11 @@ module Croudia
2
2
  class Base
3
3
  class << self
4
4
  def attr_reader(*attrs)
5
- mod = Module.new do
6
- attrs.each do |attr|
7
- define_method(attr) do
8
- @attrs[attr.to_s] || @attrs[attr.to_sym]
9
- end
10
- define_method("#{attr}?") do
11
- !!(@attrs[attr.to_s] || @attrs[attr.to_sym])
12
- end
5
+ attrs.each do |attr|
6
+ define_method(attr) do
7
+ @attrs[attr.to_s] || @attrs[attr.to_sym]
13
8
  end
14
9
  end
15
- const_set(:Attributes, mod)
16
- include mod
17
10
  end
18
11
  end
19
12
 
@@ -2,9 +2,11 @@ require 'croudia/api/account'
2
2
  require 'croudia/api/favorites'
3
3
  require 'croudia/api/friendships'
4
4
  require 'croudia/api/oauth'
5
+ require 'croudia/api/secret_mails'
5
6
  require 'croudia/api/statuses'
6
7
  require 'croudia/api/timelines'
7
8
  require 'croudia/api/users'
9
+ require 'croudia/api/utils'
8
10
  require 'croudia/configurable'
9
11
  require 'croudia/ext/openssl'
10
12
  require 'croudia/version'
@@ -16,9 +18,11 @@ module Croudia
16
18
  include Croudia::API::Favorites
17
19
  include Croudia::API::Friendships
18
20
  include Croudia::API::OAuth
21
+ include Croudia::API::SecretMails
19
22
  include Croudia::API::Statuses
20
23
  include Croudia::API::Timelines
21
24
  include Croudia::API::Users
25
+ include Croudia::API::Utils
22
26
  include Croudia::Configurable
23
27
 
24
28
  # Initialize a new Client object
@@ -0,0 +1,29 @@
1
+ require 'croudia/identity'
2
+ require 'croudia/creatable'
3
+
4
+ module Croudia
5
+ class SecretMail < Croudia::Identity
6
+ include Croudia::Creatable
7
+
8
+ KEYS = [
9
+ :id_str,
10
+ :recipient,
11
+ :recipient_id,
12
+ :recipient_screen_name,
13
+ :sender,
14
+ :sender_id,
15
+ :sender_screen_name,
16
+ :text,
17
+ ]
18
+
19
+ attr_reader(*KEYS)
20
+
21
+ def initialize(attrs)
22
+ recipient = attrs.delete('recipient')
23
+ sender = attrs.delete('sender')
24
+ super(attrs)
25
+ @attrs['recipient'] = Croudia::User.new(recipient) if recipient
26
+ @attrs['sender'] = Croudia::User.new(sender) if sender
27
+ end
28
+ end
29
+ end
@@ -6,21 +6,32 @@ module Croudia
6
6
  class Status < Croudia::Identity
7
7
  include Croudia::Creatable
8
8
 
9
- attr_reader :favorited, :favorited_count,
10
- :in_reply_to_screen_name, :in_reply_to_status_id_str,
11
- :in_reply_to_status_id, :in_reply_to_user_id_str,
12
- :in_reply_to_user_id, :spread, :spread_count, :spread_status,
13
- :play_spread, :play_spread_status, :reply_status, :source,
14
- :text, :user
9
+ KEYS = [
10
+ :id_str,
11
+ :favorited,
12
+ :favorited_count,
13
+ :in_reply_to_screen_name,
14
+ :in_reply_to_status_id_str,
15
+ :in_reply_to_status_id,
16
+ :in_reply_to_user_id_str,
17
+ :in_reply_to_user_id,
18
+ :spread,
19
+ :spread_count,
20
+ :spread_status,
21
+ :reply_status,
22
+ :source,
23
+ :text,
24
+ :user,
25
+ ]
26
+
27
+ attr_reader(*KEYS)
15
28
 
16
29
  def initialize(attrs={})
17
30
  user = attrs.delete('user')
18
- pss = attrs.delete('play_spread_status')
19
31
  reply_status = attrs.delete('reply_status')
20
32
  spread_status = attrs.delete('spread_status')
21
33
  super(attrs)
22
34
  @attrs['user'] = Croudia::User.new(user) if user
23
- @attrs['play_spread_status'] = Croudia::Status.new(pss) if pss
24
35
  @attrs['reply_status'] = Croudia::Status.new(reply_status) if reply_status
25
36
  @attrs['spread_status'] = Croudia::Status.new(spread_status) if spread_status
26
37
  end
data/lib/croudia/user.rb CHANGED
@@ -5,8 +5,21 @@ module Croudia
5
5
  class User < Croudia::Identity
6
6
  include Croudia::Creatable
7
7
 
8
- attr_reader :description, :favorites_count, :follow_request_sent,
9
- :followers_count, :fruends_count, :location, :name, :profile_image_url_https,
10
- :screen_name, :statuses_count, :url
8
+ KEYS = [
9
+ :id_str,
10
+ :description,
11
+ :favorites_count,
12
+ :follow_request_sent,
13
+ :followers_count,
14
+ :friends_count,
15
+ :location,
16
+ :name,
17
+ :profile_image_url_https,
18
+ :screen_name,
19
+ :statuses_count,
20
+ :url,
21
+ ]
22
+
23
+ attr_reader(*KEYS)
11
24
  end
12
25
  end
@@ -1,3 +1,3 @@
1
1
  module Croudia
2
- VERSION = '1.0.3'
2
+ VERSION = '1.0.5'
3
3
  end
@@ -17,5 +17,9 @@ describe Croudia::API::Account do
17
17
  @client.verify_credentials
18
18
  expect(a_get('/account/verify_credentials.json')).to have_been_made
19
19
  end
20
+
21
+ it 'returns a User object' do
22
+ expect(@client.verify_credentials).to be_a Croudia::User
23
+ end
20
24
  end
21
25
  end
@@ -17,6 +17,10 @@ describe Croudia::API::Favorites do
17
17
  @client.favorite(1234)
18
18
  expect(a_post('/favorites/create/1234.json')).to have_been_made
19
19
  end
20
+
21
+ it 'returns a Status object' do
22
+ expect(@client.favorite(1234)).to be_a Croudia::Status
23
+ end
20
24
  end
21
25
 
22
26
  describe '#unfavorite' do
@@ -31,5 +35,9 @@ describe Croudia::API::Favorites do
31
35
  @client.unfavorite(1234)
32
36
  expect(a_delete('/favorites/destroy/1234.json')).to have_been_made
33
37
  end
38
+
39
+ it 'returns a Status object' do
40
+ expect(@client.unfavorite(1234)).to be_a Croudia::Status
41
+ end
34
42
  end
35
43
  end
@@ -55,6 +55,10 @@ describe Croudia::API::OAuth do
55
55
  expect(access_token['access_token']).to eq 'access_token_value'
56
56
  end
57
57
 
58
+ it 'returns AccessToken object' do
59
+ expect(@client.get_access_token('code_value')).to be_a Croudia::AccessToken
60
+ end
61
+
58
62
  it 'can return a token via #access_token' do
59
63
  access_token = @client.get_access_token(code: 'code_value')
60
64
  expect(access_token.access_token).to eq 'access_token_value'
@@ -0,0 +1,154 @@
1
+ require 'helper'
2
+
3
+ describe Croudia::API::SecretMails do
4
+ before do
5
+ @client = Croudia::Client.new
6
+ end
7
+
8
+ describe '#secret_mails' do
9
+ before do
10
+ stub_get('/secret_mails.json').to_return(
11
+ body: fixture(:secret_mails),
12
+ header: { content_type: 'application/json; charset=utf-8' }
13
+ )
14
+ end
15
+
16
+ it 'requests the correct resource' do
17
+ @client.secret_mails
18
+ expect(a_get('/secret_mails.json')).to have_been_made
19
+ end
20
+
21
+ it 'returns Array of Croudia::SecretMail' do
22
+ subject = @client.secret_mails
23
+ expect(subject).to be_an Array
24
+ subject.each { |s| expect(s).to be_a Croudia::SecretMail }
25
+ end
26
+ end
27
+
28
+ describe '#secret_mails_sent' do
29
+ before do
30
+ stub_get('/secret_mails/sent.json').to_return(
31
+ body: fixture(:secret_mails),
32
+ header: { content_type: 'application/json; charset=utf-8' }
33
+ )
34
+ end
35
+
36
+ it 'requests the correct resource' do
37
+ @client.secret_mails_sent
38
+ expect(a_get('/secret_mails/sent.json')).to have_been_made
39
+ end
40
+
41
+ it 'returns Array of Croudia::SecretMail' do
42
+ subject = @client.secret_mails_sent
43
+ expect(subject).to be_an Array
44
+ end
45
+ end
46
+
47
+ describe '#send_secret_mail' do
48
+ before do
49
+ stub_post('/secret_mails/new.json').to_return(
50
+ body: fixture(:secret_mail),
51
+ headers: { content_type: 'application/json; charset=utf-8' }
52
+ )
53
+ end
54
+
55
+ context 'when passing text as the first argument' do
56
+ context 'when passing user as String (screen_name)' do
57
+ it 'requests the correct resource' do
58
+ @client.send_secret_mail('Hello', 'wktk')
59
+ expect(a_post('/secret_mails/new.json').with(
60
+ body: {
61
+ text: 'Hello',
62
+ screen_name: 'wktk',
63
+ }
64
+ )).to have_been_made
65
+ end
66
+ end
67
+
68
+ context 'when passing user as Integer (user_id)' do
69
+ it 'requests the correct resource' do
70
+ @client.send_secret_mail('Hello?', 1234)
71
+ expect(a_post('/secret_mails/new.json').with(
72
+ body: {
73
+ text: 'Hello?',
74
+ user_id: '1234',
75
+ }
76
+ )).to have_been_made
77
+ end
78
+ end
79
+
80
+ context 'when passing user as Croudia::User' do
81
+ it 'requests the correct resource' do
82
+ user = Croudia::User.new('id' => 1234)
83
+ @client.send_secret_mail('Hello!', user)
84
+ expect(a_post('/secret_mails/new.json').with(
85
+ body: {
86
+ text: 'Hello!',
87
+ user_id: '1234',
88
+ }
89
+ )).to have_been_made
90
+ end
91
+ end
92
+ end
93
+
94
+ context 'when passing all params as Hash' do
95
+ it 'requests the correct resource' do
96
+ @client.send_secret_mail(text: 'Hi', screen_name: 'wktk')
97
+ expect(a_post('/secret_mails/new.json').with(
98
+ body: {
99
+ text: 'Hi',
100
+ screen_name: 'wktk',
101
+ }
102
+ )).to have_been_made
103
+ end
104
+ end
105
+
106
+ it 'returns Croudia::SecretMail' do
107
+ subject = @client.send_secret_mail('hi', 1234)
108
+ expect(subject).to be_a Croudia::SecretMail
109
+ end
110
+ end
111
+
112
+ describe '#destroy_secret_mail' do
113
+ before do
114
+ stub_post('/secret_mails/destroy/1234.json').to_return(
115
+ body: fixture(:secret_mail),
116
+ headers: { content_type: 'application/json; charset-utf-8' }
117
+ )
118
+ end
119
+
120
+ it 'requests the correct resource' do
121
+ @client.destroy_secret_mail(1234)
122
+ expect(a_post('/secret_mails/destroy/1234.json')).to have_been_made
123
+ end
124
+
125
+ it 'can destroy Croudia::SecretMail' do
126
+ @client.destroy_secret_mail(Croudia::SecretMail.new('id' => 1234))
127
+ expect(a_post('/secret_mails/destroy/1234.json')).to have_been_made
128
+ end
129
+
130
+ it 'returns Croudia::SecretMail' do
131
+ subject = @client.destroy_secret_mail(1234)
132
+ expect(subject).to be_a Croudia::SecretMail
133
+ end
134
+ end
135
+
136
+ describe '#show_secret_mail' do
137
+ before do
138
+ stub_get('/secret_mails/show/1234.json').to_return(
139
+ body: fixture(:secret_mail),
140
+ headers: { content_type: 'appplication/json; charset=utf-8' }
141
+ )
142
+ end
143
+
144
+ it 'requests the correct resource' do
145
+ @client.show_secret_mail(1234)
146
+ expect(a_get('/secret_mails/show/1234.json')).to have_been_made
147
+ end
148
+
149
+ it 'returns Croudia::SecretMail' do
150
+ subject = @client.show_secret_mail(1234)
151
+ expect(subject).to be_a Croudia::SecretMail
152
+ end
153
+ end
154
+ end
@@ -41,6 +41,12 @@ describe Croudia::API::Statuses do
41
41
  )).to have_been_made
42
42
  end
43
43
  end
44
+
45
+ it 'returns a Status object' do
46
+ expect(
47
+ @client.update('Hello', in_reply_to_status_id: 1234)
48
+ ).to be_a Croudia::Status
49
+ end
44
50
  end
45
51
 
46
52
  describe '#destroy_status' do
@@ -55,6 +61,10 @@ describe Croudia::API::Statuses do
55
61
  @client.destroy_status(1234)
56
62
  expect(a_post('/statuses/destroy/1234.json')).to have_been_made
57
63
  end
64
+
65
+ it 'returns a Status object' do
66
+ expect(@client.destroy_status(1234)).to be_a Croudia::Status
67
+ end
58
68
  end
59
69
 
60
70
  describe '#status' do
@@ -69,6 +79,10 @@ describe Croudia::API::Statuses do
69
79
  @client.status(1234)
70
80
  expect(a_get('/statuses/show/1234.json')).to have_been_made
71
81
  end
82
+
83
+ it 'returns a Status object' do
84
+ expect(@client.status(1234)).to be_a Croudia::Status
85
+ end
72
86
  end
73
87
 
74
88
  describe '#spread' do
@@ -83,5 +97,9 @@ describe Croudia::API::Statuses do
83
97
  @client.spread(1234)
84
98
  expect(a_post('/statuses/spread/1234.json')).to have_been_made
85
99
  end
100
+
101
+ it 'returns a Status object' do
102
+ expect(@client.spread(1234)).to be_a Croudia::Status
103
+ end
86
104
  end
87
105
  end
@@ -17,6 +17,12 @@ describe Croudia::API::Timelines do
17
17
  @client.public_timeline
18
18
  expect(a_get('/statuses/public_timeline.json')).to have_been_made
19
19
  end
20
+
21
+ it 'returns array of Status object' do
22
+ tl = @client.public_timeline
23
+ expect(tl).to be_a Array
24
+ tl.each { |status| expect(status).to be_a Croudia::Status }
25
+ end
20
26
  end
21
27
 
22
28
  describe '#home_timeline' do
@@ -31,6 +37,12 @@ describe Croudia::API::Timelines do
31
37
  @client.home_timeline
32
38
  expect(a_get('/statuses/home_timeline.json')).to have_been_made
33
39
  end
40
+
41
+ it 'returns array of Status object' do
42
+ tl = @client.home_timeline
43
+ expect(tl).to be_a Array
44
+ tl.each { |status| expect(status).to be_a Croudia::Status }
45
+ end
34
46
  end
35
47
 
36
48
  describe '#user_timeline' do
@@ -75,6 +87,19 @@ describe Croudia::API::Timelines do
75
87
  )).to have_been_made
76
88
  end
77
89
  end
90
+
91
+ it 'returns array of Status object' do
92
+ stub_get('/statuses/user_timeline.json').with(
93
+ query: { screen_name: 'wktk' }
94
+ ).to_return(
95
+ body: fixture(:timeline),
96
+ headers: { content_type: 'application/json; charset=utf-8' }
97
+ )
98
+
99
+ tl = @client.user_timeline('wktk')
100
+ expect(tl).to be_a Array
101
+ tl.each { |status| expect(status).to be_a Croudia::Status }
102
+ end
78
103
  end
79
104
 
80
105
  describe '#mentions' do
@@ -89,5 +114,11 @@ describe Croudia::API::Timelines do
89
114
  @client.mentions
90
115
  expect(a_get('/statuses/mentions.json')).to have_been_made
91
116
  end
117
+
118
+ it 'returns array of Status object' do
119
+ tl = @client.mentions
120
+ expect(tl).to be_a Array
121
+ tl.each { |status| expect(status).to be_a Croudia::Status }
122
+ end
92
123
  end
93
124
  end
@@ -0,0 +1,30 @@
1
+ require 'helper'
2
+
3
+ describe Croudia::SecretMail do
4
+ describe '#==' do
5
+ it 'returns true when objects IDs are the same' do
6
+ user = Croudia::SecretMail.new('id' => 1, 'text' => 'hoge')
7
+ other = Croudia::SecretMail.new('id' => 1, 'text' => 'fuga')
8
+ expect(user == other).to be_true
9
+ end
10
+
11
+ it 'returns false when objects IDs are different' do
12
+ user = Croudia::SecretMail.new('id' => 1, 'text' => 'hoge')
13
+ other = Croudia::SecretMail.new('id' => 2, 'text' => 'hoge')
14
+ expect(user == other).to be_false
15
+ end
16
+
17
+ it 'returns false when classes are different' do
18
+ user = Croudia::SecretMail.new('id' => 1)
19
+ other = Croudia::Identity.new('id' => 1)
20
+ expect(user == other).to be_false
21
+ end
22
+ end
23
+
24
+ describe '#created_at' do
25
+ it 'returns a Time' do
26
+ user = Croudia::SecretMail.new('id' => 3, 'created_at' => 'Mon, 08 2013 01:23:45 +0900')
27
+ expect(user.created_at).to be_a Time
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,20 @@
1
+ {
2
+ "id": 1,
3
+ "id_str": "1",
4
+ "created_at": "Sat 20, Jul 2013 19:00:00 +0900",
5
+ "recipient": {
6
+ "id": 1234,
7
+ "id_str": "1234",
8
+ "screen_name": "wktk"
9
+ },
10
+ "recipient_id": 1234,
11
+ "recipient_screen_name": "wktk",
12
+ "sender": {
13
+ "id": 4321,
14
+ "id_str": "4321",
15
+ "screen_name": "croudia"
16
+ },
17
+ "sender_id": 4321,
18
+ "sender_screen_name": "croudia",
19
+ "text": "Hello"
20
+ }
@@ -0,0 +1,20 @@
1
+ [{
2
+ "id": 1,
3
+ "id_str": "1",
4
+ "created_at": "Sat 20, Jul 2013 19:00:00 +0900",
5
+ "recipient": {
6
+ "id": 1234,
7
+ "id_str": "1234",
8
+ "screen_name": "wktk"
9
+ },
10
+ "recipient_id": 1234,
11
+ "recipient_screen_name": "wktk",
12
+ "sender": {
13
+ "id": 4321,
14
+ "id_str": "4321",
15
+ "screen_name": "croudia"
16
+ },
17
+ "sender_id": 4321,
18
+ "sender_screen_name": "croudia",
19
+ "text": "Hello"
20
+ }]
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.3
4
+ version: 1.0.5
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-13 00:00:00.000000000 Z
11
+ date: 2013-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -114,9 +114,11 @@ files:
114
114
  - lib/croudia/api/favorites.rb
115
115
  - lib/croudia/api/friendships.rb
116
116
  - lib/croudia/api/oauth.rb
117
+ - lib/croudia/api/secret_mails.rb
117
118
  - lib/croudia/api/statuses.rb
118
119
  - lib/croudia/api/timelines.rb
119
120
  - lib/croudia/api/users.rb
121
+ - lib/croudia/api/utils.rb
120
122
  - lib/croudia/base.rb
121
123
  - lib/croudia/client.rb
122
124
  - lib/croudia/configurable.rb
@@ -124,6 +126,7 @@ files:
124
126
  - lib/croudia/default.rb
125
127
  - lib/croudia/ext/openssl.rb
126
128
  - lib/croudia/identity.rb
129
+ - lib/croudia/secret_mail.rb
127
130
  - lib/croudia/status.rb
128
131
  - lib/croudia/user.rb
129
132
  - lib/croudia/version.rb
@@ -131,16 +134,20 @@ files:
131
134
  - spec/croudia/api/favorites_spec.rb
132
135
  - spec/croudia/api/friendships_spec.rb
133
136
  - spec/croudia/api/oauth_spec.rb
137
+ - spec/croudia/api/secret_mails_spec.rb
134
138
  - spec/croudia/api/statuses_spec.rb
135
139
  - spec/croudia/api/timelines_spec.rb
136
140
  - spec/croudia/api/user_spec.rb
137
141
  - spec/croudia/base_spec.rb
138
142
  - spec/croudia/client_spec.rb
139
143
  - spec/croudia/identity_spec.rb
144
+ - spec/croudia/secret_mail_spec.rb
140
145
  - spec/croudia/status_spec.rb
141
146
  - spec/croudia/user_spec.rb
142
147
  - spec/croudia_spec.rb
143
148
  - spec/fixtures/access_token.json
149
+ - spec/fixtures/secret_mail.json
150
+ - spec/fixtures/secret_mails.json
144
151
  - spec/fixtures/status.json
145
152
  - spec/fixtures/timeline.json
146
153
  - spec/fixtures/user.json
@@ -174,16 +181,20 @@ test_files:
174
181
  - spec/croudia/api/favorites_spec.rb
175
182
  - spec/croudia/api/friendships_spec.rb
176
183
  - spec/croudia/api/oauth_spec.rb
184
+ - spec/croudia/api/secret_mails_spec.rb
177
185
  - spec/croudia/api/statuses_spec.rb
178
186
  - spec/croudia/api/timelines_spec.rb
179
187
  - spec/croudia/api/user_spec.rb
180
188
  - spec/croudia/base_spec.rb
181
189
  - spec/croudia/client_spec.rb
182
190
  - spec/croudia/identity_spec.rb
191
+ - spec/croudia/secret_mail_spec.rb
183
192
  - spec/croudia/status_spec.rb
184
193
  - spec/croudia/user_spec.rb
185
194
  - spec/croudia_spec.rb
186
195
  - spec/fixtures/access_token.json
196
+ - spec/fixtures/secret_mail.json
197
+ - spec/fixtures/secret_mails.json
187
198
  - spec/fixtures/status.json
188
199
  - spec/fixtures/timeline.json
189
200
  - spec/fixtures/user.json