yamwow 0.0.10 → 0.0.11
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.
- data/lib/yamwow/client.rb +5 -0
- data/lib/yamwow/enumerable_extensions.rb +25 -0
- data/lib/yamwow/facade.rb +6 -9
- data/lib/yamwow/requests/group_with_name_request.rb +29 -0
- data/lib/yamwow/{messages_with_topic_request.rb → requests/messages_with_topic_request.rb} +5 -7
- data/lib/yamwow/{praise_request.rb → requests/praise_request.rb} +5 -4
- data/lib/yamwow/requests/topic_with_id_request.rb +17 -0
- data/lib/yamwow/requests/topic_with_name_request.rb +31 -0
- data/lib/yamwow/requests/topics_request.rb +37 -0
- data/lib/yamwow/requests/topics_with_prefix_request.rb +36 -0
- data/lib/yamwow/requests.rb +1 -0
- data/lib/yamwow/response.rb +35 -0
- data/lib/yamwow.rb +1 -2
- metadata +14 -16
- data/lib/yamwow/csv_generator.rb +0 -27
- data/lib/yamwow/group.rb +0 -5
- data/lib/yamwow/group_with_name_request.rb +0 -40
- data/lib/yamwow/message.rb +0 -35
- data/lib/yamwow/message_builder.rb +0 -30
- data/lib/yamwow/praise.rb +0 -57
- data/lib/yamwow/topic.rb +0 -5
- data/lib/yamwow/topic_with_name_request.rb +0 -36
- data/lib/yamwow/topics_request.rb +0 -44
- data/lib/yamwow/user.rb +0 -5
data/lib/yamwow/client.rb
CHANGED
@@ -8,6 +8,7 @@ module YamWow
|
|
8
8
|
@yam = Yam.new oauth_token, nil
|
9
9
|
@message_throttle = Throttle.new 10, 30
|
10
10
|
@autocomplete_throttle = Throttle.new 10, 10
|
11
|
+
@other_throttle = Throttle.new 10, 10
|
11
12
|
end
|
12
13
|
|
13
14
|
def get_messages(path=nil, params={})
|
@@ -19,6 +20,10 @@ module YamWow
|
|
19
20
|
get 'autocomplete.json', params, @autocomplete_throttle
|
20
21
|
end
|
21
22
|
|
23
|
+
def get_other(path, params={})
|
24
|
+
get path, params, @other_throttle
|
25
|
+
end
|
26
|
+
|
22
27
|
private
|
23
28
|
|
24
29
|
def get(path, params, throttle)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Enumerable
|
2
|
+
|
3
|
+
def flatten_with_path(parent_prefix = nil)
|
4
|
+
res = {}
|
5
|
+
|
6
|
+
self.each_with_index do |elem, i|
|
7
|
+
if elem.is_a?(Array)
|
8
|
+
k, v = elem
|
9
|
+
else
|
10
|
+
k, v = i, elem
|
11
|
+
end
|
12
|
+
|
13
|
+
key = parent_prefix ? "#{parent_prefix}.#{k}" : k # assign key name for result hash
|
14
|
+
|
15
|
+
if v.is_a? Enumerable
|
16
|
+
res.merge!(v.flatten_with_path(key)) # recursive call to flatten child elements
|
17
|
+
else
|
18
|
+
res[key] = v
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
res
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
data/lib/yamwow/facade.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require_relative 'client'
|
2
|
-
|
3
|
-
require_relative 'message_builder'
|
2
|
+
require_relative 'requests'
|
4
3
|
|
5
4
|
module YamWow
|
6
5
|
class Facade
|
@@ -10,21 +9,19 @@ module YamWow
|
|
10
9
|
end
|
11
10
|
|
12
11
|
def messages_with_topic(topic_name, options={})
|
13
|
-
|
14
|
-
b = MessageBuilder.new
|
15
|
-
r['messages'].map { |m| b.build_message m, r['references'] }
|
12
|
+
MessagesWithTopicRequest.new(@client, topic_name, options).send
|
16
13
|
end
|
17
14
|
|
18
15
|
def praises(options={})
|
19
16
|
PraiseRequest.new(@client, options).send
|
20
17
|
end
|
21
18
|
|
22
|
-
def topic_with_name(topic_name)
|
23
|
-
TopicWithNameRequest.new(@client, topic_name).send
|
19
|
+
def topic_with_name(topic_name, options={})
|
20
|
+
TopicWithNameRequest.new(@client, topic_name, options).send
|
24
21
|
end
|
25
22
|
|
26
|
-
def topics
|
27
|
-
TopicsRequest.new(@client).send
|
23
|
+
def topics(options={})
|
24
|
+
TopicsRequest.new(@client, options).send
|
28
25
|
end
|
29
26
|
|
30
27
|
def group_with_name(group_name)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative '../response'
|
2
|
+
|
3
|
+
module YamWow
|
4
|
+
class GroupWithNameRequest
|
5
|
+
|
6
|
+
def initialize(client, group_name)
|
7
|
+
@client = client
|
8
|
+
@group_name = group_name.downcase.gsub(/[^0-9a-z]/i, '')
|
9
|
+
end
|
10
|
+
|
11
|
+
def send
|
12
|
+
groups = get_groups
|
13
|
+
group = first_group_with_matching_name groups
|
14
|
+
Response.new group
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def get_groups
|
20
|
+
r = @client.get_autocomplete prefix: 'to:' + @group_name
|
21
|
+
r['groups'] || []
|
22
|
+
end
|
23
|
+
|
24
|
+
def first_group_with_matching_name(groups)
|
25
|
+
groups.select { |g| g['name'] == @group_name }.first
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
|
+
require 'time'
|
2
|
+
require_relative '../response'
|
1
3
|
require_relative 'topic_with_name_request'
|
2
|
-
require_relative 'message'
|
3
|
-
require_relative 'user'
|
4
4
|
|
5
5
|
module YamWow
|
6
6
|
class MessagesWithTopicRequest
|
@@ -27,10 +27,7 @@ module YamWow
|
|
27
27
|
|
28
28
|
@messages.sort! { |x, y| Time.parse(y['created_at']) <=> Time.parse(x['created_at']) }
|
29
29
|
|
30
|
-
|
31
|
-
'messages' => @messages,
|
32
|
-
'references' => @references
|
33
|
-
}
|
30
|
+
Response.new @messages, @references
|
34
31
|
end
|
35
32
|
|
36
33
|
private
|
@@ -45,7 +42,8 @@ module YamWow
|
|
45
42
|
|
46
43
|
def get_topic_id
|
47
44
|
request = TopicWithNameRequest.new @client, @topic_name
|
48
|
-
|
45
|
+
response = request.send
|
46
|
+
topic = response.data
|
49
47
|
raise "Topic '#{@topic_name}' was not found." unless topic
|
50
48
|
topic.id
|
51
49
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require_relative 'messages_with_topic_request'
|
2
|
-
require_relative 'praise'
|
3
2
|
|
4
3
|
module YamWow
|
5
4
|
class PraiseRequest
|
@@ -10,9 +9,11 @@ module YamWow
|
|
10
9
|
end
|
11
10
|
|
12
11
|
def send
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
get_messages_with_praise_topic
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_messages_with_praise_topic
|
16
|
+
MessagesWithTopicRequest.new(@client, 'praise', @options).send
|
16
17
|
end
|
17
18
|
|
18
19
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require_relative '../response'
|
2
|
+
|
3
|
+
module YamWow
|
4
|
+
class TopicWithIdRequest
|
5
|
+
|
6
|
+
def initialize(client, topic_id)
|
7
|
+
@client = client
|
8
|
+
@topic_id = topic_id
|
9
|
+
end
|
10
|
+
|
11
|
+
def send
|
12
|
+
topic = @client.get_other "topics/#{@topic_id}.json"
|
13
|
+
Response.new topic
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative '../response'
|
2
|
+
require_relative 'topics_with_prefix_request'
|
3
|
+
|
4
|
+
module YamWow
|
5
|
+
class TopicWithNameRequest
|
6
|
+
|
7
|
+
def initialize(client, topic_name, options={})
|
8
|
+
@client = client
|
9
|
+
@topic_name = topic_name
|
10
|
+
@detailed = options[:detailed]
|
11
|
+
end
|
12
|
+
|
13
|
+
def send
|
14
|
+
topics = get_topics
|
15
|
+
topic = first_topic_with_matching_name topics
|
16
|
+
Response.new topic
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def get_topics
|
22
|
+
response = TopicsWithPrefixRequest.new(@client, @topic_name, detailed: @detailed).send
|
23
|
+
response.data || []
|
24
|
+
end
|
25
|
+
|
26
|
+
def first_topic_with_matching_name(topics)
|
27
|
+
topics.select { |t| t['name'].casecmp(@topic_name) == 0 }.first
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative '../response'
|
2
|
+
require_relative 'topics_with_prefix_request'
|
3
|
+
|
4
|
+
module YamWow
|
5
|
+
class TopicsRequest
|
6
|
+
|
7
|
+
def initialize(client, options={})
|
8
|
+
@client = client
|
9
|
+
@detailed = options[:detailed]
|
10
|
+
end
|
11
|
+
|
12
|
+
def send
|
13
|
+
@topics = []
|
14
|
+
process_range '0', '9'
|
15
|
+
process_range 'a', 'z'
|
16
|
+
@topics.uniq! { |t| t['id'] }
|
17
|
+
@topics.sort! { |x, y| x['name'].downcase <=> y['name'].downcase }
|
18
|
+
Response.new @topics
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def process_range(first, last, current=nil)
|
24
|
+
((current.to_s + first)..(current.to_s + last)).each do |prefix|
|
25
|
+
topics = send_topics_with_prefix_request prefix
|
26
|
+
@topics += topics
|
27
|
+
process_range first, last, prefix if topics.length == 50
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def send_topics_with_prefix_request(topic_prefix)
|
32
|
+
response = TopicsWithPrefixRequest.new(@client, topic_prefix, detailed: @detailed).send
|
33
|
+
response.data || []
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require_relative '../response'
|
2
|
+
require_relative 'topic_with_id_request'
|
3
|
+
|
4
|
+
module YamWow
|
5
|
+
class TopicsWithPrefixRequest
|
6
|
+
|
7
|
+
def initialize(client, topic_prefix, options={})
|
8
|
+
@client = client
|
9
|
+
@topic_prefix = topic_prefix
|
10
|
+
@detailed = options[:detailed]
|
11
|
+
end
|
12
|
+
|
13
|
+
def send
|
14
|
+
topics = get_topics
|
15
|
+
topics.each { |t| add_details t } if @detailed
|
16
|
+
Response.new topics
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def get_topics
|
22
|
+
response = @client.get_autocomplete(prefix: @topic_prefix)
|
23
|
+
response['topics'] || []
|
24
|
+
end
|
25
|
+
|
26
|
+
def add_details(topic)
|
27
|
+
detailed_topic = get_detailed_topic topic['id']
|
28
|
+
topic.merge! detailed_topic
|
29
|
+
end
|
30
|
+
|
31
|
+
def get_detailed_topic(topic_id)
|
32
|
+
TopicWithIdRequest.new(@client, topic_id).send
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Dir[File.expand_path(File.dirname(__FILE__) + '/requests/*.rb')].each { |f| require f }
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'csv'
|
2
|
+
require_relative 'enumerable_extensions'
|
3
|
+
|
4
|
+
module YamWow
|
5
|
+
class Response
|
6
|
+
|
7
|
+
attr_accessor :data, :reference_data
|
8
|
+
|
9
|
+
def initialize(data, reference_data=nil)
|
10
|
+
@data = data
|
11
|
+
@reference_data = reference_data
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_csv(options={})
|
15
|
+
data = @data.kind_of?(Array) ? @data : [@data]
|
16
|
+
hashes = data.map { |h| h.flatten_with_path }
|
17
|
+
columns = options[:include]
|
18
|
+
|
19
|
+
unless columns
|
20
|
+
keys = Set.new
|
21
|
+
hashes.each { |h| keys += h.keys }
|
22
|
+
columns = keys.sort
|
23
|
+
end
|
24
|
+
|
25
|
+
exclude_columns = options[:exclude] || []
|
26
|
+
columns = columns.reject { |c1| exclude_columns.index { |c2| c1 =~ c2 } }
|
27
|
+
|
28
|
+
CSV.generate do |csv|
|
29
|
+
csv << columns
|
30
|
+
hashes.each { |h| csv << columns.map { |k| h[k] } }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
data/lib/yamwow.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yamwow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: yam
|
16
|
-
requirement: &
|
16
|
+
requirement: &70345739143900 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70345739143900
|
25
25
|
description:
|
26
26
|
email: matthew-github@matthewriley.name
|
27
27
|
executables: []
|
@@ -30,20 +30,18 @@ extra_rdoc_files: []
|
|
30
30
|
files:
|
31
31
|
- lib/cacert.pem
|
32
32
|
- lib/yamwow/client.rb
|
33
|
-
- lib/yamwow/
|
33
|
+
- lib/yamwow/enumerable_extensions.rb
|
34
34
|
- lib/yamwow/facade.rb
|
35
|
-
- lib/yamwow/
|
36
|
-
- lib/yamwow/
|
37
|
-
- lib/yamwow/
|
38
|
-
- lib/yamwow/
|
39
|
-
- lib/yamwow/
|
40
|
-
- lib/yamwow/
|
41
|
-
- lib/yamwow/
|
35
|
+
- lib/yamwow/requests/group_with_name_request.rb
|
36
|
+
- lib/yamwow/requests/messages_with_topic_request.rb
|
37
|
+
- lib/yamwow/requests/praise_request.rb
|
38
|
+
- lib/yamwow/requests/topic_with_id_request.rb
|
39
|
+
- lib/yamwow/requests/topic_with_name_request.rb
|
40
|
+
- lib/yamwow/requests/topics_request.rb
|
41
|
+
- lib/yamwow/requests/topics_with_prefix_request.rb
|
42
|
+
- lib/yamwow/requests.rb
|
43
|
+
- lib/yamwow/response.rb
|
42
44
|
- lib/yamwow/throttle.rb
|
43
|
-
- lib/yamwow/topic.rb
|
44
|
-
- lib/yamwow/topic_with_name_request.rb
|
45
|
-
- lib/yamwow/topics_request.rb
|
46
|
-
- lib/yamwow/user.rb
|
47
45
|
- lib/yamwow.rb
|
48
46
|
homepage: http://rubygems.org/gems/yamwow
|
49
47
|
licenses: []
|
data/lib/yamwow/csv_generator.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'csv'
|
2
|
-
|
3
|
-
module YamWow
|
4
|
-
class CsvGenerator
|
5
|
-
|
6
|
-
attr_accessor :headers
|
7
|
-
|
8
|
-
def initialize
|
9
|
-
@headers = nil
|
10
|
-
end
|
11
|
-
|
12
|
-
def generate(items)
|
13
|
-
CSV.generate do |csv|
|
14
|
-
csv << headers_as_array if @headers
|
15
|
-
items.each { |i| csv << yield(i) }
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def headers_as_array
|
22
|
-
return unless @headers
|
23
|
-
@headers.kind_of?(Array) ? @headers : @headers.split(',').map { |h| h.strip }
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
27
|
-
end
|
data/lib/yamwow/group.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
require_relative 'group'
|
2
|
-
|
3
|
-
module YamWow
|
4
|
-
class GroupWithNameRequest
|
5
|
-
|
6
|
-
def initialize(client, group_name)
|
7
|
-
@client = client
|
8
|
-
@group_name = group_name.downcase.gsub(/[^0-9a-z]/i, '')
|
9
|
-
end
|
10
|
-
|
11
|
-
def send
|
12
|
-
build_group group_data
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def group_data
|
18
|
-
data = send_autocomplete_request
|
19
|
-
groups = data['groups'] || []
|
20
|
-
groups.select { |g| g['name'] == @group_name }.first
|
21
|
-
end
|
22
|
-
|
23
|
-
def send_autocomplete_request
|
24
|
-
@client.get_autocomplete prefix: autocomplete_prefix
|
25
|
-
end
|
26
|
-
|
27
|
-
def autocomplete_prefix
|
28
|
-
'to:' + @group_name
|
29
|
-
end
|
30
|
-
|
31
|
-
def build_group(group_data)
|
32
|
-
return unless group_data
|
33
|
-
g = YamWow::Group.new
|
34
|
-
g.id = group_data['id']
|
35
|
-
g.name = group_data['full_name']
|
36
|
-
g
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
data/lib/yamwow/message.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'time'
|
2
|
-
|
3
|
-
module YamWow
|
4
|
-
class Message
|
5
|
-
|
6
|
-
attr_accessor :id, :plain_body, :parsed_body, :date_created, :like_count, :url, :sender, :reply_to_id, :attachments
|
7
|
-
|
8
|
-
def sender_tag
|
9
|
-
"[[user:#{@sender.id}]]"
|
10
|
-
end
|
11
|
-
|
12
|
-
def sender_name
|
13
|
-
@sender.name
|
14
|
-
end
|
15
|
-
|
16
|
-
def plain_body_single_line
|
17
|
-
single_line @plain_body
|
18
|
-
end
|
19
|
-
|
20
|
-
def parsed_body_single_line
|
21
|
-
single_line @parsed_body
|
22
|
-
end
|
23
|
-
|
24
|
-
def thread_root?
|
25
|
-
@reply_to_id.nil?
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def single_line(text)
|
31
|
-
text.gsub("\n", ' ').strip
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
35
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module YamWow
|
2
|
-
class MessageBuilder
|
3
|
-
|
4
|
-
def build_message(message_data, reference_data)
|
5
|
-
d = message_data
|
6
|
-
m = Message.new
|
7
|
-
m.id = d['id']
|
8
|
-
m.plain_body = d['body']['plain']
|
9
|
-
m.parsed_body = d['body']['parsed']
|
10
|
-
m.date_created = Time.parse d['created_at']
|
11
|
-
m.like_count = d['liked_by']['count'].to_i
|
12
|
-
m.url = d['web_url']
|
13
|
-
m.sender = build_user d['sender_id'], reference_data
|
14
|
-
m.reply_to_id = d['replied_to_id']
|
15
|
-
m.attachments = d['attachments']
|
16
|
-
m
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def build_user(user_id, reference_data)
|
22
|
-
d = reference_data.select { |r| r['id'] == user_id }[0]
|
23
|
-
u = User.new
|
24
|
-
u.id = d['id']
|
25
|
-
u.name = d['full_name']
|
26
|
-
u
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
end
|
data/lib/yamwow/praise.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
require_relative 'message'
|
2
|
-
|
3
|
-
module YamWow
|
4
|
-
class Praise
|
5
|
-
|
6
|
-
def initialize(message)
|
7
|
-
@message = message
|
8
|
-
end
|
9
|
-
|
10
|
-
def sender_tag
|
11
|
-
@message.sender_tag
|
12
|
-
end
|
13
|
-
|
14
|
-
def sender_name
|
15
|
-
@message.sender_name
|
16
|
-
end
|
17
|
-
|
18
|
-
def date_created
|
19
|
-
@message.date_created
|
20
|
-
end
|
21
|
-
|
22
|
-
def like_count
|
23
|
-
@message.like_count
|
24
|
-
end
|
25
|
-
|
26
|
-
def url
|
27
|
-
@message.url
|
28
|
-
end
|
29
|
-
|
30
|
-
def recipient_tags
|
31
|
-
split_recipients @message.parsed_body
|
32
|
-
end
|
33
|
-
|
34
|
-
def recipient_names
|
35
|
-
split_recipients(@message.plain_body).map { |r| r.delete('@') }
|
36
|
-
end
|
37
|
-
|
38
|
-
def reason
|
39
|
-
attachments = @message.attachments || []
|
40
|
-
reason = attachments.map { |a| m = a['name'].match(/Praise: (.+)/m); m ? m[1] : nil }[0]
|
41
|
-
reason || @message.parsed_body
|
42
|
-
end
|
43
|
-
|
44
|
-
def reason_single_line
|
45
|
-
reason.gsub("\n", ' ').strip
|
46
|
-
end
|
47
|
-
|
48
|
-
private
|
49
|
-
|
50
|
-
def split_recipients(recipients)
|
51
|
-
recipients = recipients.include?('praised') ? recipients.match(/praised (.+)/)[1] : ''
|
52
|
-
recipients.gsub!(' and ', ', ')
|
53
|
-
recipients.split(', ')
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
end
|
data/lib/yamwow/topic.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
require_relative 'topic'
|
2
|
-
|
3
|
-
module YamWow
|
4
|
-
class TopicWithNameRequest
|
5
|
-
|
6
|
-
def initialize(client, topic_name)
|
7
|
-
@client = client
|
8
|
-
@topic_name = topic_name
|
9
|
-
end
|
10
|
-
|
11
|
-
def send
|
12
|
-
build_topic topic_data
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def topic_data
|
18
|
-
data = send_autocomplete_request
|
19
|
-
topics = data['topics'] || []
|
20
|
-
topics.select { |t| t['name'].casecmp(@topic_name) == 0 }.first
|
21
|
-
end
|
22
|
-
|
23
|
-
def send_autocomplete_request
|
24
|
-
@client.get_autocomplete prefix: @topic_name
|
25
|
-
end
|
26
|
-
|
27
|
-
def build_topic(topic_data)
|
28
|
-
return unless topic_data
|
29
|
-
t = Topic.new
|
30
|
-
t.id = topic_data['id']
|
31
|
-
t.name = topic_data['name']
|
32
|
-
t
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require_relative 'topic'
|
2
|
-
|
3
|
-
module YamWow
|
4
|
-
class TopicsRequest
|
5
|
-
|
6
|
-
def initialize(client)
|
7
|
-
@client = client
|
8
|
-
end
|
9
|
-
|
10
|
-
def send
|
11
|
-
@topics = []
|
12
|
-
process_range '0', '9'
|
13
|
-
process_range 'a', 'z'
|
14
|
-
@topics.uniq! { |t| t.id }
|
15
|
-
@topics.sort! { |x, y| x.name.downcase <=> y.name.downcase }
|
16
|
-
@topics
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def process_range(first, last, current=nil)
|
22
|
-
((current.to_s + first)..(current.to_s + last)).each do |prefix|
|
23
|
-
response_data = send_autocomplete_request prefix
|
24
|
-
topics_data = response_data['topics'] || []
|
25
|
-
topics = topics_data.map { |t| build_topic t }
|
26
|
-
@topics += topics
|
27
|
-
process_range first, last, prefix if topics.length == 50
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def send_autocomplete_request(prefix)
|
32
|
-
@client.get_autocomplete prefix: prefix.downcase
|
33
|
-
end
|
34
|
-
|
35
|
-
def build_topic(topic_data)
|
36
|
-
t = Topic.new
|
37
|
-
t.id = topic_data['id']
|
38
|
-
t.name = topic_data['name']
|
39
|
-
t.usages = topic_data['applications_count']
|
40
|
-
t
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|