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 PraiseCsvGenerator
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(praises)
10
+ def generate(messages)
11
11
  CSV.generate do |csv|
12
12
  csv << @column_headers
13
- praises = praises.sort { |x, y| y.date_created <=> x.date_created }
14
- praises.each { |p| csv << yield(p) }
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
- require 'time'
1
+ require_relative 'message'
2
2
 
3
3
  module YamWow
4
4
  class Praise
5
5
 
6
- def initialize(message, references)
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
- "[[user:#{sender_id}]]"
11
+ @message.sender_tag
23
12
  end
24
13
 
25
14
  def sender_name
26
- get_name sender_id
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
- Time.parse @message['created_at']
19
+ @message.date_created
41
20
  end
42
21
 
43
22
  def like_count
44
- @message['liked_by']['count'].to_i
23
+ @message.like_count
45
24
  end
46
25
 
47
26
  def url
48
- @message['web_url']
27
+ @message.url
49
28
  end
50
29
 
51
- private
30
+ def recipient_tags
31
+ split_recipients @message.parsed_body
32
+ end
52
33
 
53
- def sender_id
54
- @message['sender_id']
34
+ def recipient_names
35
+ split_recipients(@message.plain_body).map { |r| r.delete('@') }
55
36
  end
56
37
 
57
- def get_name(id)
58
- @references.select { |r| r['id'] == id }[0]['full_name']
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.response_data
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
- attr_reader :response_data
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
- root_messages.map { |m| Praise.new m, references }
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.1
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: &70216953166900 !ruby/object:Gem::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: *70216953166900
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