secondHandler 0.0.3 → 1.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e14dc7f0cee8de7d71d1d879d29a8d560fb7ae64
4
- data.tar.gz: 94f8b3f7deb9d1bcffc66787860c02809d2fc8c3
3
+ metadata.gz: 1f3ffc11bd8eef21c6b96d3e722657d50264fd48
4
+ data.tar.gz: 849d31fbb8c55b4113a37afd42496aeb2a72ce86
5
5
  SHA512:
6
- metadata.gz: b022c76cd00bed1c8f7a5b014743c789b308bc5da05660243a8657f5d10b0e4e2b9107dcfb955631f4eba94dcdd78cca1202976f4527b5a656f1b9792b7d34fb
7
- data.tar.gz: c558a9d14b153bf659eec7eb7a2303453933fca64292a704d2ba7be7de4c301164c29583b2cf48ab6b0d20bb806095cda3fd5353ff604df1258c51765424ccd7
6
+ metadata.gz: 7872cccceaeaddf04cd2d87934053c05fed6dee4b141289a81c6aaaede1c88ab33f22a7f1e824f44453b61e1be85c560e14c8c96a90e953e15496639c5d62a8c
7
+ data.tar.gz: a7e97a7013053488ccda5b45d44f830e9f8790680c57b62a804db7671e57f7a704381d3624a15dfa2de3d65af7350bf4c38a994ec75771b32881e2f99b710937
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ *.gem
data/README.md CHANGED
@@ -19,13 +19,77 @@ $ second_handler fb --token 'facebook_dev_access_token' --id 'public_group_id'
19
19
  ```ruby
20
20
  require 'second_handler'
21
21
  fb = SecondHandler::FbGroupPost.new('access_token', 'group_id')
22
- # fetch first page
22
+ # fetch first page (you **must** call this function first if you want to read posts)
23
23
  page = fb.first_page
24
- # get neat content
25
- content = page.get_content
24
+ # get current content
25
+ content = fb.get_content
26
26
  # get next page
27
- page = page.next_page
27
+ page = fb.next_page
28
+
29
+ fbp = SecondHandler::FbSinglePost.new('access_token', 'post_id')
30
+ fbp.get_post_basic #get post information
31
+
32
+ fbp.first_comment #fetch first comments
33
+ fbp.get_comment #get current page comments
34
+ fbp.next_page_comment #fetch next page comments
35
+ fbp.previous_page_comment #fetch previous page comments
36
+
37
+
38
+
39
+ ```
40
+ **SecondHandler::FbGroupPost.get_content Hash sample**
41
+ ```ruby
42
+ [{
43
+ "id"=>"0000000_0000000", #feed id
44
+ "message"=>"OOOO",
45
+ "updated_time"=>"2015-11-08T00:00:00+0000",
46
+ "attachments"=>[
47
+ {"height"=>720, "src"=>"", "width"=>405},...
48
+ ], #post images
49
+ "from"=>{
50
+ "id"=>"000000000", #user's fbid
51
+ "name"=>"My name", #user's fbname
52
+ "picture"=>{"is_silhouette"=>false, "url"=>"http://www.example.com"} #user's profile picture
53
+ }
54
+ },....]
55
+ ```
56
+ **SecondHandler::FbSinglePost.get_post_basic Hash sample**
57
+ ```ruby
58
+ {
59
+ "id"=>"0000000_0000000", #feed id
60
+ "message"=>"OOOO",
61
+ "updated_time"=>"2015-11-08T00:00:00+0000",
62
+ "attachments"=>[
63
+ {"height"=>720, "src"=>"", "width"=>405},...
64
+ ], #post images
65
+ "from"=>{
66
+ "id"=>"000000000", #user's fbid
67
+ "name"=>"My name", #user's fbname
68
+ "picture"=>{"is_silhouette"=>false, "url"=>"http://www.example.com"} #user's profile picture
69
+ }
70
+ }
28
71
  ```
72
+ **SecondHandler::FbSinglePost.get_comment Hash sample**
73
+ ```ruby
74
+ [{
75
+ "id"=>"",
76
+ "message"=>"",
77
+ "created_time"=>"",
78
+ "from"=>{"id"=>"",
79
+ "name"=>"",
80
+ "picture"=>{"is_silhouette"=>false, "url"=>""}},
81
+ "like_count"=>0
82
+ },.....]
83
+
84
+
85
+ ```
86
+
87
+ CHANGELOG
88
+ ===
89
+ 2016-1-5 bump to v1.0.0
90
+ - add single post comment func
91
+ - modify `SecondHandler::FbGroupPost.get_content` output (no backward support!!!)
92
+
29
93
 
30
94
  ## License
31
95
 
