croudia 1.0.13 → 1.0.14

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: b0347fb33dca00cf9f17791001f8ce93c8fcca18
4
- data.tar.gz: 73a1c169329a27b582821c7b8c4ca4e006218004
3
+ metadata.gz: cf93c107da3e67e76893d1ad119b53d1b6e111b3
4
+ data.tar.gz: 423b2e63ad81479d8d4c1666a99dd084f007a340
5
5
  SHA512:
6
- metadata.gz: e5167ca9e3ecaa4f14fc17070e2ac568a832b1780db500926568bcec1225f737ec1595bfce16282d24d0f594b32139b5d5b6f1631312cbd56cd32e26ae92a710
7
- data.tar.gz: 1d57c97c48f7a984f07fd43d324d887cb435ba2a7ce3c8af0348d7cc2fa530b7e43d9c64dd7d1d2249b9ccfbf2bb348e1f8e0dd5e857a39b0fc9edce8e2b00c9
6
+ metadata.gz: dc0deaa61d80e277e8346209188b63e75cccbc27d5fadacea9ee1abf8d037b3f897560ec64e28bb278f079fa997b569c4e6dbd8d0f99efae32cb8eb92646877e
7
+ data.tar.gz: eb4fd9578e55b0c5468dd92776ffb8f871705956457d5acfbc4f198941f2715b51a72471ef28e9615aff210dbe128158ace2838f849bfb15c4eb75510d62a77a
@@ -0,0 +1,30 @@
1
+ require 'croudia/search_results'
2
+ require 'croudia/user'
3
+
4
+ module Croudia
5
+ module API
6
+ module Search
7
+ # Search for statuses
8
+ #
9
+ # @param q [String] Search query
10
+ # @param params [Hash] Optional params
11
+ # @return [Croudia::SearchResults]
12
+ def search(q, params={})
13
+ merge_query!(params, q)
14
+ resp = get('/search/voices.json', params)
15
+ Croudia::SearchResults.new(resp)
16
+ end
17
+
18
+ # Search for users
19
+ #
20
+ # @param q [String] Search query
21
+ # @param params [Hash] Optional params
22
+ # @return [Array<Croudia::User>]
23
+ def search_user(q, params={})
24
+ merge_query!(params, q)
25
+ resp = get('/users/search.json', params)
26
+ objects(Croudia::User, resp)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -27,6 +27,18 @@ module Croudia
27
27
  params
28
28
  end
29
29
 
30
+ def merge_query!(params, query)
31
+ case query
32
+ when Hash
33
+ params.merge!(query)
34
+ when String
35
+ params[:q] = query
36
+ else
37
+ raise ArgumentError, 'Search query must be a String'
38
+ end
39
+ params
40
+ end
41
+
30
42
  def merge_user!(params, user, sn_key=:screen_name, user_key=:user_id)
31
43
  case user
32
44
  when Hash
@@ -2,6 +2,7 @@ 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/search'
5
6
  require 'croudia/api/secret_mails'
6
7
  require 'croudia/api/statuses'
7
8
  require 'croudia/api/timelines'
@@ -18,6 +19,7 @@ module Croudia
18
19
  include Croudia::API::Favorites
19
20
  include Croudia::API::Friendships
20
21
  include Croudia::API::OAuth
22
+ include Croudia::API::Search
21
23
  include Croudia::API::SecretMails
22
24
  include Croudia::API::Statuses
23
25
  include Croudia::API::Timelines
@@ -0,0 +1,19 @@
1
+ require 'croudia/base'
2
+
3
+ module Croudia
4
+ class SearchMetadata < Croudia::Base
5
+ KEYS = [
6
+ :completed_in,
7
+ :count,
8
+ :max_id,
9
+ :max_id_str,
10
+ :next_results,
11
+ :query,
12
+ :refresh_url,
13
+ :since_id,
14
+ :since_ids_str,
15
+ ]
16
+
17
+ attr_reader(*KEYS)
18
+ end
19
+ end
@@ -0,0 +1,22 @@
1
+ require 'croudia/base'
2
+ require 'croudia/search_metadata'
3
+ require 'croudia/status'
4
+
5
+ module Croudia
6
+ class SearchResults < Croudia::Base
7
+ KEYS = [
8
+ :search_metadata,
9
+ :statuses,
10
+ ]
11
+
12
+ attr_reader(*KEYS)
13
+
14
+ def initialize(attrs)
15
+ statuses = attrs.delete('statuses')
16
+ metadata = attrs.delete('search_metadata')
17
+ attrs['statuses'] = statuses.map { |s| Croudia::Status.new(s) }
18
+ attrs['search_metadata'] = Croudia::SearchMetadata.new(metadata)
19
+ super(attrs)
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module Croudia
2
- VERSION = '1.0.13'
2
+ VERSION = '1.0.14'
3
3
  end
