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 +4 -4
- data/lib/croudia/api/search.rb +30 -0
- data/lib/croudia/api/utils.rb +12 -0
- data/lib/croudia/client.rb +2 -0
- data/lib/croudia/search_metadata.rb +19 -0
- data/lib/croudia/search_results.rb +22 -0
- data/lib/croudia/version.rb +1 -1
- data/spec/croudia/api/search_spec.rb +54 -0
- data/spec/fixtures/search_results.json +89 -0
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf93c107da3e67e76893d1ad119b53d1b6e111b3
|
4
|
+
data.tar.gz: 423b2e63ad81479d8d4c1666a99dd084f007a340
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
data/lib/croudia/api/utils.rb
CHANGED
@@ -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
|
data/lib/croudia/client.rb
CHANGED
@@ -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
|
data/lib/croudia/version.rb
CHANGED
@@ -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.
|
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-
|
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
|