@@ -0,0 +1,49 @@
1
+ module FbDataHandler
2
+ private
3
+ def attachment_helper (attach_hash, &func)
4
+
5
+ clean_data = []
6
+
7
+ if attach_hash && attach_hash["data"].first["media"] && attach_hash["data"].first["media"]["image"]
8
+ clean_data << attach_hash["data"].first["media"]["image"]
9
+ end
10
+ if attach_hash && attach_hash["data"].first["subattachments"] && attach_hash["data"].first["subattachments"]["data"]
11
+ attach_hash["data"].first["subattachments"]["data"].each do |item|
12
+ if item["media"] && item["media"]["image"]
13
+ clean_data << item["media"]["image"]
14
+ end
15
+ end
16
+ end
17
+ clean_data
18
+ end
19
+
20
+ def clean_post_content (item)
21
+ {
22
+ "id" => item["id"],
23
+ "message" => item["message"],
24
+ "updated_time" => item["updated_time"],
25
+ "attachments" => attachment_helper(item["attachments"]),
26
+ "from" => {
27
+ "id" => item["from"]["id"],
28
+ "name" => item["from"]["name"],
29
+ "picture" => item["from"]["picture"]["data"],
30
+ },
31
+
32
+ }
33
+ end
34
+
35
+ def clean_comment(item)
36
+ {
37
+ "id" => item["id"],
38
+ "message" => item["message"],
39
+ "created_time" => item["created_time"],
40
+ "from" => {
41
+ "id" => item["from"]["id"],
42
+ "name" => item["from"]["name"],
43
+ "picture" => item["from"]["picture"]["data"],
44
+ },
45
+ "like_count" => item["like_count"]
46
+
47
+ }
48
+ end
49
+ end
@@ -1,4 +1,4 @@
1
1
  module SecondHandler
2
- VERSION = '0.0.3'
3
- DATE = '2015-10-26'
2
+ VERSION = '1.0.0'
3
+ DATE = '2016-01-05'
4
4
  end
@@ -1,15 +1,54 @@
1
1
  require 'koala'
2
2
  require 'json'
3
+ require_relative 'fb_data_handler'
3
4
 
4
5
  module SecondHandler
6
+
7
+ class FbSinglePost
8
+ FB_POSTS_FIELDS = ["attachments{media,subattachments{media}}","id","message","updated_time","from{id,name,picture}", ]
9
+ include FbDataHandler
10
+
11
+
12
+ def initialize (access_token, post_id)
13
+ @graph = Koala::Facebook::API.new(access_token)
14
+ @post_id = post_id
15
+ end
16
+ def get_post_basic
17
+ @basic = @graph.get_object(@post_id, :fields => FB_POSTS_FIELDS)
18
+ clean_post_content(@basic)
19
+ end
20
+
21
+ def first_comment
22
+ @comment = @graph.get_connections(@post_id, "comments", :fields => ["from{name,id,picture}","id","message","created_time","like_count", ])
23
+ end
24
+
25
+ def get_comment
26
+ @comment.map do |single_comment|
27
+ clean_comment(single_comment)
28
+ end
29
+ end
30
+ def next_page_comment
31
+ @comment = @comment.next_page
32
+ end
33
+
34
+ def previous_page_comment
35
+ @comment = @comment.previous_page
36
+ end
37
+
38
+ end
39
+
5
40
  class FbGroupPost
41
+ include FbDataHandler
42
+
43
+ FB_POSTS_FIELDS = ["attachments{media,subattachments{media}}","id","message","updated_time","from{id,name,picture}", ]
44
+
6
45
  def initialize (access_token, group_id)
7
46
  @graph = Koala::Facebook::API.new(access_token)
8
47
  @group_id = group_id
9
48
  end
10
49
 
11
50
  def first_page
12
- @feed = @graph.get_connections(@group_id, "feed", :fields => ["attachments{media,subattachments{media}}","id","message","updated_time"])
51
+ @feed = @graph.get_connections(@group_id, "feed", :fields => FB_POSTS_FIELDS)
13
52
  end
14
53
 
15
54
  def next_page
@@ -21,32 +60,13 @@ module SecondHandler
21
60
  end
22
61
 
23
62
  # return feed of current page infomation , including image
24
- def get_content
25
- @feed.map do |item|
26
- tmp = Hash.new
27
- tmp["id"] = item["id"]
28
- tmp["message"] = item["message"]
29
- tmp["updated_time"] = item["updated_time"]
30
- tmp["attachments"] = attachment_helper(item["attachments"])
31
- tmp
32
- end
33
-
34
- end
35
-
36
- private
37
-
38
- def attachment_helper (attach_hash)
39
- ok_data = []
40
-
41
- if attach_hash && attach_hash["data"].first["media"]
42
- ok_data << attach_hash["data"].first["media"]
43
- end
44
- if attach_hash && attach_hash["data"].first["subattachments"] && attach_hash["data"].first["subattachments"]["data"]
45
- attach_hash["data"].first["subattachments"]["data"].each do |item|
46
- ok_data << item
47
- end
63
+ def get_content (&func)
64
+ @feed.map do |single_post|
65
+ clean_post_content(single_post)
48
66
  end
49
- ok_data
50
67
  end
68
+
69
+
51
70
  end
71
+
52
72
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: secondHandler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sheng Jung Wu
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-10-26 00:00:00.000000000 Z
14
+ date: 2016-01-05 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: minitest
@@ -62,11 +62,13 @@ executables:
62
62
  extensions: []
63
63
  extra_rdoc_files: []
64
64
  files:
65
+ - ".gitignore"
65
66
  - Gemfile
66
67
  - LICENSE
67
68
  - README.md
68
69
  - Rakefile
69
70
  - bin/second_handler
71
+ - lib/fb_data_handler.rb
70
72
  - lib/second_handler.rb
71
73
  - lib/second_handler/version.rb
72
74
  - secondhandler.gemspec