fetcher-microdata-facebook 0.0.1
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/Gemfile +22 -0
- data/Gemfile.lock +71 -0
- data/LICENSE +22 -0
- data/README.md +0 -0
- data/Rakefile +11 -0
- data/features/stepdefs/transalte_post_to_schema.rb +19 -0
- data/features/stepdefs/translate_user_to_schema.rb +14 -0
- data/features/support/env.rb +5 -0
- data/features/translate_post_to_schema.feature +213 -0
- data/features/translate_user_to_schema.feature +43 -0
- data/fetcher-microdata-facebook.gemspec +23 -0
- data/lib/fetcher-microdata-facebook.rb +12 -0
- data/lib/fetcher/microdata/article_small/facebook/coercer.rb +33 -0
- data/lib/fetcher/microdata/facebook/service.rb +22 -0
- data/lib/fetcher/microdata/facebook/version.rb +7 -0
- data/lib/fetcher/microdata/like/facebook/coercer.rb +13 -0
- data/lib/fetcher/microdata/person_user/facebook/coercer.rb +15 -0
- data/lib/fetcher/microdata/user_comments/facebook/coercer.rb +17 -0
- data/samples/agregate_rating_for_forward_steps +64 -0
- data/spec/comment.json +9 -0
- data/spec/fetcher/microdata/article_small/facebook/coercer_spec.rb +49 -0
- data/spec/fetcher/microdata/like/facebook/coercer_spec.rb +14 -0
- data/spec/fetcher/microdata/person_user/facebook/coercer_spec.rb +26 -0
- data/spec/fetcher/microdata/user_comments/facebook/coercer_spec.rb +30 -0
- data/spec/like.json +4 -0
- data/spec/microdata_like.json +16 -0
- data/spec/post.json +53 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/user.json +4 -0
- data/spec/viewer.json +4 -0
- metadata +157 -0
data/Gemfile
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# A sample Gemfile
|
2
|
+
source "https://rubygems.org"
|
3
|
+
|
4
|
+
|
5
|
+
|
6
|
+
source 'https://rubygems.org'
|
7
|
+
|
8
|
+
gemspec
|
9
|
+
|
10
|
+
gem "virtus"
|
11
|
+
gem "json"
|
12
|
+
gem "discoverer"
|
13
|
+
gem 'rake'
|
14
|
+
gem 'fetcher-microdata'
|
15
|
+
gem 'twitter'
|
16
|
+
gem 'symbolmatrix'
|
17
|
+
|
18
|
+
group :cucumber do
|
19
|
+
gem "rspec"
|
20
|
+
gem 'pry'
|
21
|
+
gem 'cucumber'
|
22
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
fetcher-microdata-facebook (0.0.0)
|
5
|
+
discoverer
|
6
|
+
fetcher-microdata
|
7
|
+
virtus
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
remote: https://rubygems.org/
|
12
|
+
specs:
|
13
|
+
backports (2.6.5)
|
14
|
+
builder (3.1.4)
|
15
|
+
coderay (1.0.8)
|
16
|
+
cucumber (1.2.1)
|
17
|
+
builder (>= 2.1.2)
|
18
|
+
diff-lcs (>= 1.1.3)
|
19
|
+
gherkin (~> 2.11.0)
|
20
|
+
json (>= 1.4.6)
|
21
|
+
diff-lcs (1.1.3)
|
22
|
+
discoverer (0.0.1)
|
23
|
+
virtus
|
24
|
+
faraday (0.8.4)
|
25
|
+
multipart-post (~> 1.1)
|
26
|
+
fetcher-microdata (0.0.13)
|
27
|
+
discoverer
|
28
|
+
gherkin (2.11.5)
|
29
|
+
json (>= 1.4.6)
|
30
|
+
json (1.7.5)
|
31
|
+
method_source (0.8.1)
|
32
|
+
multi_json (1.4.0)
|
33
|
+
multipart-post (1.1.5)
|
34
|
+
pry (0.9.10)
|
35
|
+
coderay (~> 1.0.5)
|
36
|
+
method_source (~> 0.8)
|
37
|
+
slop (~> 3.3.1)
|
38
|
+
rake (10.0.2)
|
39
|
+
rspec (2.12.0)
|
40
|
+
rspec-core (~> 2.12.0)
|
41
|
+
rspec-expectations (~> 2.12.0)
|
42
|
+
rspec-mocks (~> 2.12.0)
|
43
|
+
rspec-core (2.12.1)
|
44
|
+
rspec-expectations (2.12.0)
|
45
|
+
diff-lcs (~> 1.1.3)
|
46
|
+
rspec-mocks (2.12.0)
|
47
|
+
simple_oauth (0.1.9)
|
48
|
+
slop (3.3.3)
|
49
|
+
symbolmatrix (0.0.1)
|
50
|
+
twitter (4.4.0)
|
51
|
+
faraday (~> 0.8)
|
52
|
+
multi_json (~> 1.3)
|
53
|
+
simple_oauth (~> 0.1.6)
|
54
|
+
virtus (0.5.2)
|
55
|
+
backports (~> 2.6.1)
|
56
|
+
|
57
|
+
PLATFORMS
|
58
|
+
ruby
|
59
|
+
|
60
|
+
DEPENDENCIES
|
61
|
+
cucumber
|
62
|
+
discoverer
|
63
|
+
fetcher-microdata
|
64
|
+
fetcher-microdata-facebook!
|
65
|
+
json
|
66
|
+
pry
|
67
|
+
rake
|
68
|
+
rspec
|
69
|
+
symbolmatrix
|
70
|
+
twitter
|
71
|
+
virtus
|
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Fetcher
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
File without changes
|
data/Rakefile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require "pry"
|
2
|
+
|
3
|
+
Given /^the facebook post:$/ do |json_post|
|
4
|
+
@post = JSON.parse json_post
|
5
|
+
end
|
6
|
+
|
7
|
+
And /^the viewer:$/ do |json_viewer|
|
8
|
+
@viewer = JSON.parse json_viewer
|
9
|
+
end
|
10
|
+
|
11
|
+
When /^I convert it into schema\.org\/Article\/Small$/ do
|
12
|
+
@translated = Fetcher::Microdata::ArticleSmall.new :facebook, @post, @viewer
|
13
|
+
end
|
14
|
+
|
15
|
+
Then /^I should have post:$/ do |string|
|
16
|
+
@schema = JSON.parse string
|
17
|
+
binding.pry
|
18
|
+
@translated.to.hash.should == @schema
|
19
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require "pry"
|
2
|
+
|
3
|
+
Given /^the facebook user:$/ do |json_user|
|
4
|
+
@user = JSON.parse json_user
|
5
|
+
end
|
6
|
+
|
7
|
+
When /^I convert it into schema\.org\/Person\/User$/ do
|
8
|
+
@translated = Fetcher::Microdata::PersonUser.new :facebook, @user
|
9
|
+
end
|
10
|
+
|
11
|
+
Then /^I should have user:$/ do |string|
|
12
|
+
@schema = JSON.parse string
|
13
|
+
@translated.to.hash.should == @schema
|
14
|
+
end
|
@@ -0,0 +1,213 @@
|
|
1
|
+
Feature: Translate facebook to schema.org/Person/User + getfetcher.net/Item
|
2
|
+
|
3
|
+
In order to send a standardized-properties form of the facebook information
|
4
|
+
As a developer
|
5
|
+
I want to be able to convert from Facebook API to
|
6
|
+
schema.org based vocabulary
|
7
|
+
|
8
|
+
Scenario: Converting a json facebook post into a json schema
|
9
|
+
Given the facebook post:
|
10
|
+
|
11
|
+
"""
|
12
|
+
{
|
13
|
+
"id": "735576666_10151298637466667",
|
14
|
+
"from": {
|
15
|
+
"name": "Tomás Mehdi",
|
16
|
+
"id": "735576666"
|
17
|
+
},
|
18
|
+
"message": "Be ready for not be ready",
|
19
|
+
"type": "status",
|
20
|
+
"status_type": "mobile_status_update",
|
21
|
+
"created_time": "2012-10-27T15:18:35+0000",
|
22
|
+
"updated_time": "2012-10-27T15:45:12+0000",
|
23
|
+
"likes": {
|
24
|
+
"data": [
|
25
|
+
{
|
26
|
+
"name": "Nahuel García Ocampo",
|
27
|
+
"id": "536017463"
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"name": "Luis Suas",
|
31
|
+
"id": "1002769970"
|
32
|
+
},
|
33
|
+
{
|
34
|
+
"name": "Sol Laborde",
|
35
|
+
"id": "1060147124"
|
36
|
+
}
|
37
|
+
],
|
38
|
+
"count": 3
|
39
|
+
},
|
40
|
+
"comments": {
|
41
|
+
"data": [
|
42
|
+
{
|
43
|
+
"id": "735576666_10151298637466667_26116437",
|
44
|
+
"from": {
|
45
|
+
"name": "Facu Vivas",
|
46
|
+
"id": "1265409676"
|
47
|
+
},
|
48
|
+
"message": "ser o no ser? jaja",
|
49
|
+
"created_time": "2012-10-27T15:27:29+0000"
|
50
|
+
},
|
51
|
+
{
|
52
|
+
"id": "735576666_10151298637466667_26116661",
|
53
|
+
"from": {
|
54
|
+
"name": "Conrado Mader Blanco",
|
55
|
+
"id": "600129837"
|
56
|
+
},
|
57
|
+
"message": "che vos sabes mucha Inglé no?",
|
58
|
+
"created_time": "2012-10-27T15:45:12+0000",
|
59
|
+
"likes": 2
|
60
|
+
}
|
61
|
+
],
|
62
|
+
"count": 2
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
"""
|
67
|
+
And the viewer:
|
68
|
+
"""
|
69
|
+
{
|
70
|
+
"id": "735576666",
|
71
|
+
"name": "Tomás Mehdi"
|
72
|
+
}
|
73
|
+
"""
|
74
|
+
When I convert it into schema.org/Article/Small
|
75
|
+
Then I should have post:
|
76
|
+
|
77
|
+
"""
|
78
|
+
{
|
79
|
+
"type": [
|
80
|
+
"http://schema.org/Article/Small"
|
81
|
+
],
|
82
|
+
"properties": {
|
83
|
+
"Item#id": [
|
84
|
+
"735576666_10151298637466667"
|
85
|
+
],
|
86
|
+
"articleBody": [
|
87
|
+
"Be ready for not be ready"
|
88
|
+
],
|
89
|
+
"author": [
|
90
|
+
{
|
91
|
+
"type": [
|
92
|
+
"http://schema.org/Person/User"
|
93
|
+
],
|
94
|
+
"properties": {
|
95
|
+
"additionalType": [
|
96
|
+
"http://getfetcher.net/Item"
|
97
|
+
],
|
98
|
+
"Item#id": [
|
99
|
+
"735576666"
|
100
|
+
],
|
101
|
+
"name": [
|
102
|
+
"Tomás Mehdi"
|
103
|
+
]
|
104
|
+
}
|
105
|
+
}
|
106
|
+
],
|
107
|
+
"Item#viewer": [
|
108
|
+
{
|
109
|
+
"type": [
|
110
|
+
"http://schema.org/Person/User"
|
111
|
+
],
|
112
|
+
"properties": {
|
113
|
+
"additionalType": [
|
114
|
+
"http://getfetcher.net/Item"
|
115
|
+
],
|
116
|
+
"Item#id": [
|
117
|
+
"735576666"
|
118
|
+
],
|
119
|
+
"name": [
|
120
|
+
"Tomás Mehdi"
|
121
|
+
]
|
122
|
+
}
|
123
|
+
}
|
124
|
+
],
|
125
|
+
"UserComments": [
|
126
|
+
{
|
127
|
+
"type": [
|
128
|
+
"http://schema.org/UserComments"
|
129
|
+
],
|
130
|
+
"properties": {
|
131
|
+
"Item#id": [
|
132
|
+
"735576666_10151298637466667_26116437"
|
133
|
+
],
|
134
|
+
"commentText": [
|
135
|
+
"ser o no ser? jaja"
|
136
|
+
],
|
137
|
+
"creator": [
|
138
|
+
{
|
139
|
+
"type": [
|
140
|
+
"http://schema.org/Person/User"
|
141
|
+
],
|
142
|
+
"properties": {
|
143
|
+
"additionalType": [
|
144
|
+
"http://getfetcher.net/Item"
|
145
|
+
],
|
146
|
+
"Item#id": [
|
147
|
+
"1265409676"
|
148
|
+
],
|
149
|
+
"name": [
|
150
|
+
"Facu Vivas"
|
151
|
+
]
|
152
|
+
}
|
153
|
+
}
|
154
|
+
],
|
155
|
+
"commentTime": [
|
156
|
+
"2012-10-27T15:27:29+0000"
|
157
|
+
],
|
158
|
+
"url": [
|
159
|
+
"https://www.facebook.com/10151298637466667?comment_id=26116437"
|
160
|
+
]
|
161
|
+
}
|
162
|
+
},
|
163
|
+
{
|
164
|
+
"type": [
|
165
|
+
"http://schema.org/UserComments"
|
166
|
+
],
|
167
|
+
"properties": {
|
168
|
+
"Item#id": [
|
169
|
+
"735576666_10151298637466667_26116661"
|
170
|
+
],
|
171
|
+
"commentText": [
|
172
|
+
"che vos sabes mucha Inglé no?"
|
173
|
+
],
|
174
|
+
"creator": [
|
175
|
+
{
|
176
|
+
"type": [
|
177
|
+
"http://schema.org/Person/User"
|
178
|
+
],
|
179
|
+
"properties": {
|
180
|
+
"additionalType": [
|
181
|
+
"http://getfetcher.net/Item"
|
182
|
+
],
|
183
|
+
"Item#id": [
|
184
|
+
"600129837"
|
185
|
+
],
|
186
|
+
"name": [
|
187
|
+
"Conrado Mader Blanco"
|
188
|
+
]
|
189
|
+
}
|
190
|
+
}
|
191
|
+
],
|
192
|
+
"commentTime": [
|
193
|
+
"2012-10-27T15:45:12+0000"
|
194
|
+
],
|
195
|
+
"url": [
|
196
|
+
"https://www.facebook.com/10151298637466667?comment_id=26116661"
|
197
|
+
]
|
198
|
+
}
|
199
|
+
}
|
200
|
+
],
|
201
|
+
"dateCreated": [
|
202
|
+
"2012-10-27T15:18:35+0000"
|
203
|
+
],
|
204
|
+
"provider": [
|
205
|
+
"facebook"
|
206
|
+
]
|
207
|
+
}
|
208
|
+
}
|
209
|
+
"""
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
Feature: Translate facebook to schema.org/Person/User + getfetcher.net/Item
|
2
|
+
|
3
|
+
In order to send a standardized-properties form of the facebook information
|
4
|
+
As a developer
|
5
|
+
I want to be able to convert from Facebook API to
|
6
|
+
schema.org based vocabulary
|
7
|
+
|
8
|
+
Scenario: Converting a json facebook user into a json schema
|
9
|
+
Given the facebook user:
|
10
|
+
|
11
|
+
"""
|
12
|
+
{
|
13
|
+
"name": "Tomás Mehdi",
|
14
|
+
"id": "735576666"
|
15
|
+
}
|
16
|
+
|
17
|
+
"""
|
18
|
+
|
19
|
+
When I convert it into schema.org/Person/User
|
20
|
+
Then I should have user:
|
21
|
+
|
22
|
+
"""
|
23
|
+
{
|
24
|
+
"type": [
|
25
|
+
"http://schema.org/Person/User"
|
26
|
+
],
|
27
|
+
"properties": {
|
28
|
+
"additionalType": [
|
29
|
+
"http://getfetcher.net/Item"
|
30
|
+
],
|
31
|
+
"Item#id": [
|
32
|
+
"735576666"
|
33
|
+
],
|
34
|
+
"name": [
|
35
|
+
"Tomás Mehdi"
|
36
|
+
]
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
"""
|
41
|
+
|
42
|
+
|
43
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/fetcher/microdata/facebook/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ["Xavier Via","Tomas Mehdi"]
|
6
|
+
gem.email = ["xavier.via.canel@gmail.com", "tomymehdi@gmail.com"]
|
7
|
+
gem.description = %q{Fetcher Microdata adapter for Facebook}
|
8
|
+
gem.summary = %q{Fetcher Microdata adapter for Facebook}
|
9
|
+
gem.homepage = "http://github.com/Fetcher/fetcher-microdata-facebook"
|
10
|
+
|
11
|
+
gem.add_dependency 'discoverer'
|
12
|
+
gem.add_dependency 'virtus'
|
13
|
+
gem.add_dependency 'fetcher-microdata'
|
14
|
+
|
15
|
+
gem.add_development_dependency 'rspec'
|
16
|
+
|
17
|
+
gem.files = `git ls-files`.split($\)
|
18
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
19
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
20
|
+
gem.name = "fetcher-microdata-facebook"
|
21
|
+
gem.require_paths = ["lib"]
|
22
|
+
gem.version = Fetcher::Microdata::Facebook::VERSION
|
23
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'virtus'
|
2
|
+
require 'json'
|
3
|
+
require 'pry'
|
4
|
+
require 'fetcher-microdata'
|
5
|
+
require 'fetcher-microdata-facebook'
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
require 'fetcher/microdata/article_small/facebook/coercer'
|
10
|
+
require 'fetcher/microdata/user_comments/facebook/coercer'
|
11
|
+
require 'fetcher/microdata/like/facebook/coercer'
|
12
|
+
require 'fetcher/microdata/person_user/facebook/coercer'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Fetcher
|
2
|
+
class Microdata
|
3
|
+
class ArticleSmall
|
4
|
+
module Facebook
|
5
|
+
Coercer = proc { |post, viewer|
|
6
|
+
resp = {
|
7
|
+
:likes_type => "http://schema.org/AggregateRating/Likes",
|
8
|
+
:id => post["id"],
|
9
|
+
:comments => [],
|
10
|
+
:likes => [],
|
11
|
+
:articleBody => post["message"],
|
12
|
+
:dateCreated => post["created_time"],
|
13
|
+
:author => PersonUser.new(:facebook, post["from"]),
|
14
|
+
:likes_count => post["likes"]["count"],
|
15
|
+
:comments_count => post["comments"]["count"],
|
16
|
+
:viewer => PersonUser.new(:facebook, viewer),
|
17
|
+
:provider => ["facebook"]
|
18
|
+
}
|
19
|
+
i = 0
|
20
|
+
post["likes"]["data"].each do |like|
|
21
|
+
#resp[:likes].push Like.new :facebook, like
|
22
|
+
resp[:likes].push "like#{i}"
|
23
|
+
i = i + 1
|
24
|
+
end
|
25
|
+
post["comments"]["data"].each do |comment|
|
26
|
+
resp[:comments].push UserComments.new :facebook, comment
|
27
|
+
end
|
28
|
+
resp
|
29
|
+
}
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Fetcher
|
2
|
+
class Microdata
|
3
|
+
module Facebook
|
4
|
+
class Service
|
5
|
+
include Singleton
|
6
|
+
|
7
|
+
def created_at_to_timestamp created_at
|
8
|
+
year = created_at[-4..-1].to_i
|
9
|
+
month = created_at[4..6].downcase
|
10
|
+
day = created_at[8..9].to_i
|
11
|
+
|
12
|
+
time_fractioned = created_at[10..18].split ":"
|
13
|
+
hour = time_fractioned.shift.to_i
|
14
|
+
minute = time_fractioned.shift.to_i
|
15
|
+
second = time_fractioned.first.to_i
|
16
|
+
|
17
|
+
Time.gm(year, month, day, hour, minute, second).to_i
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Fetcher
|
2
|
+
class Microdata
|
3
|
+
class PersonUser
|
4
|
+
module Facebook
|
5
|
+
Coercer = proc { |original_tweet|
|
6
|
+
{
|
7
|
+
:additionalType => "http://getfetcher.net/Item",
|
8
|
+
:id => original_tweet["id"],
|
9
|
+
:name => original_tweet["name"]
|
10
|
+
}
|
11
|
+
}
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Fetcher
|
2
|
+
class Microdata
|
3
|
+
class UserComments
|
4
|
+
module Facebook
|
5
|
+
Coercer = proc { |comment|
|
6
|
+
{
|
7
|
+
:id => comment["id"],
|
8
|
+
:creator => PersonUser.new(:facebook, comment["from"]),
|
9
|
+
:commentText => comment["message"],
|
10
|
+
:likes_count => comment["likes"],
|
11
|
+
:commentTime => comment["created_time"]
|
12
|
+
}
|
13
|
+
}
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
agregate rating for forward steps
|
2
|
+
|
3
|
+
"aggregateRating": [
|
4
|
+
{
|
5
|
+
"type": [
|
6
|
+
"http://schema.org/AggregateRating/Likes"
|
7
|
+
],
|
8
|
+
"properties": {
|
9
|
+
"ratingCount": [
|
10
|
+
3
|
11
|
+
],
|
12
|
+
"author": [
|
13
|
+
{
|
14
|
+
"type": [
|
15
|
+
"http://schema.org/AggregateRating/Like"
|
16
|
+
],
|
17
|
+
"properties": {
|
18
|
+
"additionalType": [
|
19
|
+
"http://getfetcher.net/Item"
|
20
|
+
],
|
21
|
+
"http://getfetcher.net/Item#id": [
|
22
|
+
"536017463"
|
23
|
+
],
|
24
|
+
"name": [
|
25
|
+
"Nahuel García Ocampo"
|
26
|
+
]
|
27
|
+
}
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"type": [
|
31
|
+
"http://schema.org/AggregateRating/Like"
|
32
|
+
],
|
33
|
+
"properties": {
|
34
|
+
"additionalType": [
|
35
|
+
"http://getfetcher.net/Item"
|
36
|
+
],
|
37
|
+
"http://getfetcher.net/Item#id": [
|
38
|
+
"1002769970"
|
39
|
+
],
|
40
|
+
"name": [
|
41
|
+
"Luis Suas"
|
42
|
+
]
|
43
|
+
}
|
44
|
+
},
|
45
|
+
{
|
46
|
+
"type": [
|
47
|
+
"http://schema.org/AggregateRating/Like"
|
48
|
+
],
|
49
|
+
"properties": {
|
50
|
+
"additionalType": [
|
51
|
+
"http://getfetcher.net/Item"
|
52
|
+
],
|
53
|
+
"http://getfetcher.net/Item#id": [
|
54
|
+
"1060147124"
|
55
|
+
],
|
56
|
+
"name": [
|
57
|
+
"Sol Laborde"
|
58
|
+
]
|
59
|
+
}
|
60
|
+
}
|
61
|
+
]
|
62
|
+
}
|
63
|
+
}
|
64
|
+
],
|
data/spec/comment.json
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Fetcher::Microdata::ArticleSmall::Facebook::Coercer' do
|
4
|
+
context 'the adapter receives a valid post' do
|
5
|
+
before do
|
6
|
+
@post = JSON.parse File.read "spec/post.json"
|
7
|
+
@viewer = JSON.parse File.read "spec/viewer.json"
|
8
|
+
@translated_post = Fetcher::Microdata::ArticleSmall::Facebook::Coercer.call @post, @viewer
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should initialize the id" do
|
12
|
+
@translated_post[:id].should == @post["id"]
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should initialize the likes_type" do
|
16
|
+
@translated_post[:likes_type].should == "http://schema.org/AggregateRating/Likes"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should initialize the articleBody" do
|
20
|
+
@translated_post[:articleBody].should == @post["message"]
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should initialize the author with a instance of person user" do
|
24
|
+
@translated_post[:author].should be_an_instance_of Fetcher::Microdata::PersonUser
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should initialize the dateCreated post" do
|
28
|
+
@translated_post[:dateCreated].should == @post["created_time"]
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should initialize the likes count" do
|
32
|
+
@translated_post[:likes_count].should == @post["likes"]["count"]
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should initialize the comments count" do
|
36
|
+
@translated_post[:comments_count].should == @post["comments"]["count"]
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should initialize the viewer" do
|
40
|
+
@translated_post[:viewer].should be_an_instance_of Fetcher::Microdata::PersonUser
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should initialize the provider" do
|
44
|
+
@translated_post[:provider].should == ["facebook"]
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Fetcher::Microdata::Like::Facebook::Coercer' do
|
4
|
+
context 'the Coercer receives a valid like' do
|
5
|
+
before do
|
6
|
+
@like_ex = JSON.parse File.read "spec/like.json"
|
7
|
+
@like = ::Fetcher::Microdata::Like::Facebook::Coercer.call @like_ex
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should set #author with a instance of PersonUser :facebook' do
|
11
|
+
@like[:author].should be_an_instance_of Fetcher::Microdata::PersonUser
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Fetcher::Microdata::PersonUser::Facebook::Coercer' do
|
4
|
+
context 'the Coercer receives a valid person user' do
|
5
|
+
before do
|
6
|
+
@user_ex = JSON.parse File.read "spec/user.json"
|
7
|
+
@person_user = ::Fetcher::Microdata::PersonUser::Facebook::Coercer.call @user_ex
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should initialize the :name with 'name'" do
|
11
|
+
@person_user[:name].should == @user_ex["name"]
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should initialize the :id with 'id'" do
|
15
|
+
@person_user[:id].should == @user_ex["id"]
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should initialize the :nameadditionalType with 'nameadditionalType'" do
|
19
|
+
@person_user[:nameadditionalType].should == @user_ex["additionalType"]
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should initialize the :_type with '_type'" do
|
23
|
+
@person_user[:_type].should == @user_ex["_type"]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Fetcher::Microdata::UserComments::Facebook::Coercer' do
|
4
|
+
context 'the Coercer receives a valid comment' do
|
5
|
+
before do
|
6
|
+
@comment_ex = JSON.parse File.read "spec/comment.json"
|
7
|
+
@comment = ::Fetcher::Microdata::UserComments::Facebook::Coercer.call @comment_ex
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should initialize the id" do
|
11
|
+
@comment[:id].should == @comment_ex["id"]
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should initialize the creator" do
|
15
|
+
@comment[:creator].should be_an_instance_of Fetcher::Microdata::PersonUser
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should initialize the message" do
|
19
|
+
@comment[:commentText].should == @comment_ex["message"]
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should initialize the created time" do
|
23
|
+
@comment[:commentTime].should == @comment_ex["created_time"]
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should initialize the like count if there are likes" do
|
27
|
+
@comment[:likes_count].should == @comment_ex["likes"]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/spec/like.json
ADDED
data/spec/post.json
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
{
|
2
|
+
"id": "735576666_10151298637466667",
|
3
|
+
"from": {
|
4
|
+
"name": "Tomás Mehdi",
|
5
|
+
"id": "735576666"
|
6
|
+
},
|
7
|
+
"message": "Be ready for not be ready",
|
8
|
+
"type": "status",
|
9
|
+
"status_type": "mobile_status_update",
|
10
|
+
"created_time": "2012-10-27T15:18:35+0000",
|
11
|
+
"updated_time": "2012-10-27T15:45:12+0000",
|
12
|
+
"likes": {
|
13
|
+
"data": [
|
14
|
+
{
|
15
|
+
"name": "Nahuel García Ocampo",
|
16
|
+
"id": "536017463"
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"name": "Luis Suas",
|
20
|
+
"id": "1002769970"
|
21
|
+
},
|
22
|
+
{
|
23
|
+
"name": "Sol Laborde",
|
24
|
+
"id": "1060147124"
|
25
|
+
}
|
26
|
+
],
|
27
|
+
"count": 3
|
28
|
+
},
|
29
|
+
"comments": {
|
30
|
+
"data": [
|
31
|
+
{
|
32
|
+
"id": "735576666_10151298637466667_26116437",
|
33
|
+
"from": {
|
34
|
+
"name": "Facu Vivas",
|
35
|
+
"id": "1265409676"
|
36
|
+
},
|
37
|
+
"message": "ser o no ser? jaja",
|
38
|
+
"created_time": "2012-10-27T15:27:29+0000"
|
39
|
+
},
|
40
|
+
{
|
41
|
+
"id": "735576666_10151298637466667_26116661",
|
42
|
+
"from": {
|
43
|
+
"name": "Conrado Mader Blanco",
|
44
|
+
"id": "600129837"
|
45
|
+
},
|
46
|
+
"message": "che vos sabes mucha Inglé no?",
|
47
|
+
"created_time": "2012-10-27T15:45:12+0000",
|
48
|
+
"likes": 2
|
49
|
+
}
|
50
|
+
],
|
51
|
+
"count": 2
|
52
|
+
}
|
53
|
+
}
|
data/spec/spec_helper.rb
ADDED
data/spec/user.json
ADDED
data/spec/viewer.json
ADDED
metadata
ADDED
@@ -0,0 +1,157 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fetcher-microdata-facebook
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Xavier Via
|
9
|
+
- Tomas Mehdi
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2012-12-07 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: discoverer
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: virtus
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: fetcher-microdata
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: rspec
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
description: Fetcher Microdata adapter for Facebook
|
80
|
+
email:
|
81
|
+
- xavier.via.canel@gmail.com
|
82
|
+
- tomymehdi@gmail.com
|
83
|
+
executables: []
|
84
|
+
extensions: []
|
85
|
+
extra_rdoc_files: []
|
86
|
+
files:
|
87
|
+
- Gemfile
|
88
|
+
- Gemfile.lock
|
89
|
+
- LICENSE
|
90
|
+
- README.md
|
91
|
+
- Rakefile
|
92
|
+
- features/stepdefs/transalte_post_to_schema.rb
|
93
|
+
- features/stepdefs/translate_user_to_schema.rb
|
94
|
+
- features/support/env.rb
|
95
|
+
- features/translate_post_to_schema.feature
|
96
|
+
- features/translate_user_to_schema.feature
|
97
|
+
- fetcher-microdata-facebook.gemspec
|
98
|
+
- lib/fetcher-microdata-facebook.rb
|
99
|
+
- lib/fetcher/microdata/article_small/facebook/coercer.rb
|
100
|
+
- lib/fetcher/microdata/facebook/service.rb
|
101
|
+
- lib/fetcher/microdata/facebook/version.rb
|
102
|
+
- lib/fetcher/microdata/like/facebook/coercer.rb
|
103
|
+
- lib/fetcher/microdata/person_user/facebook/coercer.rb
|
104
|
+
- lib/fetcher/microdata/user_comments/facebook/coercer.rb
|
105
|
+
- samples/agregate_rating_for_forward_steps
|
106
|
+
- spec/comment.json
|
107
|
+
- spec/fetcher/microdata/article_small/facebook/coercer_spec.rb
|
108
|
+
- spec/fetcher/microdata/like/facebook/coercer_spec.rb
|
109
|
+
- spec/fetcher/microdata/person_user/facebook/coercer_spec.rb
|
110
|
+
- spec/fetcher/microdata/user_comments/facebook/coercer_spec.rb
|
111
|
+
- spec/like.json
|
112
|
+
- spec/microdata_like.json
|
113
|
+
- spec/post.json
|
114
|
+
- spec/spec_helper.rb
|
115
|
+
- spec/user.json
|
116
|
+
- spec/viewer.json
|
117
|
+
homepage: http://github.com/Fetcher/fetcher-microdata-facebook
|
118
|
+
licenses: []
|
119
|
+
post_install_message:
|
120
|
+
rdoc_options: []
|
121
|
+
require_paths:
|
122
|
+
- lib
|
123
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
+
none: false
|
125
|
+
requirements:
|
126
|
+
- - ! '>='
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
129
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
131
|
+
requirements:
|
132
|
+
- - ! '>='
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
requirements: []
|
136
|
+
rubyforge_project:
|
137
|
+
rubygems_version: 1.8.24
|
138
|
+
signing_key:
|
139
|
+
specification_version: 3
|
140
|
+
summary: Fetcher Microdata adapter for Facebook
|
141
|
+
test_files:
|
142
|
+
- features/stepdefs/transalte_post_to_schema.rb
|
143
|
+
- features/stepdefs/translate_user_to_schema.rb
|
144
|
+
- features/support/env.rb
|
145
|
+
- features/translate_post_to_schema.feature
|
146
|
+
- features/translate_user_to_schema.feature
|
147
|
+
- spec/comment.json
|
148
|
+
- spec/fetcher/microdata/article_small/facebook/coercer_spec.rb
|
149
|
+
- spec/fetcher/microdata/like/facebook/coercer_spec.rb
|
150
|
+
- spec/fetcher/microdata/person_user/facebook/coercer_spec.rb
|
151
|
+
- spec/fetcher/microdata/user_comments/facebook/coercer_spec.rb
|
152
|
+
- spec/like.json
|
153
|
+
- spec/microdata_like.json
|
154
|
+
- spec/post.json
|
155
|
+
- spec/spec_helper.rb
|
156
|
+
- spec/user.json
|
157
|
+
- spec/viewer.json
|