@@ -0,0 +1,54 @@
1
+ require 'helper'
2
+
3
+ describe Croudia::API::Search do
4
+ before do
5
+ @client = Croudia::Client.new
6
+ end
7
+
8
+ describe '#search' do
9
+ before do
10
+ stub_get('/search/voices.json').with(query: {
11
+ q: 'hoge',
12
+ }).to_return(
13
+ body: fixture(:search_results),
14
+ headers: { content_type: 'application/json; charset=utf-8' }
15
+ )
16
+ end
17
+
18
+ it 'requests the correct resource' do
19
+ @client.search('hoge')
20
+ expect(a_get('/search/voices.json').with(query: {
21
+ q: 'hoge',
22
+ })).to have_been_made
23
+ end
24
+
25
+ it 'returns Croudia::SearchResults' do
26
+ subject = @client.search('hoge')
27
+ expect(subject).to be_a Croudia::SearchResults
28
+ end
29
+ end
30
+
31
+ describe '#search_user' do
32
+ before do
33
+ stub_get('/users/search.json').with(query: {
34
+ q: 'hoge',
35
+ }).to_return(
36
+ body: fixture(:users),
37
+ headers: { content_type: 'application/json; charset=utf-8' }
38
+ )
39
+ end
40
+
41
+ it 'requests the correct resource' do
42
+ @client.search_user('hoge')
43
+ expect(a_get('/users/search.json').with(query: {
44
+ q: 'hoge',
45
+ })).to have_been_made
46
+ end
47
+
48
+ it 'returns an array of Croudia::User' do
49
+ subject = @client.search_user('hoge')
50
+ expect(subject).to be_a Array
51
+ subject.each { |user| expect(user).to be_a Croudia::User }
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,89 @@
1
+ {
2
+ "statuses": [
3
+ {
4
+ "id": 1228014,
5
+ "id_str": "1228014",
6
+ "text": "さっき誤字してた……",
7
+ "created_at": "Tue, 25 Jun 2013 23:58:43 +0900",
8
+ "favorited": false,
9
+ "favorited_count": 0,
10
+ "spread": false,
11
+ "spread_count": 0,
12
+ "in_reply_to_status_id": null,
13
+ "in_reply_to_status_id_str": null,
14
+ "in_reply_to_user_id": null,
15
+ "in_reply_to_user_id_str": null,
16
+ "in_reply_to_screen_name": null,
17
+ "source": {
18
+ "name": "source",
19
+ "url": "https://croudia.com"
20
+ },
21
+ "user": {
22
+ "id": 7987,
23
+ "id_str": "7987",
24
+ "name": "wktk",
25
+ "screen_name": "wktk",
26
+ "profile_image_url_https": "https://croudia.com/testimages/download/9423",
27
+ "created_at": "Sun, 29 Jul 2012 19:21:21 +0900",
28
+ "description": "気軽に fav ります。Twitter でも @wktk です。 \r\nhttps://twitter.com/wktk\r\nhttps://github.com/wktk",
29
+ "favorites_count": 68,
30
+ "follow_request_sent": "underdevelopment",
31
+ "followers_count": 12,
32
+ "following": "underdevelopment",
33
+ "friends_count": 11,
34
+ "location": "Japan",
35
+ "statuses_count": 26,
36
+ "protected": false,
37
+ "url": "http://wktk.jp/"
38
+ }
39
+ },
40
+ {
41
+ "id": 1228009,
42
+ "id_str": "1228009",
43
+ "text": ": ;(∩´﹏`∩);:",
44
+ "created_at": "Tue, 25 Jun 2013 23:58:15 +0900",
45
+ "favorited": false,
46
+ "favorited_count": 0,
47
+ "spread": false,
48
+ "spread_count": 0,
49
+ "in_reply_to_status_id": null,
50
+ "in_reply_to_status_id_str": null,
51
+ "in_reply_to_user_id": null,
52
+ "in_reply_to_user_id_str": null,
53
+ "in_reply_to_screen_name": null,
54
+ "source": {
55
+ "name": "source",
56
+ "url": "https://croudia.com"
57
+ },
58
+ "user": {
59
+ "id": 7987,
60
+ "id_str": "7987",
61
+ "name": "wktk",
62
+ "screen_name": "wktk",
63
+ "profile_image_url_https": "https://croudia.com/testimages/download/9423",
64
+ "created_at": "Sun, 29 Jul 2012 19:21:21 +0900",
65
+ "description": "気軽に fav ります。Twitter でも @wktk です。 \r\nhttps://twitter.com/wktk\r\nhttps://github.com/wktk",
66
+ "favorites_count": 68,
67
+ "follow_request_sent": "underdevelopment",
68
+ "followers_count": 12,
69
+ "following": "underdevelopment",
70
+ "friends_count": 11,
71
+ "location": "Japan",
72
+ "statuses_count": 26,
73
+ "protected": false,
74
+ "url": "http://wktk.jp/"
75
+ }
76
+ }
77
+ ],
78
+ "search_metadata": {
79
+ "completed_in": 1,
80
+ "count": 10,
81
+ "max_id": 893114514,
82
+ "max_id_str": "893114514",
83
+ "next_results": "hoge",
84
+ "query": "hoge",
85
+ "refresh_url": "hoge",
86
+ "since_id": 8104545,
87
+ "since_ids_str": "8104545"
88
+ }
89
+ }
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.13
4
+ version: 1.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - wktk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-08 00:00:00.000000000 Z
11
+ date: 2013-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -114,6 +114,7 @@ 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/search.rb
117
118
  - lib/croudia/api/secret_mails.rb
