croudia 1.0.13 → 1.0.14

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