tdiary-contrib 4.1.2 → 4.1.3
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 +4 -4
- data/Gemfile +1 -0
- data/Gemfile.lock +13 -0
- data/lib/tdiary/contrib/version.rb +1 -1
- data/plugin/comment_pushbullet.rb +67 -0
- data/plugin/google_map.rb +15 -4
- data/plugin/profile.rb +196 -183
- data/plugin/tatsu_zine.rb +2 -3
- data/spec/fixtures/gravatar.json +1 -0
- data/spec/profile_spec.rb +11 -21
- metadata +6 -5
- data/spec/fixtures/friendfeed.xml +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dad562683f3ef04d5be651c704d813ae64c34aae
|
4
|
+
data.tar.gz: 17a8e5702e650f9e613fbcb964bc5205bbb11f0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 177f717e43f0448a05f5e923288e915f7e65e029422bbd12a16b7293b38e723a5223c80ad970d818fc1c043ca701582781b85617db3f0f6f3b5043a0c5f4925a
|
7
|
+
data.tar.gz: be994ffdfa8e0976b04730cc84858ab6542b50bc50369899c09f48d14c6f96ce601b8c5b139e24895006473231a3fa38653a216372fb0d5d6c262a9cbed72eaf
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -7,13 +7,19 @@ GEM
|
|
7
7
|
safe_yaml (~> 1.0.0)
|
8
8
|
diff-lcs (1.2.5)
|
9
9
|
docile (1.1.5)
|
10
|
+
json (1.8.3)
|
10
11
|
method_source (0.8.2)
|
12
|
+
mime-types (2.6.1)
|
11
13
|
multi_json (1.10.1)
|
14
|
+
netrc (0.10.3)
|
12
15
|
pry (0.10.1)
|
13
16
|
coderay (~> 1.1.0)
|
14
17
|
method_source (~> 0.8.1)
|
15
18
|
slop (~> 3.4)
|
16
19
|
rake (10.4.2)
|
20
|
+
rest-client (1.7.3)
|
21
|
+
mime-types (>= 1.16, < 3.0)
|
22
|
+
netrc (~> 0.7)
|
17
23
|
rspec (3.2.0)
|
18
24
|
rspec-core (~> 3.2.0)
|
19
25
|
rspec-expectations (~> 3.2.0)
|
@@ -27,6 +33,9 @@ GEM
|
|
27
33
|
diff-lcs (>= 1.2.0, < 2.0)
|
28
34
|
rspec-support (~> 3.2.0)
|
29
35
|
rspec-support (3.2.1)
|
36
|
+
ruby-pushbullet (0.1.3)
|
37
|
+
json
|
38
|
+
rest-client (~> 1.7.2)
|
30
39
|
safe_yaml (1.0.4)
|
31
40
|
simplecov (0.9.1)
|
32
41
|
docile (~> 1.1.0)
|
@@ -49,6 +58,10 @@ DEPENDENCIES
|
|
49
58
|
pry
|
50
59
|
rake
|
51
60
|
rspec
|
61
|
+
ruby-pushbullet
|
52
62
|
simplecov
|
53
63
|
tdiary (~> 4.1.0)
|
54
64
|
webmock
|
65
|
+
|
66
|
+
BUNDLED WITH
|
67
|
+
1.10.3
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# comment_pushbullet.rb
|
3
|
+
#
|
4
|
+
# メールの代わりにPushbulletサービスを使ってツッコミを知らせる
|
5
|
+
# プラグインを有効にした上で、Access Tokenを設定する
|
6
|
+
#
|
7
|
+
# Options:
|
8
|
+
# 設定画面から指定できるもの
|
9
|
+
# @options['comment_pushbullet.access_token']
|
10
|
+
# 自分のPushbulletアカウントのAccess Token https://www.pushbullet.com/account
|
11
|
+
# 設定画面から指定できるもの(ツッコミメールと共通)
|
12
|
+
# @options['comment_mail.enable']
|
13
|
+
# メールを送るかどうかを指定する。true(送る)かfalse(送らない)。
|
14
|
+
# 無指定時はfalse。
|
15
|
+
# @options['comment_mail.header']
|
16
|
+
# メールのSubjectに使う文字列。振り分け等に便利なように指定する。
|
17
|
+
# 実際のSubjectは「指定文字列:日付-1」のように、日付とコメント番号が
|
18
|
+
# 付く。ただし指定文字列中に、%に続く英字があった場合、それを
|
19
|
+
# 日付フォーマット指定を見なす。つまり「日付」の部分は
|
20
|
+
# 自動的に付加されなくなる(コメント番号は付加される)。
|
21
|
+
# 無指定時には空文字。
|
22
|
+
#
|
23
|
+
# tdiary.confでのみ指定できるもの:
|
24
|
+
#
|
25
|
+
# Copyright (c) 2015 TADA Tadashi <t@tdtds.jp>
|
26
|
+
# You can distribute this file under the GPL2 or any later version.
|
27
|
+
#
|
28
|
+
def comment_pushbullet
|
29
|
+
require 'pushbullet'
|
30
|
+
|
31
|
+
header = (@conf['comment_mail.header'] || '').dup
|
32
|
+
header << ":#{@conf.date_format}" unless /%[a-zA-Z%]/ =~ header
|
33
|
+
serial = @diaries[@date.strftime('%Y%m%d')].count_comments(true)
|
34
|
+
title = %Q|#{@date.strftime(header)}-#{serial} #{@comment.name}|
|
35
|
+
body = @comment.body.sub( /[\r\n]+\Z/, '' )
|
36
|
+
|
37
|
+
Pushbullet.api_token = @conf['comment_pushbullet.access_token']
|
38
|
+
Pushbullet::Contact.me.push_note(title, body)
|
39
|
+
end
|
40
|
+
|
41
|
+
add_update_proc do
|
42
|
+
comment_pushbullet if @mode == 'comment'
|
43
|
+
end
|
44
|
+
|
45
|
+
add_conf_proc( 'comment_mail', comment_mail_conf_label, 'tsukkomi' ) do
|
46
|
+
comment_mail_basic_setting
|
47
|
+
comment_mail_basic_html
|
48
|
+
end
|
49
|
+
|
50
|
+
add_conf_proc( 'comment_pushbullet', 'Pushbullet', 'tsukkomi' ) do
|
51
|
+
if @mode == 'saveconf' then
|
52
|
+
@conf['comment_pushbullet.access_token'], = @cgi.params['comment_pushbullet.access_token']
|
53
|
+
end
|
54
|
+
|
55
|
+
<<-HTML
|
56
|
+
<h3 class="subtitle">Pushbullet Access Token</h3>
|
57
|
+
<p>Access Token (see <a href="https://www.pushbullet.com/account">https://www.pushbullet.com/account</a>)</p>
|
58
|
+
<p><input name="comment_pushbullet.access_token" value="#{h @conf['comment_pushbullet.access_token']}" size="50"></p>
|
59
|
+
HTML
|
60
|
+
end
|
61
|
+
|
62
|
+
# Local Variables:
|
63
|
+
# mode: ruby
|
64
|
+
# indent-tabs-mode: t
|
65
|
+
# tab-width: 3
|
66
|
+
# ruby-indent-level: 3
|
67
|
+
# End:
|
data/plugin/google_map.rb
CHANGED
@@ -32,10 +32,21 @@ def google_map_common(params)
|
|
32
32
|
|
33
33
|
if feed?
|
34
34
|
require 'cgi'
|
35
|
-
|
36
|
-
url
|
37
|
-
|
38
|
-
|
35
|
+
|
36
|
+
url = nil
|
37
|
+
if params[:lat].nonzero? && params[:lon].nonzero?
|
38
|
+
query = "#{params[:lat]},#{params[:lon]}"
|
39
|
+
url = %Q|http://maps.google.com/maps?q=#{CGI::escape(query)}|
|
40
|
+
|
41
|
+
elsif params[:address] != nil
|
42
|
+
query = params[:address]
|
43
|
+
url = %Q|http://maps.google.com/maps?q=#{CGI::escape(query)}|
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
return %Q|<a href="#{url}">#{url}</a>| if url
|
48
|
+
|
49
|
+
end
|
39
50
|
return 'not support this environment.' if @conf.mobile_agent?
|
40
51
|
|
41
52
|
dom_id = "#{@gmap_date.strftime("%Y%m%d")}_#{@gmap_count}"
|
data/plugin/profile.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# profile(id[, service = :twitter])
|
6
6
|
# - id: user ID for profile service
|
7
7
|
# - service: profile service (default is :twitter)
|
8
|
-
# Choose from :github, :twitter, :
|
8
|
+
# Choose from :github, :twitter, :gravatar
|
9
9
|
#
|
10
10
|
# Copyright (C) 2009 by MATSUOKA Kohei < http://www.machu.jp/ >
|
11
11
|
# Distributed under the GPL.
|
@@ -17,191 +17,204 @@ require 'digest/md5'
|
|
17
17
|
require 'pstore'
|
18
18
|
|
19
19
|
module ::Profile
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
20
|
+
module Service
|
21
|
+
# base class for profile services
|
22
|
+
class Base
|
23
|
+
# default attributes
|
24
|
+
attr_reader :id
|
25
|
+
attr_reader :image
|
26
|
+
attr_reader :name
|
27
|
+
attr_reader :mail
|
28
|
+
attr_reader :description
|
29
|
+
attr_reader :link
|
30
|
+
|
31
|
+
# class instance variables
|
32
|
+
class << self
|
33
|
+
attr_reader :properties
|
34
|
+
attr_reader :endpoint_proc
|
35
|
+
end
|
36
|
+
|
37
|
+
# set property and xpath pair for parse XML document
|
38
|
+
def self.property(property, path)
|
39
|
+
@properties ||= {}
|
40
|
+
@properties[property] = path
|
41
|
+
end
|
42
|
+
|
43
|
+
# set endpoint proc (this proc is called by initialize method with id)
|
44
|
+
def self.endpoint(&block)
|
45
|
+
@endpoint_proc = block
|
46
|
+
end
|
47
|
+
|
48
|
+
def initialize(id, options = {})
|
49
|
+
@id = id
|
50
|
+
@options = options
|
51
|
+
|
52
|
+
if self.class.endpoint_proc
|
53
|
+
endpoint = self.class.endpoint_proc.call(id)
|
54
|
+
doc = fetch(endpoint)
|
55
|
+
parse(doc)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# get a XML document from endpoint and create REXML::Document instance
|
60
|
+
def fetch(endpoint)
|
61
|
+
timeout(5) do
|
62
|
+
open(endpoint) do |f|
|
63
|
+
doc = REXML::Document.new(f)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# parse XML document with properties
|
69
|
+
def parse(doc)
|
70
|
+
self.class.properties.each do |property, path|
|
71
|
+
if doc.elements[path]
|
72
|
+
value = doc.elements[path].text
|
73
|
+
instance_variable_set("@#{property}", value)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# github.com
|
80
|
+
class GitHub < Base
|
81
|
+
property :name, 'name'
|
82
|
+
property :mail, 'email'
|
83
|
+
endpoint {|id| "https://api.github.com/users/#{id}" }
|
84
|
+
|
85
|
+
def image
|
86
|
+
# "http://www.gravatar.com/avatar/#{Digest::MD5.hexdigest(@mail)}.jpg"
|
87
|
+
Gravatar.new(@mail, @options).image
|
88
|
+
end
|
89
|
+
|
90
|
+
def link
|
91
|
+
"http://github.com/#{@id}"
|
92
|
+
end
|
93
|
+
|
94
|
+
def fetch(endpoint)
|
95
|
+
require 'json'
|
96
|
+
timeout(5) do
|
97
|
+
doc = open(endpoint) {|f| JSON.parse(f.read) }
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def parse(doc)
|
102
|
+
self.class.properties.each do |property, key|
|
103
|
+
instance_variable_set("@#{property}", doc[key]) if doc[key]
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
# twitter.com
|
109
|
+
class Twitter < Base
|
110
|
+
property :name, '//user/name'
|
111
|
+
property :image, '//user/profile_image_url'
|
112
|
+
property :description, '//user/description'
|
113
|
+
endpoint {|id| "http://twitter.com/users/show/#{id}.xml" }
|
114
|
+
|
115
|
+
def link
|
116
|
+
"http://twitter.com/#{@id}"
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
# iddy.jp, for backward compatibility
|
121
|
+
class Iddy < Base
|
122
|
+
# dummy class
|
123
|
+
end
|
124
|
+
|
125
|
+
# gravatar.com
|
126
|
+
class Gravatar < Base
|
127
|
+
endpoint {|id|
|
128
|
+
hash = Digest::MD5.hexdigest(id.downcase)
|
129
|
+
"https://www.gravatar.com/#{hash}.json"
|
130
|
+
}
|
131
|
+
|
132
|
+
def image
|
133
|
+
size = @options[:size] ? "?s=#{@options[:size]}" : ""
|
134
|
+
"#{@image_base}#{size}"
|
135
|
+
end
|
136
|
+
|
137
|
+
def fetch(endpoint)
|
138
|
+
require 'json'
|
139
|
+
timeout(5) do
|
140
|
+
begin
|
141
|
+
doc = open(endpoint) {|f| JSON.parse(f.read) }
|
142
|
+
rescue RuntimeError => err
|
143
|
+
if err.message =~ /^redirection forbidden: /
|
144
|
+
endpoint.sub!(/www/, @options[:lang])
|
145
|
+
retry
|
146
|
+
else
|
147
|
+
raise
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def parse(doc)
|
154
|
+
instance_variable_set("@name", doc['entry'][0]['displayName'])
|
155
|
+
instance_variable_set("@mail", @id)
|
156
|
+
instance_variable_set("@image_base", doc['entry'][0]['thumbnailUrl'])
|
157
|
+
instance_variable_set("@link", doc['entry'][0]['profileUrl'])
|
158
|
+
instance_variable_set("@description", doc['entry'][0]['aboutMe'])
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
class Hatena < Base
|
163
|
+
def image
|
164
|
+
prefix = id[0..1]
|
165
|
+
"http://www.hatena.ne.jp/users/#{prefix}/#{id}/profile.gif"
|
166
|
+
end
|
167
|
+
|
168
|
+
def link
|
169
|
+
"http://www.hatena.ne.jp/#{id}/"
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
159
173
|
end
|
160
174
|
|
161
175
|
PROFILE_VERSION = '20090909'
|
162
176
|
|
163
177
|
def profile(id, service = :twitter, options = {})
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
html << %Q{ </a></div> }
|
178
|
+
html = ''
|
179
|
+
|
180
|
+
service_class = {
|
181
|
+
:twitter => Profile::Service::Twitter,
|
182
|
+
:github => Profile::Service::GitHub,
|
183
|
+
:gravatar => Profile::Service::Gravatar,
|
184
|
+
:hatena => Profile::Service::Hatena,
|
185
|
+
}[service.to_s.downcase.to_sym] || Profile::Service::Twitter
|
186
|
+
|
187
|
+
# TODO: create cache manager class
|
188
|
+
|
189
|
+
# cache = "#{@cache_path}/profile.yaml"
|
190
|
+
cache = "#{@cache_path}/profile.pstore"
|
191
|
+
profile = nil
|
192
|
+
# db = YAML::Store.new(cache)
|
193
|
+
db = PStore.new(cache)
|
194
|
+
db.transaction do
|
195
|
+
key = service_class.name
|
196
|
+
db[key] ||= {} # initialize db
|
197
|
+
updated = db[key][:updated]
|
198
|
+
if updated && (Time::now < updated + 60 * 60) && db[key][:version] == PROFILE_VERSION
|
199
|
+
# use cache
|
200
|
+
profile = db[key][:profile]
|
201
|
+
else
|
202
|
+
# get latest date and update cache
|
203
|
+
begin
|
204
|
+
profile = service_class.new(id, options.merge(lang: @conf.lang))
|
205
|
+
rescue Timeout::Error, StandardError
|
206
|
+
return html << %Q{ <div class="profile">no profile</div> }
|
207
|
+
end
|
208
|
+
db[key][:updated] = Time::now
|
209
|
+
db[key][:profile] = profile
|
210
|
+
db[key][:version] = PROFILE_VERSION
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
html << %Q{ <div class="profile"><a href="#{CGI.escapeHTML profile.link}"> }
|
215
|
+
html << %Q{ <span class="profile-image"><img src="#{CGI.escapeHTML profile.image}" alt="profile image"></span> } if profile.image
|
216
|
+
html << %Q{ <span class="profile-name">#{CGI.escapeHTML profile.name}</span> } if profile.name
|
217
|
+
html << %Q{ <span class="profile-mail">#{CGI.escapeHTML profile.mail}</span> } if profile.mail
|
218
|
+
html << %Q{ <span class="profile-description">#{CGI.escapeHTML profile.description}</span> } if profile.description
|
219
|
+
html << %Q{ </a></div> }
|
207
220
|
end
|
data/plugin/tatsu_zine.rb
CHANGED
@@ -36,9 +36,8 @@ def tatsu_zine( id, doc = nil )
|
|
36
36
|
doc ||= open( link ).read
|
37
37
|
title = doc.match(%r|<meta property="og:title" content="(.*)">|).to_a[1]
|
38
38
|
image = doc.match(%r|<meta property="og:image" content="(.*)">|).to_a[1]
|
39
|
-
price = doc.match(%r|<
|
40
|
-
|
41
|
-
author = doc.match(%r|<p class="author">(.*)</p>|).to_a[1]
|
39
|
+
price = doc.match(%r|<meta name="twitter:data2" content="(.*)JPY">|).to_a[1]
|
40
|
+
author = doc.match(%r|<meta name="twitter:data1" content="(.*)">|).to_a[1]
|
42
41
|
|
43
42
|
result = <<-EOS
|
44
43
|
<a class="amazon-detail" href="#{h link}"><span class="amazon-detail">
|
@@ -0,0 +1 @@
|
|
1
|
+
{"entry":[{"id":"7329339","hash":"3b3be63a4c2a439b013787725dfce802","requestHash":"3b3be63a4c2a439b013787725dfce802","profileUrl":"http:\/\/gravatar.com\/tdiary","preferredUsername":"tdiary","thumbnailUrl":"http:\/\/2.gravatar.com\/avatar\/3b3be63a4c2a439b013787725dfce802","photos":[{"value":"http:\/\/2.gravatar.com\/avatar\/3b3be63a4c2a439b013787725dfce802","type":"thumbnail"},{"value":"http:\/\/2.gravatar.com\/userimage\/7329339\/3b3be63a4c2a439b013787725dfce802"}],"profileBackground":{"color":"#e78736"},"name":{"givenName":"diary","familyName":"t","formatted":"tDiary"},"displayName":"tDiary","aboutMe":"The tDiary system","currentLocation":"JAPAN","emails":[{"primary":"true","value":"iHaveAn@email.com"}],"urls":[{"value":"http:\/\/www.tdiary.org","title":"tDiary"}]}]}
|
data/spec/profile_spec.rb
CHANGED
@@ -8,6 +8,7 @@ describe "Profile::Service" do
|
|
8
8
|
before do
|
9
9
|
require 'json'
|
10
10
|
allow_any_instance_of(Profile::Service::GitHub).to receive(:fetch).and_return(JSON.parse(File.read("spec/fixtures/github.json")))
|
11
|
+
allow_any_instance_of(Profile::Service::Gravatar).to receive(:fetch).and_return(JSON.parse(File.read("spec/fixtures/gravatar.json")))
|
11
12
|
|
12
13
|
# workaround for run spec on various environment.
|
13
14
|
require 'openssl'
|
@@ -20,7 +21,7 @@ describe "Profile::Service" do
|
|
20
21
|
it "should include name, mail, image properties" do
|
21
22
|
expect(@profile.name).to eq("Scott Chacon")
|
22
23
|
expect(@profile.mail).to eq("schacon@gmail.com")
|
23
|
-
expect(@profile.image).to eq("http://
|
24
|
+
expect(@profile.image).to eq("http://2.gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802?s=40")
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
@@ -39,30 +40,19 @@ describe "Profile::Service" do
|
|
39
40
|
end
|
40
41
|
end
|
41
42
|
|
42
|
-
describe "FriendFeed" do
|
43
|
-
before do
|
44
|
-
allow_any_instance_of(Profile::Service::FriendFeed).to receive(:fetch).and_return(REXML::Document.new(File.read("spec/fixtures/friendfeed.xml")))
|
45
|
-
|
46
|
-
# http://friendfeed.com/api/documentation#summary
|
47
|
-
@profile = Profile::Service::FriendFeed.new("bret")
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should include name, description, image properties" do
|
51
|
-
expect(@profile.name).to eq("Bret Taylor")
|
52
|
-
expect(@profile.description).to eq("Ex-CTO of Facebook. Previously co-founder and CEO of FriendFeed. Programmer, food lover.")
|
53
|
-
expect(@profile.image).to eq("http://friendfeed-api.com/v2/picture/bret")
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
43
|
describe "Gravatar" do
|
58
|
-
# http://ja.gravatar.com/site/implement/
|
44
|
+
# http://ja.gravatar.com/site/implement/hash/
|
59
45
|
|
60
46
|
before do
|
47
|
+
require 'json'
|
48
|
+
allow_any_instance_of(Profile::Service::Gravatar).to receive(:fetch).and_return(JSON.parse(File.read("spec/fixtures/gravatar.json")))
|
49
|
+
|
61
50
|
@profile = Profile::Service::Gravatar.new("iHaveAn@email.com")
|
62
51
|
end
|
63
|
-
|
64
|
-
|
65
|
-
expect(@profile.
|
52
|
+
it "should include name, mail, image properties" do
|
53
|
+
expect(@profile.name).to eq("tDiary")
|
54
|
+
expect(@profile.mail).to eq("iHaveAn@email.com")
|
55
|
+
expect(@profile.image).to eq("http://2.gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802")
|
66
56
|
end
|
67
57
|
|
68
58
|
context 'with options' do
|
@@ -71,7 +61,7 @@ describe "Profile::Service" do
|
|
71
61
|
end
|
72
62
|
|
73
63
|
it "should specify size option" do
|
74
|
-
expect(@profile.image).to eq("http://
|
64
|
+
expect(@profile.image).to eq("http://2.gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802?s=40")
|
75
65
|
end
|
76
66
|
end
|
77
67
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tdiary-contrib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- tDiary contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tdiary
|
@@ -190,6 +190,7 @@ files:
|
|
190
190
|
- plugin/code-prettify.rb
|
191
191
|
- plugin/coderay.rb
|
192
192
|
- plugin/coderwall.rb
|
193
|
+
- plugin/comment_pushbullet.rb
|
193
194
|
- plugin/datepicker.rb
|
194
195
|
- plugin/day2section.rb
|
195
196
|
- plugin/del_footer.rb
|
@@ -329,8 +330,8 @@ files:
|
|
329
330
|
- spec/apple_webclip_spec.rb
|
330
331
|
- spec/fixtures/flickr/5950109223.flickr.photos.getInfo.xml
|
331
332
|
- spec/fixtures/flickr/5950109223.flickr.photos.getSizes.xml
|
332
|
-
- spec/fixtures/friendfeed.xml
|
333
333
|
- spec/fixtures/github.json
|
334
|
+
- spec/fixtures/gravatar.json
|
334
335
|
- spec/fixtures/my_hotentry/entrylist-empty.xml
|
335
336
|
- spec/fixtures/my_hotentry/entrylist.xml
|
336
337
|
- spec/fixtures/twitter.xml
|
@@ -463,7 +464,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
463
464
|
version: '0'
|
464
465
|
requirements: []
|
465
466
|
rubyforge_project:
|
466
|
-
rubygems_version: 2.
|
467
|
+
rubygems_version: 2.4.5
|
467
468
|
signing_key:
|
468
469
|
specification_version: 4
|
469
470
|
summary: tDiary contributions package
|
@@ -471,8 +472,8 @@ test_files:
|
|
471
472
|
- spec/apple_webclip_spec.rb
|
472
473
|
- spec/fixtures/flickr/5950109223.flickr.photos.getInfo.xml
|
473
474
|
- spec/fixtures/flickr/5950109223.flickr.photos.getSizes.xml
|
474
|
-
- spec/fixtures/friendfeed.xml
|
475
475
|
- spec/fixtures/github.json
|
476
|
+
- spec/fixtures/gravatar.json
|
476
477
|
- spec/fixtures/my_hotentry/entrylist-empty.xml
|
477
478
|
- spec/fixtures/my_hotentry/entrylist.xml
|
478
479
|
- spec/fixtures/twitter.xml
|
@@ -1,2 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?>
|
2
|
-
<feed><sup_id>44123b23</sup_id><description>Ex-CTO of Facebook. Previously co-founder and CEO of FriendFeed. Programmer, food lover.</description><type>user</type><id>bret</id><name>Bret Taylor</name><entry><body>FriendFeed Blog: Ben Darnell joins FriendFeed: Ben++! - <a rel="nofollow" href="http://blog.friendfeed.com/2009/07/ben-darnell-joins-friendfeed-ben.html" title="http://blog.friendfeed.com/2009/07/ben-darnell-joins-friendfeed-ben.html">http://blog.friendfeed.com/2009...</a></body><via><url>http://friendfeed.com/share/bookmarklet</url><name>Bookmarklet</name></via><from><type>user</type><name>Bret Taylor</name><id>bret</id></from><thumbnail><url>http://m.friendfeed-media.com/d8a3d0cffc2d534fb6c7e87912928dd4ee8695b1</url><width>109</width><link>http://blog.friendfeed.com/2009/07/ben-darnell-joins-friendfeed-ben.html</link><height>175</height></thumbnail><url>http://friendfeed.com/friendfeed-news/c970e279/friendfeed-blog-ben-darnell-joins</url><comment><date>2009-07-27T22:52:09Z</date><body>Welcome, Ben!</body><from><type>user</type><id>kfury</id><name>Kevin Fox</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/affd43519b134e2f8b0175f97267affd</id></comment><comment><date>2009-07-27T22:52:53Z</date><body>Right on! Congrats, Ben.</body><from><type>user</type><id>micahwittman</id><name>Micah</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/3ae682d1abd74d9cbec58d8614d34c9f</id></comment><comment><date>2009-07-27T22:54:13Z</date><body>Congrats Ben! Also, congrats to FF you are lucky to have him!</body><from><type>user</type><id>shellen</id><name>Jason Shellen</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/a297cd5ec49d4196855bd042dbb8ae98</id></comment><comment><date>2009-07-27T23:14:34Z</date><body>Data storage and scalability rock. :)</body><from><type>user</type><id>louisgray</id><name>Louis Gray</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/0c562741868248cd80fe1b70c041fe64</id></comment><comment><date>2009-07-27T23:42:50Z</date><body>Ben's feed is here: <a href="http://friendfeed.com/bdarnell">http://friendfeed.com/bdarnell</a></body><from><type>user</type><name>Bret Taylor</name><id>bret</id></from><id>e/c970e27954f349869b58d30a2b75631a/c/31a62c1498c446c090ed63594205c226</id></comment><comment><date>2009-07-27T23:51:54Z</date><body>Congrats, Ben! :-)</body><from><type>user</type><id>koltregaskes</id><name>Kol Tregaskes</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/e79d0783d7b347a88f3905b722f5d776</id></comment><comment><date>2009-07-28T00:17:50Z</date><body>Yeah Ben!!!</body><from><type>user</type><id>phoenix</id><name>Rachel Lea Fox</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/28ca4607a72c4289ab196230d03e6f74</id></comment><comment><date>2009-07-28T00:41:58Z</date><body>so i finally get my answer to this :) <a href="http://friendfeed.com/chris/3870e6df/v-excited-about-my-friend-new-job-his" title="http://friendfeed.com/chris/3870e6df/v-excited-about-my-friend-new-job-his">http://friendfeed.com/chris...</a></body><from><type>user</type><id>parislemon</id><name>MG Siegler</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/0dce0a67de704224b0215da71a2ba408</id></comment><comment><date>2009-07-28T00:44:52Z</date><body>Yeah, sorry I couldn't respond to that one before. :-)</body><from><type>user</type><id>kfury</id><name>Kevin Fox</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/2d9ae52ed9d942f988a18a028d4dc215</id></comment><comment><date>2009-07-28T01:01:55Z</date><body>well i be darned .... we now can rejoice, since fast paced additions to already good product are surely fastly coming about off the feedpipe ... it'l be a hectic season of finest upgrades ... I'm sure they'l start with keyboard shortcutze. ... I mean Google Reader rules on that. Intelligent to the extreme. ..Google.com, on the other hand - are we sleeping? .. not even &quot;/&quot; ??.. and that is the first page on the planet! .. i'l be darned. ..... then, lets boost them blogging facilities ! ... i mean, how hard internet programming could be ???</body><from><type>user</type><id>petrbuben</id><name>pb:</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/c17c8d9235a34d238c3ab4376f1b84ab</id></comment><comment><date>2009-07-28T01:21:05Z</date><body>Congrats Ben! Totally agree with Jason. Our latest project wouldn't have become feasible without Ben -- I'm just so glad we managed to get a fraction of his time before he left! :)</body><from><type>user</type><id>stong</id><name>Simon</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/e7e1b7c2bcbc4c3cb9c112238fb41108</id></comment><comment><date>2009-07-28T02:40:46Z</date><body>Congratulations, Ben! You're joining an awesome team.</body><from><type>user</type><id>abouey</id><name>Anne Bouey</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/c0428e7432994c73b40365644bf22f7e</id></comment><comment><date>2009-07-28T03:31:25Z</date><body>Woohoo! Another Googler :)</body><from><type>user</type><id>timhoeck</id><name>Tim Hoeck</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/14daa1eeb6f043b1b58f2213e75971f6</id></comment><comment><date>2009-07-28T03:59:39Z</date><body>Congrats, you are now a &quot;big company&quot;! ;))))</body><from><type>user</type><id>yogar</id><name>K.D.</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/9d52f70158314758a604daad75732657</id></comment><comment><date>2009-07-28T06:44:21Z</date><body>That's not my picture! They got the picture wrong! In fact, I didn't get the letter of hire either. :( Oh, Hi there, Ben...if that's your real name. ;)</body><from><type>user</type><id>joshhaley</id><private>True</private><name>Josh Haley</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/531163c5e9e34b9f92c0db5f9d3888c6</id></comment><comment><date>2009-07-28T07:03:07Z</date><body>Good luck Ben! With you our preferred service will go more interesting</body><via><url>http://www.fftogo.com/</url><name>fftogo</name></via><from><type>user</type><id>postoditacco</id><private>True</private><name>Roberto</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/d2aeb1623ed14f089dc567f50f2c418c</id></comment><comment><date>2009-07-28T10:13:27Z</date><body>you're building a friendfeed army there :-)</body><from><type>user</type><id>dobata</id><name>Dobromir Hadzhiev</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/81b72085bac844868ac7321a6d6ebf07</id></comment><comment><date>2009-07-28T10:50:24Z</date><body>Congrats</body><from><type>user</type><id>portakal</id><name>Özkan Altuner</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/c04066a9eec842508018999185260fd4</id></comment><comment><date>2009-07-28T12:42:29Z</date><body>Nice, any former Google Reader-er is a friend of mine.</body><from><type>user</type><id>mikereynolds</id><name>Mike Reynolds</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/833416de1ee14f3a88eb25b3a7ec21cc</id></comment><comment><date>2009-07-28T13:35:08Z</date><body>gratz Ben!</body><from><type>user</type><id>timepilot</id><name>timepilot</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/b9d20666d611497abf9be5213eb15b16</id></comment><comment><date>2009-07-28T18:09:12Z</date><body>Welcome Bret!</body><from><type>user</type><id>jamessmith24</id><name>Michael_techie</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/04cdf733ae664d1f853698aa70090a42</id></comment><comment><date>2009-08-10T20:14:31Z</date><body>So, Facebook...?</body><from><type>user</type><id>dpritchett</id><private>True</private><name>Daniel J. Pritchett</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/4c811104219a47d0be72b60a46493336</id></comment><comment><date>2009-08-10T21:16:06Z</date><body>Poor Ben Darnell. The last to enter are always the first to leave in mergers.</body><from><type>user</type><id>beersage</id><name>beersage</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/d6c86c49e7a84536821f3627f3debd07</id></comment><comment><date>2009-08-11T06:49:41Z</date><body>Hiring new staff while in secret acquisition talks, not exactly classy guys. I hope Ben knew what he was getting into</body><from><type>user</type><id>dalziel</id><name>Glenn Slaven</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/7858bb2711894dc7ba792ac22a369c4b</id></comment><comment><date>2009-08-14T05:21:51Z</date><body>Why on earth does he use the Duck Hunt theme?</body><from><type>user</type><id>vzx</id><name>Vezquex</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/99acd29f314b4d9d821866b5d85770bc</id></comment><comment><date>2009-08-14T05:23:45Z</date><body>I don't know.. but it is awesome! :)</body><from><type>user</type><id>timhoeck</id><name>Tim Hoeck</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/bed22ee3baa84233a2a54a25d26e1756</id></comment><comment><date>2012-01-30T23:16:12Z</date><body>Wow, looks like somebody bumped this!</body><from><type>user</type><id>kfury</id><name>Kevin Fox</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/c52b519e6cb04a268f76c9ecb84b0be1</id></comment><comment><date>2012-01-30T23:21:48Z</date><body>I think there were a bunch of spam comments made to some 2009-era posts by FF employees. For some reason even after the spam is nuked, the post stays bumped.</body><from><type>user</type><id>zeigen</id><name>Stephen Mack</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/0ebcf885818a442bbf773526e4927268</id></comment><comment><date>2012-01-30T23:23:23Z</date><body>Yes, I blocked a spammer that was bumping old posts about FF themes and what not.</body><from><type>user</type><id>zoblue</id><name>Zulema ❧ spicy cocoa tart</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/18fcc8e1b02f46fc8a21589681cf0b92</id></comment><comment><date>2012-01-30T23:26:01Z</date><body>OH HAI!</body><from><type>user</type><id>cstechcast</id><name>Eric - Drop That Beat</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/244f5398cd4b4d4b9ca344fe66509ca9</id></comment><comment><date>2012-01-30T23:30:29Z</date><body>Well, let's see this as an opportunity to raise a virtual glass to Ben and FriendFeed-that-was!</body><from><type>user</type><id>kfury</id><name>Kevin Fox</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/5afdbcf261d047b392bed56298492e55</id></comment><comment><date>2012-01-30T23:32:55Z</date><body>It probably had something to do with the Tornado 2.2 release. I noticed Ben was the one who posted about the release on HN earlier. Edit: Or it could have just been a spammer. *shrugs*</body><from><type>user</type><id>jimminy</id><private>True</private><name>Jimminy, CoG of FF</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/93fc5948d22d4e469ca400e41327b48b</id></comment><comment><date>2012-01-31T01:17:40Z</date><body>I don't think it had anything to do with the tornado release - a spammer bumped a bunch of Bret's old posts today.</body><from><type>user</type><id>bdarnell</id><name>Ben Darnell</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/2e2bccd6de854ebd8ed345bb15236f5c</id></comment><comment><date>2012-05-07T17:34:07Z</date><body>Here, let me save future spammers some time: Hello my name is ____ and I am an attractive young ____ _____ and I would like to contact with you so that together you and I can ___ with ____ while _____ in a highly ____ manner. Please to be responding as soon as is practical. Without your help, the _____ in U.S. dollars will go unclaimed, and the herbal ______ remedy will wither and die. Yours in all urgent seriousness, _____.</body><from><type>user</type><id>zeigen</id><name>Stephen Mack</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/7eed38db1bb44c3d90ce6a817ae8c1f6</id></comment><comment><date>2012-05-09T03:10:07Z</date><body>:D, Stephen!</body><from><type>user</type><id>abouey</id><name>Anne Bouey</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/f349034ca1804b3388ca2804156887a3</id></comment><comment><date>2012-08-21T14:40:59Z</date><body>so sweet))lol</body><from><type>user</type><id>solncee</id><name>solncee</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/9ea20c4da85f4c539e02d6e24ac94f45</id></comment><comment><date>2012-09-02T08:06:01Z</date><body>Awesome Photo :)</body><from><type>user</type><id>adiprcike</id><name>Adi Prcike</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/53cbf054f1b446fe8c473ef103d101ae</id></comment><comment><date>2012-09-03T01:06:48Z</date><body>Which shows up more, this pic or the Asian gentlemen on the beach?</body><via><url>http://friendfeed.com/about/tools</url><name>iPhone</name></via><from><type>user</type><id>zeigen</id><name>Stephen Mack</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/21725041bf364346840c39853efa3829</id></comment><comment><date>2012-09-14T15:39:14Z</date><body>bret neler oluyor dostum? kardeşi kardeşe kırdıracaksın canım ülkemde!!! işinin başına dön lütfen..</body><from><type>user</type><id>aynebilm</id><name>aynebilim</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/4d3788ce9afb420fb95c25ee5ae2d2da</id></comment><comment><date>2012-09-14T16:03:55Z</date><body>testa di cazzo se arcasca tutto te veniamo a cercà e non saremo teneri come i musulmani</body><from><type>user</type><id>bonzo</id><private>True</private><name>Francesco M.</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/63f44ef4d4c7481187d0a199eae11a7c</id></comment><comment><date>2012-09-14T16:17:29Z</date><body>kime dedin onu francesco?</body><from><type>user</type><id>aynebilm</id><name>aynebilim</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/9298bbd497ff49699e6bdf9f23f7809e</id></comment><comment><date>2012-09-14T16:33:20Z</date><body>Bence de Friendfeede sahip çıksın artık...</body><from><type>user</type><id>koleksiyoner</id><name>koleksiyoner</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/890dfb635e734e2f9d0e68fc2ac806da</id></comment><comment><date>2012-09-14T17:47:38Z</date><body>Welcome, Ben!</body><from><type>user</type><id>kfury</id><name>Kevin Fox</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/ce9ad2c73c784595929fe89601aab957</id></comment><comment><date>2012-09-14T17:54:48Z</date><body><a href="http://friendfeed.com/search?q=%23timewarp">#timewarp</a></body><from><type>user</type><id>worldofhiglet</id><private>True</private><name>WoH: Fairy Surreal</name></from><id>e/c970e27954f349869b58d30a2b75631a/c/29a9cf0c27cd42628fe5192c349c4944</id></comment><to><type>user</type><name>Bret's feed</name><id>bret</id></to><to><type>group</type><id>friendfeed-news</id><name>FriendFeed News</name></to><like><date>2012-09-27T18:45:20Z</date><from><type>user</type><id>gerantamala</id><name>Tamala Geran</name></from></like><like><date>2012-09-17T05:12:36Z</date><from><type>user</type><id>thelarimarshop</id><name>thelarimarshop</name></from></like><like><date>2012-09-14T17:59:05Z</date><from><type>user</type><id>jobbler</id><private>True</private><name>Joe Silence</name></from></like><like><date>2012-09-14T16:07:47Z</date><from><type>user</type><id>kkapp</id><name>Alex Kapranoff</name></from></like><like><date>2012-09-14T15:39:22Z</date><from><type>user</type><id>aynebilm</id><name>aynebilim</name></from></like><like><date>2012-09-03T09:46:26Z</date><from><type>user</type><id>nganguemvictor</id><private>True</private><name>nganguem victor</name></from></like><like><date>2012-08-11T14:14:57Z</date><from><type>user</type><id>goroprask</id><name>Goro Prask</name></from></like><like><date>2012-06-29T07:02:56Z</date><from><type>user</type><id>ageuferraz</id><name>Ageu Ferraz</name></from></like><like><date>2012-06-05T08:53:02Z</date><from><type>user</type><id>hewoilsneed</id><name>hewoilsneed</name></from></like><like><date>2012-06-04T06:39:34Z</date><from><type>user</type><id>florrygrip</id><name>florrygrip</name></from></like><like><date>2012-05-24T00:30:59Z</date><from><type>user</type><id>hcivelek</id><name>HasanCivelek</name></from></like><like><date>2012-05-07T17:42:47Z</date><from><type>user</type><id>worldofhiglet</id><private>True</private><name>WoH: Fairy Surreal</name></from></like><like><date>2012-05-07T17:38:23Z</date><from><type>user</type><id>jeffdoug</id><private>True</private><name>Jeff (Team マクダジ )</name></from></like><like><date>2012-05-02T11:57:09Z</date><from><type>user</type><id>angelramon</id><name>Angel</name></from></like><like><date>2012-04-30T08:21:22Z</date><from><type>user</type><id>sogoo</id><name>/sg</name></from></like><like><date>2012-04-24T06:17:16Z</date><from><type>user</type><id>alidafeian</id><private>True</private><name>علی دافعیان</name></from></like><like><date>2012-04-24T06:11:00Z</date><from><type>user</type><id>amitkumar47</id><name>amit Kumar</name></from></like><like><date>2012-04-20T21:45:37Z</date><from><type>user</type><id>polymath22</id><private>True</private><name>polymath22</name></from></like><like><date>2012-04-14T19:49:34Z</date><from><type>user</type><id>cy6erbr4in</id><name>Cy6erBr4in</name></from></like><like><date>2012-04-02T10:37:30Z</date><from><type>user</type><id>lisalenea</id><private>True</private><name>Lisa L. Seifert | FHG™</name></from></like><like><date>2012-03-24T10:32:02Z</date><from><type>user</type><id>aidr86</id><private>True</private><name>aid@</name></from></like><like><date>2012-02-20T06:40:47Z</date><from><type>user</type><id>mitchnielsen</id><name>Mitch Nielsen</name></from></like><like><date>2012-02-14T16:09:31Z</date><from><type>user</type><id>katiao</id><name>инопланетянин со стажем</name></from></like><like><date>2012-02-14T14:07:33Z</date><from><type>user</type><id>adamspring</id><name>Adam Spring</name></from></like><like><date>2012-01-31T00:46:09Z</date><from><type>user</type><id>kmohr25</id><name>Kevin Mohr</name></from></like><like><date>2012-01-30T23:32:13Z</date><from><type>user</type><id>jimminy</id><private>True</private><name>Jimminy, CoG of FF</name></from></like><like><date>2009-12-25T20:16:40Z</date><from><type>user</type><id>bebekvegebelik</id><name>"Serhat Ozan"</name></from></like><like><date>2009-08-11T12:11:30Z</date><from><type>user</type><id>iphigenie</id><name>Iphigenie</name></from></like><like><date>2009-08-11T06:53:06Z</date><from><type>user</type><id>mortonfox</id><name>Morton Fox</name></from></like><like><date>2009-08-11T05:28:21Z</date><from><type>user</type><id>yogamama</id><name>amelia arapoff</name></from></like><like><date>2009-08-10T22:27:13Z</date><from><type>user</type><id>vmlemon</id><name>Tyson Key</name></from></like><like><date>2009-08-10T22:15:39Z</date><from><type>user</type><id>kierancrotty</id><name>Kieran Crotty</name></from></like><like><date>2009-08-10T21:31:59Z</date><from><type>user</type><id>angusb</id><name>Angus Burton</name></from></like><like><date>2009-08-10T21:20:26Z</date><from><type>user</type><id>berkeleyisbetter</id><name>Kelly</name></from></like><like><date>2009-08-10T20:14:47Z</date><from><type>user</type><id>svartling</id><name>Svartling</name></from></like><like><date>2009-08-01T09:35:59Z</date><from><type>user</type><id>tandriamirado</id><name>Thierry R. Andriamirado</name></from></like><like><date>2009-07-28T20:14:18Z</date><from><type>user</type><id>durukanduru</id><name>Durukan Duru</name></from></like><like><date>2009-07-28T19:45:16Z</date><from><type>user</type><id>silas216</id><name>Steven Perez</name></from></like><like><date>2009-07-28T18:54:10Z</date><from><type>user</type><id>v9y</id><private>True</private><name>Vinay | विनय</name></from></like><like><date>2009-07-28T18:30:17Z</date><from><type>user</type><id>stanjourdan</id><name>stanjourdan</name></from></like><like><date>2009-07-28T18:12:39Z</date><from><type>user</type><id>kamath</id><name>The Fat Oracle</name></from></like><like><date>2009-07-28T18:00:07Z</date><from><type>user</type><id>minusone</id><name>minus-one</name></from></like><like><date>2009-07-28T16:40:19Z</date><from><type>user</type><id>oflaherty</id><name>Paul OFlaherty</name></from></like><like><date>2009-07-28T14:10:49Z</date><from><type>user</type><id>dpritchett</id><private>True</private><name>Daniel J. Pritchett</name></from></like><like><date>2009-07-28T14:00:48Z</date><from><type>user</type><id>silpol</id><name>A. T.</name></from></like><like><date>2009-07-28T13:51:27Z</date><from><type>user</type><id>ajkohn</id><name>AJ Kohn</name></from></like><like><date>2009-07-28T13:44:54Z</date><from><type>user</type><id>dannyrowley</id><private>True</private><name>Daniel Rowley</name></from></like><like><date>2009-07-28T13:40:01Z</date><from><type>user</type><id>ajbatac</id><name>AJ Batac</name></from></like><like><date>2009-07-28T12:33:25Z</date><from><type>user</type><id>stevefarnworth</id><name>Steve Farnworth</name></from></like><like><date>2009-07-28T12:23:08Z</date><from><type>user</type><id>bjtitus</id><name>Brandon Titus</name></from></like><like><date>2009-07-28T12:09:31Z</date><from><type>user</type><id>nzbuu</id><name>James Myatt</name></from></like><like><date>2009-07-28T11:11:08Z</date><from><type>user</type><id>lookon</id><name>kang</name></from></like><like><date>2009-07-28T11:08:50Z</date><from><type>user</type><id>lutao</id><name>Lu Tao</name></from></like><like><date>2009-07-28T11:07:33Z</date><from><type>user</type><id>pellesjoqvist</id><name>Pelle Sjoqvist</name></from></like><like><date>2009-07-28T10:27:09Z</date><from><type>user</type><id>pastas9</id><private>True</private><name>pastas9</name></from></like><like><date>2009-07-28T10:19:33Z</date><from><type>user</type><id>amberspence</id><private>True</private><name>The Amber</name></from></like><like><date>2009-07-28T10:18:31Z</date><from><type>user</type><id>ourielohayon</id><name>Ouriel Ohayon</name></from></like><like><date>2009-07-28T10:12:49Z</date><from><type>user</type><id>dobata</id><name>Dobromir Hadzhiev</name></from></like><like><date>2009-07-28T09:40:43Z</date><from><type>user</type><id>zijperspace</id><name>Ton Zijp</name></from></like><like><date>2009-07-28T08:50:42Z</date><from><type>user</type><id>simonwicks</id><name>Simon Wicks</name></from></like><like><date>2009-07-28T07:12:26Z</date><from><type>user</type><id>dffrnt</id><name>vijay</name></from></like><like><date>2009-07-28T07:00:56Z</date><from><type>user</type><id>bfoster</id><name>Bonnie Foster</name></from></like><like><date>2009-07-28T06:54:08Z</date><from><type>user</type><id>jrivero</id><name>Jordi Rivero</name></from></like><like><date>2009-07-28T06:51:55Z</date><from><type>user</type><id>postoditacco</id><private>True</private><name>Roberto</name></from></like><like><date>2009-07-28T06:51:24Z</date><from><type>user</type><id>niron</id><name>Nir Ben Yona</name></from></like><like><date>2009-07-28T06:44:26Z</date><from><type>user</type><id>joshhaley</id><private>True</private><name>Josh Haley</name></from></like><like><date>2009-07-28T05:54:52Z</date><from><type>user</type><id>bdarnell</id><name>Ben Darnell</name></from></like><like><date>2009-07-28T05:02:43Z</date><from><type>user</type><id>mirthnadir</id><name>Amani</name></from></like><like><date>2009-07-28T05:02:11Z</date><from><type>user</type><id>kof2002</id><name>HealingBrush</name></from></like><like><date>2009-07-28T04:59:02Z</date><from><type>user</type><id>susanbeebe</id><name>Susan Beebe</name></from></like><like><date>2009-07-28T04:57:19Z</date><from><type>user</type><id>izuzak</id><name>Ivan Zuzak</name></from></like><like><date>2009-07-28T04:54:41Z</date><from><type>user</type><id>krynsky</id><name>Mark Krynsky</name></from></like><like><date>2009-07-28T04:23:31Z</date><from><type>user</type><id>clare</id><name>Clare Dibble</name></from></like><like><date>2009-07-28T04:12:16Z</date><from><type>user</type><id>ruchira</id><name>Ruchira S. Datta</name></from></like><like><date>2009-07-28T04:06:16Z</date><from><type>user</type><id>malaparte</id><name>Andrei M. Marinescu</name></from></like><like><date>2009-07-28T03:56:13Z</date><from><type>user</type><id>yogar</id><name>K.D.</name></from></like><like><date>2009-07-28T03:42:31Z</date><from><type>user</type><id>1geeky</id><private>True</private><name>I /-\li</name></from></like><like><date>2009-07-28T03:41:02Z</date><from><type>user</type><id>derek</id><name>Derek Collison</name></from></like><like><date>2009-07-28T03:40:11Z</date><from><type>user</type><id>majento</id><name>Majento</name></from></like><like><date>2009-07-28T03:40:08Z</date><from><type>user</type><id>eldiablo</id><name>Pete D</name></from></like><like><date>2009-07-28T03:37:44Z</date><from><type>user</type><id>bhc3</id><name>Hutch Carpenter</name></from></like><like><date>2009-07-28T03:33:46Z</date><from><type>user</type><id>monasfeed</id><name>Mona Nomura</name></from></like><like><date>2009-07-28T03:30:49Z</date><from><type>user</type><id>timhoeck</id><name>Tim Hoeck</name></from></like><like><date>2009-07-28T03:28:26Z</date><from><type>user</type><id>seanpercival</id><private>True</private><name>sean percival</name></from></like><like><date>2009-07-28T03:18:41Z</date><from><type>user</type><id>mehmetakif</id><name>Mehmet ALP</name></from></like><like><date>2009-07-28T03:15:31Z</date><from><type>user</type><id>changeforge</id><name>Ken Stewart | ChangeForge</name></from></like><like><date>2009-07-28T03:13:56Z</date><from><type>user</type><id>karen</id><name>Karen Padham Taylor</name></from></like><like><date>2009-07-28T02:47:11Z</date><from><type>user</type><id>ericflo</id><name>Eric Florenzano</name></from></like><like><date>2009-07-28T02:44:25Z</date><from><type>user</type><id>imabonehead</id><name>imabonehead</name></from></like><like><date>2009-07-28T02:41:22Z</date><from><type>user</type><id>rodfather</id><private>True</private><name>Rodfather</name></from></like><like><date>2009-07-28T01:51:24Z</date><from><type>user</type><id>lizunlong</id><name>Lizunlong</name></from></like><like><date>2009-07-28T01:38:39Z</date><from><type>user</type><id>pattonroberta</id><private>True</private><name>RAPatton</name></from></like><like><date>2009-07-28T01:09:26Z</date><from><type>user</type><id>nimaa</id><private>True</private><name>Nimaa</name></from></like><like><date>2009-07-28T01:02:49Z</date><from><type>user</type><id>looppacosmos</id><name>Johni Fisher</name></from></like><like><date>2009-07-28T00:56:42Z</date><from><type>user</type><id>stong</id><name>Simon</name></from></like><like><date>2009-07-28T00:42:18Z</date><from><type>user</type><id>banane</id><name>anna sauce</name></from></like><like><date>2009-07-28T00:42:11Z</date><from><type>user</type><id>parislemon</id><name>MG Siegler</name></from></like><like><date>2009-07-28T00:32:40Z</date><from><type>user</type><id>bettydarnell</id><private>True</private><name>Betty Darnell</name></from></like><like><date>2009-07-28T00:22:50Z</date><from><type>user</type><id>jworthington</id><name>Johnny</name></from></like><like><date>2009-07-28T00:19:19Z</date><from><type>user</type><id>leblondb</id><name>BEX</name></from></like><like><date>2009-07-28T00:18:17Z</date><from><type>user</type><id>dalziel</id><name>Glenn Slaven</name></from></like><like><date>2009-07-28T00:15:00Z</date><from><type>user</type><id>phoenix</id><name>Rachel Lea Fox</name></from></like><like><date>2009-07-28T00:10:05Z</date><from><type>user</type><id>romanzolotarev</id><name>romanzolotarev</name></from></like><like><date>2009-07-28T00:04:42Z</date><from><type>user</type><id>eskimo</id><name>April Buchheit</name></from></like><like><date>2009-07-28T00:04:15Z</date><from><type>user</type><id>teb</id><name>tunahan</name></from></like><like><date>2009-07-27T23:59:04Z</date><from><type>user</type><id>ryanmassie</id><name>Ryan Massie</name></from></like><like><date>2009-07-27T23:58:52Z</date><from><type>user</type><id>thejbf</id><private>True</private><name>Burcu Dogan</name></from></like><like><date>2009-07-27T23:58:24Z</date><from><type>user</type><id>mihai</id><name>Mihai Parparita</name></from></like><like><date>2009-07-27T23:56:55Z</date><from><type>user</type><id>travispuk</id><name>travispuk</name></from></like><like><date>2009-07-27T23:55:08Z</date><from><type>user</type><id>mokargas</id><private>True</private><name>Mo Kargas</name></from></like><like><date>2009-07-27T23:50:45Z</date><from><type>user</type><id>koltregaskes</id><name>Kol Tregaskes</name></from></like><like><date>2009-07-27T23:50:04Z</date><from><type>user</type><id>itafroma</id><name>Mark Trapp</name></from></like><like><date>2009-07-27T23:43:39Z</date><from><type>user</type><id>vadim</id><name>Vadim Spivak</name></from></like><like><date>2009-07-27T23:21:04Z</date><from><type>user</type><id>gotti</id><name>GOTTi</name></from></like><like><date>2009-07-27T23:16:10Z</date><from><type>user</type><id>lanjackal</id><name>LANjackal</name></from></like><like><date>2009-07-27T23:14:24Z</date><from><type>user</type><id>louisgray</id><name>Louis Gray</name></from></like><like><date>2009-07-27T23:12:43Z</date><from><type>user</type><id>tudor</id><name>Tudor Bosman</name></from></like><like><date>2009-07-27T23:09:38Z</date><from><type>user</type><id>hberberoglu</id><name>Hüseyin Berberoğlu</name></from></like><like><date>2009-07-27T23:07:55Z</date><from><type>user</type><id>casey</id><name>Casey Muller</name></from></like><like><date>2009-07-27T23:03:21Z</date><from><type>user</type><id>scobleizer</id><name>Robert Scoble</name></from></like><like><date>2009-07-27T23:02:17Z</date><from><type>user</type><id>colladude</id><name>Kishore Balakrishnan</name></from></like><like><date>2009-07-27T23:02:15Z</date><from><type>user</type><id>bgolub</id><name>Benjamin Golub</name></from></like><like><date>2009-07-27T22:58:04Z</date><from><type>user</type><id>ginger</id><name>Ginger Makela Riker</name></from></like><like><date>2009-07-27T22:54:45Z</date><from><type>user</type><id>erensoydas</id><name>Eren Soydaş</name></from></like><like><date>2009-07-27T22:54:31Z</date><from><type>user</type><id>atul</id><name>Atul Arora</name></from></like><like><date>2009-07-27T22:53:02Z</date><from><type>user</type><id>thehenry</id><name>TheHenry</name></from></like><like><date>2009-07-27T22:52:40Z</date><from><type>user</type><id>hdiwan</id><name>Prolific Programmer</name></from></like><like><date>2009-07-27T22:52:40Z</date><from><type>user</type><id>paul</id><name>Paul Buchheit</name></from></like><like><date>2009-07-27T22:52:37Z</date><from><type>user</type><id>jeffisageek</id><name>(jeff)isageek</name></from></like><like><date>2009-07-27T22:52:11Z</date><from><type>user</type><id>dhsiao</id><name>Dan Hsiao</name></from></like><like><date>2009-07-27T22:52:11Z</date><from><type>user</type><id>kfury</id><name>Kevin Fox</name></from></like><like><date>2009-07-27T22:52:05Z</date><from><type>user</type><id>ross</id><name>Ross Miller</name></from></like><date>2009-07-27T22:52:01Z</date><id>e/c970e27954f349869b58d30a2b75631a</id></entry></feed>
|