yamwow 0.0.1 → 0.0.2
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.
@@ -1,17 +1,17 @@
|
|
1
1
|
require 'csv'
|
2
2
|
|
3
3
|
module YamWow
|
4
|
-
class
|
4
|
+
class CsvGenerator
|
5
5
|
|
6
6
|
def initialize(column_headers)
|
7
7
|
@column_headers = column_headers
|
8
8
|
end
|
9
9
|
|
10
|
-
def generate(
|
10
|
+
def generate(messages)
|
11
11
|
CSV.generate do |csv|
|
12
12
|
csv << @column_headers
|
13
|
-
|
14
|
-
|
13
|
+
sorted_messages = messages.sort { |x, y| y.date_created <=> x.date_created }
|
14
|
+
sorted_messages.each { |p| csv << yield(p) }
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'time'
|
2
|
+
|
3
|
+
module YamWow
|
4
|
+
class Message
|
5
|
+
|
6
|
+
def initialize(response_data, references)
|
7
|
+
@response_data = response_data
|
8
|
+
@references = references
|
9
|
+
end
|
10
|
+
|
11
|
+
def sender_tag
|
12
|
+
"[[user:#{sender_id}]]"
|
13
|
+
end
|
14
|
+
|
15
|
+
def sender_name
|
16
|
+
get_name sender_id
|
17
|
+
end
|
18
|
+
|
19
|
+
def plain_body
|
20
|
+
@response_data['body']['plain']
|
21
|
+
end
|
22
|
+
|
23
|
+
def parsed_body
|
24
|
+
@response_data['body']['parsed']
|
25
|
+
end
|
26
|
+
|
27
|
+
def parsed_body_single_line
|
28
|
+
parsed_body.gsub("\n", ' ').strip
|
29
|
+
end
|
30
|
+
|
31
|
+
def date_created
|
32
|
+
Time.parse @response_data['created_at']
|
33
|
+
end
|
34
|
+
|
35
|
+
def like_count
|
36
|
+
@response_data['liked_by']['count'].to_i
|
37
|
+
end
|
38
|
+
|
39
|
+
def url
|
40
|
+
@response_data['web_url']
|
41
|
+
end
|
42
|
+
|
43
|
+
def attachments
|
44
|
+
@response_data['attachments']
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def sender_id
|
50
|
+
@response_data['sender_id']
|
51
|
+
end
|
52
|
+
|
53
|
+
def get_name(id)
|
54
|
+
@references.select { |r| r['id'] == id }[0]['full_name']
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
@@ -7,5 +7,19 @@ module YamWow
|
|
7
7
|
@response_data = response_data
|
8
8
|
end
|
9
9
|
|
10
|
+
def messages
|
11
|
+
root_messages.map { |m| Message.new m, references }
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def root_messages
|
17
|
+
@response_data['messages'].select { |m| m['replied_to_id'].nil? }
|
18
|
+
end
|
19
|
+
|
20
|
+
def references
|
21
|
+
@response_data['references']
|
22
|
+
end
|
23
|
+
|
10
24
|
end
|
11
25
|
end
|
data/lib/yamwow/praise.rb
CHANGED
@@ -1,63 +1,52 @@
|
|
1
|
-
|
1
|
+
require_relative 'message'
|
2
2
|
|
3
3
|
module YamWow
|
4
4
|
class Praise
|
5
5
|
|
6
|
-
def initialize(message
|
6
|
+
def initialize(message)
|
7
7
|
@message = message
|
8
|
-
@references = references
|
9
|
-
@parsed_body = @message['body']['parsed']
|
10
|
-
@plain_body = @message['body']['plain']
|
11
|
-
end
|
12
|
-
|
13
|
-
def recipient_tags
|
14
|
-
split_recipients @parsed_body
|
15
|
-
end
|
16
|
-
|
17
|
-
def recipient_names
|
18
|
-
split_recipients(@plain_body).map { |r| r.delete('@') }
|
19
8
|
end
|
20
9
|
|
21
10
|
def sender_tag
|
22
|
-
|
11
|
+
@message.sender_tag
|
23
12
|
end
|
24
13
|
|
25
14
|
def sender_name
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
def reason
|
30
|
-
attachments = @message['attachments'] || []
|
31
|
-
reason = attachments.map { |a| m = a['name'].match(/Praise: (.+)/m); m ? m[1] : nil }[0]
|
32
|
-
reason || @parsed_body
|
33
|
-
end
|
34
|
-
|
35
|
-
def reason_single_line
|
36
|
-
reason.gsub("\n", ' ').strip
|
15
|
+
@message.sender_name
|
37
16
|
end
|
38
17
|
|
39
18
|
def date_created
|
40
|
-
|
19
|
+
@message.date_created
|
41
20
|
end
|
42
21
|
|
43
22
|
def like_count
|
44
|
-
@message
|
23
|
+
@message.like_count
|
45
24
|
end
|
46
25
|
|
47
26
|
def url
|
48
|
-
@message
|
27
|
+
@message.url
|
49
28
|
end
|
50
29
|
|
51
|
-
|
30
|
+
def recipient_tags
|
31
|
+
split_recipients @message.parsed_body
|
32
|
+
end
|
52
33
|
|
53
|
-
def
|
54
|
-
@message
|
34
|
+
def recipient_names
|
35
|
+
split_recipients(@message.plain_body).map { |r| r.delete('@') }
|
55
36
|
end
|
56
37
|
|
57
|
-
def
|
58
|
-
@
|
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
|
59
42
|
end
|
60
43
|
|
44
|
+
def reason_single_line
|
45
|
+
reason.gsub("\n", ' ').strip
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
61
50
|
def split_recipients(recipients)
|
62
51
|
recipients = recipients.include?('praised') ? recipients.match(/praised (.+)/)[1] : ''
|
63
52
|
recipients.gsub!(' and ', ', ')
|
@@ -7,7 +7,7 @@ module YamWow
|
|
7
7
|
def send
|
8
8
|
messages_by_topic_request = MessagesByTopicRequest.new @oauth_credentials
|
9
9
|
messages_by_topic_response = messages_by_topic_request.send 'praise'
|
10
|
-
PraiseResponse.new messages_by_topic_response.
|
10
|
+
PraiseResponse.new messages_by_topic_response.messages
|
11
11
|
end
|
12
12
|
|
13
13
|
end
|
@@ -3,25 +3,41 @@ require_relative 'praise'
|
|
3
3
|
module YamWow
|
4
4
|
class PraiseResponse
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
def initialize(response_data)
|
9
|
-
@response_data = response_data
|
6
|
+
def initialize(messages)
|
7
|
+
@messages = messages
|
10
8
|
end
|
11
9
|
|
12
10
|
def praises
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
def root_messages
|
19
|
-
@response_data['messages'].select { |m| m['replied_to_id'].nil? }
|
20
|
-
end
|
21
|
-
|
22
|
-
def references
|
23
|
-
@response_data['references']
|
11
|
+
@messages.map { |m| Praise.new m }
|
24
12
|
end
|
25
13
|
|
26
14
|
end
|
27
|
-
end
|
15
|
+
end
|
16
|
+
|
17
|
+
#require_relative 'praise'
|
18
|
+
#
|
19
|
+
#module YamWow
|
20
|
+
# class PraiseResponse
|
21
|
+
#
|
22
|
+
# attr_reader :response_data
|
23
|
+
#
|
24
|
+
# def initialize(response_data)
|
25
|
+
# @response_data = response_data
|
26
|
+
# end
|
27
|
+
#
|
28
|
+
# def praises
|
29
|
+
# root_messages.map { |m| Praise.new m, references }
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
# private
|
33
|
+
#
|
34
|
+
# def root_messages
|
35
|
+
# @response_data['messages'].select { |m| m['replied_to_id'].nil? }
|
36
|
+
# end
|
37
|
+
#
|
38
|
+
# def references
|
39
|
+
# @response_data['references']
|
40
|
+
# end
|
41
|
+
#
|
42
|
+
# end
|
43
|
+
#end
|
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.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2013-01-24 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: oauth
|
16
|
-
requirement: &
|
16
|
+
requirement: &70299510551020 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,17 +21,18 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70299510551020
|
25
25
|
description:
|
26
26
|
email: matthew-github@matthewriley.name
|
27
27
|
executables: []
|
28
28
|
extensions: []
|
29
29
|
extra_rdoc_files: []
|
30
30
|
files:
|
31
|
+
- lib/yamwow/csv_generator.rb
|
32
|
+
- lib/yamwow/message.rb
|
31
33
|
- lib/yamwow/messages_by_topic_request.rb
|
32
34
|
- lib/yamwow/messages_by_topic_response.rb
|
33
35
|
- lib/yamwow/praise.rb
|
34
|
-
- lib/yamwow/praise_csv_generator.rb
|
35
36
|
- lib/yamwow/praise_request.rb
|
36
37
|
- lib/yamwow/praise_response.rb
|
37
38
|
- lib/yamwow/request_base.rb
|