croudia 1.0.3 → 1.0.5

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: 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