118
119
  - lib/croudia/api/statuses.rb
119
120
  - lib/croudia/api/timelines.rb
@@ -135,6 +136,8 @@ files:
135
136
  - lib/croudia/request/raise_error.rb
136
137
  - lib/croudia/response/parse_json.rb
137
138
  - lib/croudia/response/raise_error.rb
139
+ - lib/croudia/search_metadata.rb
140
+ - lib/croudia/search_results.rb
138
141
  - lib/croudia/secret_mail.rb
139
142
  - lib/croudia/source.rb
140
143
  - lib/croudia/status.rb
@@ -144,6 +147,7 @@ files:
144
147
  - spec/croudia/api/favorites_spec.rb
145
148
  - spec/croudia/api/friendships_spec.rb
146
149
  - spec/croudia/api/oauth_spec.rb
150
+ - spec/croudia/api/search_spec.rb
147
151
  - spec/croudia/api/secret_mails_spec.rb
148
152
  - spec/croudia/api/statuses_spec.rb
149
153
  - spec/croudia/api/timelines_spec.rb
@@ -164,6 +168,7 @@ files:
164
168
  - spec/fixtures/friendships.json
165
169
  - spec/fixtures/ids_with_cursor.json
166
170
  - spec/fixtures/image.jpg
171
+ - spec/fixtures/search_results.json
167
172
  - spec/fixtures/secret_mail.json
168
173
  - spec/fixtures/secret_mails.json
169
174
  - spec/fixtures/status.json
@@ -201,6 +206,7 @@ test_files:
201
206
  - spec/croudia/api/favorites_spec.rb
202
207
  - spec/croudia/api/friendships_spec.rb
203
208
  - spec/croudia/api/oauth_spec.rb
209
+ - spec/croudia/api/search_spec.rb
204
210
  - spec/croudia/api/secret_mails_spec.rb
205
211
  - spec/croudia/api/statuses_spec.rb
206
212
  - spec/croudia/api/timelines_spec.rb
@@ -221,6 +227,7 @@ test_files:
221
227
  - spec/fixtures/friendships.json
222
228
  - spec/fixtures/ids_with_cursor.json
223
229
  - spec/fixtures/image.jpg
230
+ - spec/fixtures/search_results.json
224
231
  - spec/fixtures/secret_mail.json
225
232
  - spec/fixtures/secret_mails.json
226
233
  - spec/fixtures/status.json