yamwow 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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