meme 0.2.0 → 0.2.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/README.rdoc +13 -1
- data/VERSION +1 -1
- data/lib/meme/info.rb +17 -0
- data/lib/meme/search.rb +23 -0
- data/meme.gemspec +9 -6
- data/spec/fixtures/meme_info_guid.json +20 -0
- data/spec/fixtures/meme_popular_id.json +171 -0
- data/spec/fixtures/meme_popular_pt.json +171 -0
- data/spec/info_spec.rb +51 -27
- data/spec/search_spec.rb +87 -51
- metadata +24 -10
data/README.rdoc
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Yahoo! Meme API wrapper library in Ruby
|
4
4
|
|
5
|
-
This project was made during {Yahoo! Open Hack Day Brasil 2010}[http://openhackbrazil.pbworks.com/]. Event that happened in
|
5
|
+
This project was made during {Yahoo! Open Hack Day Brasil 2010}[http://openhackbrazil.pbworks.com/]. Event that happened in Sao Paulo 20, 21 of March 2010.
|
6
6
|
|
7
7
|
Meme uses {YQL}[http://developer.yahoo.com/yql/] to get API of {Yahoo! Meme}[http://meme.yahoo.com/] and is based on {meme-py}[http://github.com/guilhermechapiewski/meme-py] API created by {Guilherme Chapiewski}[http://twitter.com/gchapiewski]
|
8
8
|
|
@@ -59,6 +59,18 @@ Find by type:
|
|
59
59
|
posts.first.type
|
60
60
|
=> "photo"
|
61
61
|
|
62
|
+
=== Popular
|
63
|
+
|
64
|
+
Returns the top 10 posts on that moment.
|
65
|
+
|
66
|
+
Currently, the codes are "en" for English, "es" for Spanish, "pt" for Portuguese and "id" for Bahasa Indonesia.
|
67
|
+
|
68
|
+
Meme::Post.popular
|
69
|
+
|
70
|
+
OR
|
71
|
+
|
72
|
+
Meme::Post.popular('id')
|
73
|
+
|
62
74
|
For more information, please refer the {project wiki}[http://wiki.github.com/jtadeulopes/meme/]
|
63
75
|
|
64
76
|
== Installation
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.1
|
data/lib/meme/info.rb
CHANGED
@@ -34,6 +34,23 @@ module Meme
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
# Find user by guid
|
38
|
+
#
|
39
|
+
# Example:
|
40
|
+
#
|
41
|
+
# user = Meme::Info.find_by_guid('EMREXCV4R5OTM3CZW3HBD5QAGY')
|
42
|
+
#
|
43
|
+
def self.find_by_guid(name)
|
44
|
+
query = "SELECT * FROM meme.info WHERE owner_guid='#{name}'"
|
45
|
+
parse = Request.parse(query)
|
46
|
+
if parse
|
47
|
+
results = parse['query']['results']
|
48
|
+
results.nil? ? nil : Info.new(results['meme'])
|
49
|
+
else
|
50
|
+
parse.error!
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
37
54
|
# Return user followers
|
38
55
|
#
|
39
56
|
# Example:
|
data/lib/meme/search.rb
CHANGED
@@ -42,6 +42,29 @@ module Meme
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
+
# Returns the top 10 posts on that moment.
|
46
|
+
# You can also set the locale that you want to retrieve:
|
47
|
+
#
|
48
|
+
# * "en" for English
|
49
|
+
# * "es" for Spanish
|
50
|
+
# * "pt" for Portuguese (Default)
|
51
|
+
# * "id" for Bahasa Indonesia
|
52
|
+
#
|
53
|
+
def self.popular(locale='pt')
|
54
|
+
query = "SELECT * FROM meme.popular WHERE locale='#{locale}'"
|
55
|
+
parse = Request.parse(query)
|
56
|
+
if parse
|
57
|
+
results = parse['query']['results']
|
58
|
+
results.nil? ? nil : results['post'].map {|m| Post.new(m)}
|
59
|
+
else
|
60
|
+
parse.error!
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def user
|
65
|
+
Meme::Info.find_by_guid(self.guid)
|
66
|
+
end
|
67
|
+
|
45
68
|
end
|
46
69
|
|
47
70
|
end
|
data/meme.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{meme}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["J\303\251sus Lopes"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-05-01}
|
13
13
|
s.description = %q{Yahoo! Meme API wrapper library in Ruby}
|
14
14
|
s.email = %q{jlopes@zigotto.com.br}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -35,7 +35,10 @@ Gem::Specification.new do |s|
|
|
35
35
|
"spec/fixtures/meme_following_all.json",
|
36
36
|
"spec/fixtures/meme_following_count.json",
|
37
37
|
"spec/fixtures/meme_info.json",
|
38
|
+
"spec/fixtures/meme_info_guid.json",
|
38
39
|
"spec/fixtures/meme_info_not_found.json",
|
40
|
+
"spec/fixtures/meme_popular_id.json",
|
41
|
+
"spec/fixtures/meme_popular_pt.json",
|
39
42
|
"spec/fixtures/meme_search.json",
|
40
43
|
"spec/fixtures/meme_search_type_audio.json",
|
41
44
|
"spec/fixtures/meme_search_type_photo.json",
|
@@ -49,13 +52,13 @@ Gem::Specification.new do |s|
|
|
49
52
|
s.homepage = %q{http://github.com/jtadeulopes/meme}
|
50
53
|
s.rdoc_options = ["--charset=UTF-8"]
|
51
54
|
s.require_paths = ["lib"]
|
52
|
-
s.rubygems_version = %q{1.3.
|
55
|
+
s.rubygems_version = %q{1.3.6}
|
53
56
|
s.summary = %q{Ruby Yahoo! Meme API}
|
54
57
|
s.test_files = [
|
55
|
-
"spec/
|
58
|
+
"spec/info_spec.rb",
|
59
|
+
"spec/meme_spec.rb",
|
56
60
|
"spec/search_spec.rb",
|
57
|
-
"spec/spec_helper.rb"
|
58
|
-
"spec/info_spec.rb"
|
61
|
+
"spec/spec_helper.rb"
|
59
62
|
]
|
60
63
|
|
61
64
|
if s.respond_to? :specification_version then
|
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
"query": {
|
3
|
+
"count": "1",
|
4
|
+
"created": "2010-05-01T04:44:00Z",
|
5
|
+
"lang": "en-US",
|
6
|
+
"results": {
|
7
|
+
"meme": {
|
8
|
+
"guid": "QKSXELRVSAWRI77FVKODDYTKB4",
|
9
|
+
"name": "tempestadesilenciosa",
|
10
|
+
"title": "·ઇ\u200dઉTempestadeSilenciosa♥♥♥٠·ઇ\u200dઉ ●๋NiNA ٠",
|
11
|
+
"description": "a um passo da loucura.",
|
12
|
+
"url": "http://meme.yahoo.com/tempestadesilenciosa/",
|
13
|
+
"avatar_url": "http://d.yimg.com/gg/tempestadesilenciosa/avatars/c6ff4bd5aa79ea0ecf7c1cde3524624472d958b1.jpeg",
|
14
|
+
"language": "pt",
|
15
|
+
"following": "1000",
|
16
|
+
"followers": "1535"
|
17
|
+
}
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
@@ -0,0 +1,171 @@
|
|
1
|
+
{
|
2
|
+
"query": {
|
3
|
+
"count": "10",
|
4
|
+
"created": "2010-05-01T03:42:21Z",
|
5
|
+
"lang": "en-US",
|
6
|
+
"results": {
|
7
|
+
"post": [
|
8
|
+
{
|
9
|
+
"pubid": "SnGzd9k",
|
10
|
+
"guid": "PIYXX4KDAE7N73HXO2DM63CODM",
|
11
|
+
"url": "http://meme.yahoo.com/indah_puji_lestari_/p/SnGzd9k/",
|
12
|
+
"timestamp": "1272711086000",
|
13
|
+
"category": "text",
|
14
|
+
"type": "text",
|
15
|
+
"content": "Kemarin dia menawarkan cinta, hmm sayang harganya terlalu mahal jadi aku putuskan untuk tak memilikinya...",
|
16
|
+
"repost_count": "18",
|
17
|
+
"appid": null,
|
18
|
+
"comment": "",
|
19
|
+
"caption": "",
|
20
|
+
"via_guid": null,
|
21
|
+
"origin_guid": null,
|
22
|
+
"origin_pubid": null
|
23
|
+
},
|
24
|
+
{
|
25
|
+
"pubid": "FN_hLA3",
|
26
|
+
"guid": "XVLE5ZNNHUVPU3FAZCQD7PUMCM",
|
27
|
+
"url": "http://meme.yahoo.com/yurri/p/FN_hLA3/",
|
28
|
+
"timestamp": "1272687915000",
|
29
|
+
"category": "photo",
|
30
|
+
"type": "photo",
|
31
|
+
"content": "http://d.yimg.com/gg/u/b4864aa6f7af88a907ccc9627e3220ff7822a71c.jpeg",
|
32
|
+
"repost_count": "15",
|
33
|
+
"appid": null,
|
34
|
+
"comment": "",
|
35
|
+
"caption": "",
|
36
|
+
"via_guid": null,
|
37
|
+
"origin_guid": null,
|
38
|
+
"origin_pubid": null
|
39
|
+
},
|
40
|
+
{
|
41
|
+
"pubid": "wid9CsF",
|
42
|
+
"guid": "N6CDAAFMISBZFVMTPUCYVGFSQM",
|
43
|
+
"url": "http://meme.yahoo.com/harzone/p/wid9CsF/",
|
44
|
+
"timestamp": "1272688330000",
|
45
|
+
"category": "photo",
|
46
|
+
"type": "photo",
|
47
|
+
"content": "http://d.yimg.com/gg/u/fbcbe914656cc963a8d1946858275a1538ea66f9.jpeg",
|
48
|
+
"repost_count": "14",
|
49
|
+
"appid": null,
|
50
|
+
"comment": "",
|
51
|
+
"caption": "who want??",
|
52
|
+
"via_guid": null,
|
53
|
+
"origin_guid": null,
|
54
|
+
"origin_pubid": null
|
55
|
+
},
|
56
|
+
{
|
57
|
+
"pubid": "dBFjT-D",
|
58
|
+
"guid": "XVLE5ZNNHUVPU3FAZCQD7PUMCM",
|
59
|
+
"url": "http://meme.yahoo.com/yurri/p/dBFjT-D/",
|
60
|
+
"timestamp": "1272689096000",
|
61
|
+
"category": "photo",
|
62
|
+
"type": "photo",
|
63
|
+
"content": "http://d.yimg.com/gg/u/877dd096f0c3657682dae84cd2e935c3ec506390.jpeg",
|
64
|
+
"repost_count": "12",
|
65
|
+
"appid": null,
|
66
|
+
"comment": "",
|
67
|
+
"caption": "",
|
68
|
+
"via_guid": null,
|
69
|
+
"origin_guid": null,
|
70
|
+
"origin_pubid": null
|
71
|
+
},
|
72
|
+
{
|
73
|
+
"pubid": "WtpwKzy",
|
74
|
+
"guid": "XVLE5ZNNHUVPU3FAZCQD7PUMCM",
|
75
|
+
"url": "http://meme.yahoo.com/yurri/p/WtpwKzy/",
|
76
|
+
"timestamp": "1272687368000",
|
77
|
+
"category": "photo",
|
78
|
+
"type": "photo",
|
79
|
+
"content": "http://d.yimg.com/gg/u/da0a79b68df78e97737504de1618ef70b9103fc5.jpeg",
|
80
|
+
"repost_count": "10",
|
81
|
+
"appid": null,
|
82
|
+
"comment": "",
|
83
|
+
"caption": "",
|
84
|
+
"via_guid": null,
|
85
|
+
"origin_guid": null,
|
86
|
+
"origin_pubid": null
|
87
|
+
},
|
88
|
+
{
|
89
|
+
"pubid": "5YO15B0",
|
90
|
+
"guid": "PIYXX4KDAE7N73HXO2DM63CODM",
|
91
|
+
"url": "http://meme.yahoo.com/indah_puji_lestari_/p/5YO15B0/",
|
92
|
+
"timestamp": "1272709818000",
|
93
|
+
"category": "photo",
|
94
|
+
"type": "photo",
|
95
|
+
"content": "http://d.yimg.com/gg/u/c96cff7519f875931dd991110866fe5065ec208b.jpeg",
|
96
|
+
"repost_count": "10",
|
97
|
+
"appid": null,
|
98
|
+
"comment": "",
|
99
|
+
"caption": "",
|
100
|
+
"via_guid": null,
|
101
|
+
"origin_guid": null,
|
102
|
+
"origin_pubid": null
|
103
|
+
},
|
104
|
+
{
|
105
|
+
"pubid": "vSIuPtO",
|
106
|
+
"guid": "XVLE5ZNNHUVPU3FAZCQD7PUMCM",
|
107
|
+
"url": "http://meme.yahoo.com/yurri/p/vSIuPtO/",
|
108
|
+
"timestamp": "1272687481000",
|
109
|
+
"category": "photo",
|
110
|
+
"type": "photo",
|
111
|
+
"content": "http://d.yimg.com/gg/u/9259f0bc73c67131ba100704dabd7d40dc6fd3ca.jpeg",
|
112
|
+
"repost_count": "9",
|
113
|
+
"appid": null,
|
114
|
+
"comment": "",
|
115
|
+
"caption": "",
|
116
|
+
"via_guid": null,
|
117
|
+
"origin_guid": null,
|
118
|
+
"origin_pubid": null
|
119
|
+
},
|
120
|
+
{
|
121
|
+
"pubid": "4lfu0YI",
|
122
|
+
"guid": "PUW3SMKSPHHZWPQTGPILJMSXAA",
|
123
|
+
"url": "http://meme.yahoo.com/nandya/p/4lfu0YI/",
|
124
|
+
"timestamp": "1272683397000",
|
125
|
+
"category": "photo",
|
126
|
+
"type": "photo",
|
127
|
+
"content": "http://d.yimg.com/gg/u/cbcefebeaa3409942c0bd0e53be5d3e5c2db298a.jpeg",
|
128
|
+
"repost_count": "9",
|
129
|
+
"appid": null,
|
130
|
+
"comment": "",
|
131
|
+
"caption": "ini foto liburan aku ke KOTA TUA....\n KOTA TUA tempat liburan KERENNNN.....\n \n #travel_mimmingguini",
|
132
|
+
"via_guid": null,
|
133
|
+
"origin_guid": null,
|
134
|
+
"origin_pubid": null
|
135
|
+
},
|
136
|
+
{
|
137
|
+
"pubid": "JzTpzvT",
|
138
|
+
"guid": "XVLE5ZNNHUVPU3FAZCQD7PUMCM",
|
139
|
+
"url": "http://meme.yahoo.com/yurri/p/JzTpzvT/",
|
140
|
+
"timestamp": "1272687526000",
|
141
|
+
"category": "photo",
|
142
|
+
"type": "photo",
|
143
|
+
"content": "http://d.yimg.com/gg/u/b819fed6745b188114a3d57cb18e7fed8d2cfd6d.jpeg",
|
144
|
+
"repost_count": "8",
|
145
|
+
"appid": null,
|
146
|
+
"comment": "",
|
147
|
+
"caption": "",
|
148
|
+
"via_guid": null,
|
149
|
+
"origin_guid": null,
|
150
|
+
"origin_pubid": null
|
151
|
+
},
|
152
|
+
{
|
153
|
+
"pubid": "m23nTXn",
|
154
|
+
"guid": "PUW3SMKSPHHZWPQTGPILJMSXAA",
|
155
|
+
"url": "http://meme.yahoo.com/nandya/p/m23nTXn/",
|
156
|
+
"timestamp": "1272685199000",
|
157
|
+
"category": "photo",
|
158
|
+
"type": "photo",
|
159
|
+
"content": "http://d.yimg.com/gg/u/8998134faec021ce4aff7d35906181f65553a7dd.jpeg",
|
160
|
+
"repost_count": "7",
|
161
|
+
"appid": null,
|
162
|
+
"comment": "",
|
163
|
+
"caption": "kalo mau liat lagifoto liburanku ini ada yg lebih kerennn....\n #travel_mimmingguini \n http://mim.yahoo.com/nandya/p/OfGHdac/\n \n baca ceritanya ya..\n seru deh!!",
|
164
|
+
"via_guid": null,
|
165
|
+
"origin_guid": null,
|
166
|
+
"origin_pubid": null
|
167
|
+
}
|
168
|
+
]
|
169
|
+
}
|
170
|
+
}
|
171
|
+
}
|
@@ -0,0 +1,171 @@
|
|
1
|
+
{
|
2
|
+
"query": {
|
3
|
+
"count": "10",
|
4
|
+
"created": "2010-05-01T03:26:37Z",
|
5
|
+
"lang": "en-US",
|
6
|
+
"results": {
|
7
|
+
"post": [
|
8
|
+
{
|
9
|
+
"pubid": "jCzs2y2",
|
10
|
+
"guid": "QKSXELRVSAWRI77FVKODDYTKB4",
|
11
|
+
"url": "http://meme.yahoo.com/tempestadesilenciosa/p/jCzs2y2/",
|
12
|
+
"timestamp": "1272647380000",
|
13
|
+
"category": "photo",
|
14
|
+
"type": "photo",
|
15
|
+
"content": "http://d.yimg.com/gg/u/38b15b9620e38090aa092420790d3b5a528e8e99.jpeg",
|
16
|
+
"repost_count": "155",
|
17
|
+
"appid": null,
|
18
|
+
"comment": "",
|
19
|
+
"caption": "<b>...o teu abraço é tudo que minha alma precisa.</b>\n \n Nina",
|
20
|
+
"via_guid": null,
|
21
|
+
"origin_guid": null,
|
22
|
+
"origin_pubid": null
|
23
|
+
},
|
24
|
+
{
|
25
|
+
"pubid": "eEcCtxZ",
|
26
|
+
"guid": "EZR6VL5QGZKXYLUCRLCIODT33M",
|
27
|
+
"url": "http://meme.yahoo.com/jehparra/p/eEcCtxZ/",
|
28
|
+
"timestamp": "1272644406000",
|
29
|
+
"category": "photo",
|
30
|
+
"type": "photo",
|
31
|
+
"content": "http://d.yimg.com/gg/u/aadfccc50c65ef7ab992008d7ff6302f6ef45089.jpeg",
|
32
|
+
"repost_count": "139",
|
33
|
+
"appid": null,
|
34
|
+
"comment": "",
|
35
|
+
"caption": "<i><b>“São as pequenas coisas que valem mais. \n É tão bom estarmos juntos, e tão simples...”</b> </i>",
|
36
|
+
"via_guid": null,
|
37
|
+
"origin_guid": null,
|
38
|
+
"origin_pubid": null
|
39
|
+
},
|
40
|
+
{
|
41
|
+
"pubid": "-_diulX",
|
42
|
+
"guid": "3B7ER4NMFAVG7TNRQ333GU3EXE",
|
43
|
+
"url": "http://meme.yahoo.com/blessed/p/-_diulX/",
|
44
|
+
"timestamp": "1272655458000",
|
45
|
+
"category": "photo",
|
46
|
+
"type": "photo",
|
47
|
+
"content": "http://d.yimg.com/gg/u/236bed11ce5ea25a8defe3164254b896ff4bd59c.jpeg",
|
48
|
+
"repost_count": "80",
|
49
|
+
"appid": null,
|
50
|
+
"comment": "",
|
51
|
+
"caption": "Haha duvido que não vai repostar esse sorriso mais lindo ....",
|
52
|
+
"via_guid": null,
|
53
|
+
"origin_guid": null,
|
54
|
+
"origin_pubid": null
|
55
|
+
},
|
56
|
+
{
|
57
|
+
"pubid": "okOltPI",
|
58
|
+
"guid": "QECDUBJ7SGCGGUVRGMAQPYVWKM",
|
59
|
+
"url": "http://meme.yahoo.com/debyanna/p/okOltPI/",
|
60
|
+
"timestamp": "1272656666000",
|
61
|
+
"category": "photo",
|
62
|
+
"type": "photo",
|
63
|
+
"content": "http://d.yimg.com/gg/u/2544dfc2c61a939ed7f15ef1264a4fccbea8ca15.jpeg",
|
64
|
+
"repost_count": "78",
|
65
|
+
"appid": null,
|
66
|
+
"comment": "",
|
67
|
+
"caption": "<i><b>O amor passa, a amizade volta, mesmo depois de ter adormecido um certo tempo.</b>\n \n (George Sand)</i>",
|
68
|
+
"via_guid": null,
|
69
|
+
"origin_guid": null,
|
70
|
+
"origin_pubid": null
|
71
|
+
},
|
72
|
+
{
|
73
|
+
"pubid": "D9DBJB4",
|
74
|
+
"guid": "EZR6VL5QGZKXYLUCRLCIODT33M",
|
75
|
+
"url": "http://meme.yahoo.com/jehparra/p/D9DBJB4/",
|
76
|
+
"timestamp": "1272653284000",
|
77
|
+
"category": "photo",
|
78
|
+
"type": "photo",
|
79
|
+
"content": "http://d.yimg.com/gg/u/97cb0a8634286353a7c8f5fddbd0aae2ab692a1c.jpeg",
|
80
|
+
"repost_count": "76",
|
81
|
+
"appid": null,
|
82
|
+
"comment": "",
|
83
|
+
"caption": "<i><b>O homem que não sabe o que quer não merece o que tem.</b> </i>",
|
84
|
+
"via_guid": null,
|
85
|
+
"origin_guid": null,
|
86
|
+
"origin_pubid": null
|
87
|
+
},
|
88
|
+
{
|
89
|
+
"pubid": "y-y0Czd",
|
90
|
+
"guid": "UTCBTBXKBOHENRLRHCW46HUZBE",
|
91
|
+
"url": "http://meme.yahoo.com/replicas_de_sorrisos_e_suspiros_/p/y-y0Czd/",
|
92
|
+
"timestamp": "1272642213000",
|
93
|
+
"category": "photo",
|
94
|
+
"type": "photo",
|
95
|
+
"content": "http://d.yimg.com/gg/u/91773db71850cdb65448a099538c5d57e4f5b3d7.jpeg",
|
96
|
+
"repost_count": "76",
|
97
|
+
"appid": null,
|
98
|
+
"comment": "",
|
99
|
+
"caption": "<b>"A canção que toca o vento\n Faz gemer a saudade\n E quebra as cordas do coração"</b>",
|
100
|
+
"via_guid": null,
|
101
|
+
"origin_guid": null,
|
102
|
+
"origin_pubid": null
|
103
|
+
},
|
104
|
+
{
|
105
|
+
"pubid": "NCMrygU",
|
106
|
+
"guid": "EZR6VL5QGZKXYLUCRLCIODT33M",
|
107
|
+
"url": "http://meme.yahoo.com/jehparra/p/NCMrygU/",
|
108
|
+
"timestamp": "1272645267000",
|
109
|
+
"category": "photo",
|
110
|
+
"type": "photo",
|
111
|
+
"content": "http://d.yimg.com/gg/u/9fbd4800d236f6253acdbc9e569e6bdd25655b49.jpeg",
|
112
|
+
"repost_count": "76",
|
113
|
+
"appid": null,
|
114
|
+
"comment": "",
|
115
|
+
"caption": "<i><b>“Não há dificuldade que o amor não vença; doença que o amor não cure; porta que o amor não abra; obstáculo que o amor não transponha.” </b> </i>\n \n Sermão da Montanha",
|
116
|
+
"via_guid": null,
|
117
|
+
"origin_guid": null,
|
118
|
+
"origin_pubid": null
|
119
|
+
},
|
120
|
+
{
|
121
|
+
"pubid": "GTuKWTP",
|
122
|
+
"guid": "QECDUBJ7SGCGGUVRGMAQPYVWKM",
|
123
|
+
"url": "http://meme.yahoo.com/debyanna/p/GTuKWTP/",
|
124
|
+
"timestamp": "1272648204000",
|
125
|
+
"category": "photo",
|
126
|
+
"type": "photo",
|
127
|
+
"content": "http://d.yimg.com/gg/u/dc72696e17ea61dd99bef10f7aac04971909222d.jpeg",
|
128
|
+
"repost_count": "75",
|
129
|
+
"appid": null,
|
130
|
+
"comment": "",
|
131
|
+
"caption": "<i><b>Os piores momentos que a vida me apresenta eu absorvo-os, filtro-os e faço deles lições de vida, lições que se forem bem aceitas, assimiladas e postas em prática, jamais me darão trabalho.</b>\n \n (Adriano Hungaro)</i>",
|
132
|
+
"via_guid": null,
|
133
|
+
"origin_guid": null,
|
134
|
+
"origin_pubid": null
|
135
|
+
},
|
136
|
+
{
|
137
|
+
"pubid": "43JSbZ5",
|
138
|
+
"guid": "QECDUBJ7SGCGGUVRGMAQPYVWKM",
|
139
|
+
"url": "http://meme.yahoo.com/debyanna/p/43JSbZ5/",
|
140
|
+
"timestamp": "1272656779000",
|
141
|
+
"category": "photo",
|
142
|
+
"type": "photo",
|
143
|
+
"content": "http://d.yimg.com/gg/u/16090d85f622797a4974b8ffc7090aa5ee36e4da.jpeg",
|
144
|
+
"repost_count": "70",
|
145
|
+
"appid": null,
|
146
|
+
"comment": "",
|
147
|
+
"caption": "<i><b>Quero e espero, espero porque quero. A anciosidade não me leva a nenhum lugar, a paciência me leva a você.</b>\n \n (Gabriel Duque)</i>",
|
148
|
+
"via_guid": null,
|
149
|
+
"origin_guid": null,
|
150
|
+
"origin_pubid": null
|
151
|
+
},
|
152
|
+
{
|
153
|
+
"pubid": "Gc3xzYb",
|
154
|
+
"guid": "Y3UXBHRS7BT36ORNVQCBOXPZMM",
|
155
|
+
"url": "http://meme.yahoo.com/angelheart/p/Gc3xzYb/",
|
156
|
+
"timestamp": "1272643017000",
|
157
|
+
"category": "photo",
|
158
|
+
"type": "photo",
|
159
|
+
"content": "http://d.yimg.com/gg/u/f14fbd92944842daf045da3f091b70f14b2d50b3.jpeg",
|
160
|
+
"repost_count": "63",
|
161
|
+
"appid": null,
|
162
|
+
"comment": "",
|
163
|
+
"caption": "" Dessa vez, vamos jogar com as minhas regras..."",
|
164
|
+
"via_guid": null,
|
165
|
+
"origin_guid": null,
|
166
|
+
"origin_pubid": null
|
167
|
+
}
|
168
|
+
]
|
169
|
+
}
|
170
|
+
}
|
171
|
+
}
|
data/spec/info_spec.rb
CHANGED
@@ -2,46 +2,66 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
2
|
|
3
3
|
describe "Meme::Info" do
|
4
4
|
|
5
|
-
describe "#user not found" do
|
6
|
-
it "should return nil" do
|
7
|
-
query = "SELECT * FROM meme.info WHERE name='memeusernotfound'"
|
8
|
-
fake_web(query, 'meme_info_not_found.json')
|
9
|
-
Meme::Info.find('memeusernotfound').should be_nil
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
5
|
before :each do
|
14
6
|
query = "SELECT * FROM meme.info WHERE name='jtadeulopes'"
|
15
7
|
fake_web(query, 'meme_info.json')
|
16
8
|
@profile = Meme::Info.find('jtadeulopes')
|
17
9
|
end
|
18
10
|
|
19
|
-
|
20
|
-
@profile.name.should == "jtadeulopes"
|
21
|
-
end
|
11
|
+
describe "::find" do
|
22
12
|
|
23
|
-
|
24
|
-
|
25
|
-
|
13
|
+
it "if user not found, should return nil" do
|
14
|
+
query = "SELECT * FROM meme.info WHERE name='memeusernotfound'"
|
15
|
+
fake_web(query, 'meme_info_not_found.json')
|
16
|
+
Meme::Info.find('memeusernotfound').should be_nil
|
17
|
+
end
|
26
18
|
|
27
|
-
|
28
|
-
|
29
|
-
|
19
|
+
it "should return name" do
|
20
|
+
@profile.name.should == "jtadeulopes"
|
21
|
+
end
|
30
22
|
|
31
|
-
|
32
|
-
|
33
|
-
|
23
|
+
it "should return guid" do
|
24
|
+
@profile.guid.should == "EMREXCV4R5OTM3CZW3HBD5QAGY"
|
25
|
+
end
|
34
26
|
|
35
|
-
|
36
|
-
|
37
|
-
|
27
|
+
it "should return page title" do
|
28
|
+
@profile.title.should == "Jésus Lopes"
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should return description" do
|
32
|
+
@profile.description.should == "software developer"
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should return url" do
|
36
|
+
@profile.url.should == "http://meme.yahoo.com/jtadeulopes/"
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return avatar" do
|
40
|
+
@profile.avatar_url.should == "http://d.yimg.com/gg/jtadeulopes/avatars/44251e70378d4d225f8cda09a6c3aec87301833a.jpeg"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should return language" do
|
44
|
+
@profile.language.should == "pt"
|
45
|
+
end
|
38
46
|
|
39
|
-
it "should return avatar" do
|
40
|
-
@profile.avatar_url.should == "http://d.yimg.com/gg/jtadeulopes/avatars/44251e70378d4d225f8cda09a6c3aec87301833a.jpeg"
|
41
47
|
end
|
42
48
|
|
43
|
-
|
44
|
-
|
49
|
+
describe "::find_by_guid" do
|
50
|
+
|
51
|
+
before :each do
|
52
|
+
query = "SELECT * FROM meme.info WHERE owner_guid='QKSXELRVSAWRI77FVKODDYTKB4'"
|
53
|
+
fake_web(query, 'meme_info_guid.json')
|
54
|
+
@profile_guid = Meme::Info.find_by_guid('QKSXELRVSAWRI77FVKODDYTKB4')
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should return name" do
|
58
|
+
@profile_guid.name.should == "tempestadesilenciosa"
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should return guid" do
|
62
|
+
@profile_guid.guid.should == "QKSXELRVSAWRI77FVKODDYTKB4"
|
63
|
+
end
|
64
|
+
|
45
65
|
end
|
46
66
|
|
47
67
|
describe "#followers" do
|
@@ -67,21 +87,25 @@ describe "Meme::Info" do
|
|
67
87
|
end
|
68
88
|
|
69
89
|
describe "#following" do
|
90
|
+
|
70
91
|
it "should return following" do
|
71
92
|
query = "SELECT * FROM meme.following(10) WHERE owner_guid='EMREXCV4R5OTM3CZW3HBD5QAGY'"
|
72
93
|
fake_web(query, 'meme_following.json')
|
73
94
|
@profile.following.count.should == 10
|
74
95
|
end
|
96
|
+
|
75
97
|
it "should return seven following" do
|
76
98
|
query = "SELECT * FROM meme.following(7) WHERE owner_guid='EMREXCV4R5OTM3CZW3HBD5QAGY'"
|
77
99
|
fake_web(query, 'meme_following_count.json')
|
78
100
|
@profile.following(7).count.should == 7
|
79
101
|
end
|
102
|
+
|
80
103
|
it "should return all following" do
|
81
104
|
query = "SELECT * FROM meme.following(0) WHERE owner_guid='EMREXCV4R5OTM3CZW3HBD5QAGY'"
|
82
105
|
fake_web(query, 'meme_following_all.json')
|
83
106
|
@profile.following(:all).count.should == 39
|
84
107
|
end
|
108
|
+
|
85
109
|
end
|
86
110
|
|
87
111
|
end
|
data/spec/search_spec.rb
CHANGED
@@ -1,73 +1,109 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
2
|
|
3
|
-
describe "Meme::
|
3
|
+
describe "Meme::Post" do
|
4
4
|
|
5
|
-
|
6
|
-
query = "SELECT * FROM meme.search WHERE query='meme rocks'"
|
7
|
-
fake_web(query, 'meme_search.json')
|
8
|
-
@results = Meme::Post.find('meme rocks')
|
9
|
-
end
|
5
|
+
describe "::find" do
|
10
6
|
|
11
|
-
|
12
|
-
|
13
|
-
|
7
|
+
before :each do
|
8
|
+
query = "SELECT * FROM meme.search WHERE query='meme rocks'"
|
9
|
+
fake_web(query, 'meme_search.json')
|
10
|
+
@results = Meme::Post.find('meme rocks')
|
11
|
+
end
|
14
12
|
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
it "should return pubid" do
|
14
|
+
@results.first.pubid.should == "yC8nqOd"
|
15
|
+
end
|
18
16
|
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
it "should return guid" do
|
18
|
+
@results.first.guid.should == "7Z7XFAPD5FLXFKJVT4NG6XTTA4"
|
19
|
+
end
|
22
20
|
|
23
|
-
|
24
|
-
|
25
|
-
|
21
|
+
it "should return url" do
|
22
|
+
@results.first.url.should == "http://meme.yahoo.com/celizelove/p/yC8nqOd/"
|
23
|
+
end
|
26
24
|
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
it "should return timestamp" do
|
26
|
+
@results.first.timestamp.should == "1268410909000"
|
27
|
+
end
|
30
28
|
|
31
|
-
|
32
|
-
|
33
|
-
|
29
|
+
it "should return category" do
|
30
|
+
@results.first.category.should == "text"
|
31
|
+
end
|
34
32
|
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
it "should return type" do
|
34
|
+
@results.first.type.should == "text"
|
35
|
+
end
|
38
36
|
|
39
|
-
|
40
|
-
|
41
|
-
|
37
|
+
it "should return content" do
|
38
|
+
@results[4].content.should == "http://d.yimg.com/gg/u/2441eceb4b334c6fc29c9bd306fe1957693d605e.jpeg"
|
39
|
+
end
|
42
40
|
|
43
|
-
|
44
|
-
|
45
|
-
|
41
|
+
it "should return repost_count" do
|
42
|
+
@results.first.repost_count.should == "0"
|
43
|
+
end
|
46
44
|
|
47
|
-
|
45
|
+
it "should return caption" do
|
46
|
+
@results[1].caption.should == "This is good. But a lot of things happening means a high chance that I, the man who lives and breathes Panic and has a giant status board in my head, might not properly explain everything to everyone. Steve and I realized it was high time we made this Cabel Status Board public… using technology!"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "if posts not found, should return nil" do
|
50
|
+
query = "SELECT * FROM meme.search WHERE query='brhackday' and type='audio'"
|
51
|
+
fake_web(query, 'meme_search_type_audio.json')
|
52
|
+
Meme::Post.find('brhackday', :type => :audio).should be_nil
|
53
|
+
end
|
48
54
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
55
|
+
context "using the option :type" do
|
56
|
+
|
57
|
+
it "type photo" do
|
58
|
+
query = "SELECT * FROM meme.search WHERE query='meme rocks' and type='photo'"
|
59
|
+
fake_web(query, 'meme_search_type_photo.json')
|
60
|
+
@results = Meme::Post.find('meme rocks', :type => :photo)
|
61
|
+
@results.count.should == 3
|
62
|
+
@results.first.type.should == "photo"
|
54
63
|
end
|
64
|
+
|
65
|
+
it "type video" do
|
66
|
+
query = "SELECT * FROM meme.search WHERE query='keyboard cat' and type='video'"
|
67
|
+
fake_web(query, 'meme_search_type_video.json')
|
68
|
+
@results = Meme::Post.find('keyboard cat', :type => :video)
|
69
|
+
@results.count.should == 2
|
70
|
+
@results.first.type.should == "video"
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "::popular" do
|
78
|
+
|
79
|
+
before :each do
|
80
|
+
query = "SELECT * FROM meme.popular WHERE locale='pt'"
|
81
|
+
fake_web(query, 'meme_popular_pt.json')
|
82
|
+
@results = Meme::Post.popular
|
55
83
|
end
|
56
84
|
|
57
|
-
it
|
58
|
-
|
59
|
-
|
60
|
-
@results
|
61
|
-
@results.count.should == 3
|
62
|
-
@results.first.type.should == "photo"
|
85
|
+
it { @results.count.should == 10 }
|
86
|
+
|
87
|
+
it "should return content" do
|
88
|
+
@results.first.content.should == "http://d.yimg.com/gg/u/38b15b9620e38090aa092420790d3b5a528e8e99.jpeg"
|
63
89
|
end
|
64
90
|
|
65
|
-
it "
|
66
|
-
query = "SELECT * FROM meme.
|
67
|
-
fake_web(query, '
|
68
|
-
@results
|
69
|
-
|
70
|
-
|
91
|
+
it "return the user post" do
|
92
|
+
query = "SELECT * FROM meme.info WHERE owner_guid='QKSXELRVSAWRI77FVKODDYTKB4'"
|
93
|
+
fake_web(query, 'meme_info_guid.json')
|
94
|
+
@results.first.user.guid.should == "QKSXELRVSAWRI77FVKODDYTKB4"
|
95
|
+
end
|
96
|
+
|
97
|
+
context "using the locale" do
|
98
|
+
|
99
|
+
it "locale 'id' for Bahasa Indonesia" do
|
100
|
+
query = "SELECT * FROM meme.popular WHERE locale='id'"
|
101
|
+
fake_web(query, 'meme_popular_id.json')
|
102
|
+
@results = Meme::Post.popular('id')
|
103
|
+
@results.count.should == 10
|
104
|
+
@results.first.content.should == "Kemarin dia menawarkan cinta, hmm sayang harganya terlalu mahal jadi aku putuskan untuk tak memilikinya..."
|
105
|
+
end
|
106
|
+
|
71
107
|
end
|
72
108
|
|
73
109
|
end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: meme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 2
|
8
|
+
- 1
|
9
|
+
version: 0.2.1
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- "J\xC3\xA9sus Lopes"
|
@@ -9,19 +14,23 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-05-01 00:00:00 -03:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: rspec
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 2
|
30
|
+
- 9
|
23
31
|
version: 1.2.9
|
24
|
-
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
25
34
|
description: Yahoo! Meme API wrapper library in Ruby
|
26
35
|
email: jlopes@zigotto.com.br
|
27
36
|
executables: []
|
@@ -50,7 +59,10 @@ files:
|
|
50
59
|
- spec/fixtures/meme_following_all.json
|
51
60
|
- spec/fixtures/meme_following_count.json
|
52
61
|
- spec/fixtures/meme_info.json
|
62
|
+
- spec/fixtures/meme_info_guid.json
|
53
63
|
- spec/fixtures/meme_info_not_found.json
|
64
|
+
- spec/fixtures/meme_popular_id.json
|
65
|
+
- spec/fixtures/meme_popular_pt.json
|
54
66
|
- spec/fixtures/meme_search.json
|
55
67
|
- spec/fixtures/meme_search_type_audio.json
|
56
68
|
- spec/fixtures/meme_search_type_photo.json
|
@@ -73,23 +85,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
73
85
|
requirements:
|
74
86
|
- - ">="
|
75
87
|
- !ruby/object:Gem::Version
|
88
|
+
segments:
|
89
|
+
- 0
|
76
90
|
version: "0"
|
77
|
-
version:
|
78
91
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
92
|
requirements:
|
80
93
|
- - ">="
|
81
94
|
- !ruby/object:Gem::Version
|
95
|
+
segments:
|
96
|
+
- 0
|
82
97
|
version: "0"
|
83
|
-
version:
|
84
98
|
requirements: []
|
85
99
|
|
86
100
|
rubyforge_project:
|
87
|
-
rubygems_version: 1.3.
|
101
|
+
rubygems_version: 1.3.6
|
88
102
|
signing_key:
|
89
103
|
specification_version: 3
|
90
104
|
summary: Ruby Yahoo! Meme API
|
91
105
|
test_files:
|
106
|
+
- spec/info_spec.rb
|
92
107
|
- spec/meme_spec.rb
|
93
108
|
- spec/search_spec.rb
|
94
109
|
- spec/spec_helper.rb
|
95
|
-
- spec/info_spec.rb
|