mini_fb 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +11 -0
- data/lib/mini_fb.rb +37 -1
- data/test/mini_fb_tests.rb +4 -0
- metadata +2 -2
data/README.markdown
CHANGED
@@ -3,6 +3,13 @@ MiniFB - the simple miniature facebook library
|
|
3
3
|
|
4
4
|
MiniFB is a small, lightweight Ruby library for interacting with the [Facebook API](http://wiki.developers.facebook.com/index.php/API).
|
5
5
|
|
6
|
+
Installation
|
7
|
+
-------------
|
8
|
+
|
9
|
+
We're using gemcutter so be sure to have gemcutter as a source, then:
|
10
|
+
|
11
|
+
gem install mini_fb
|
12
|
+
|
6
13
|
General Usage
|
7
14
|
-------------
|
8
15
|
|
@@ -35,4 +42,8 @@ Or if you want other photos, try:
|
|
35
42
|
|
36
43
|
photos = @fb.photos("pids"=>[12343243,920382343,9208348])
|
37
44
|
|
45
|
+
Support
|
46
|
+
--------
|
47
|
+
|
48
|
+
Join our Discussion Group at: http://groups.google.com/group/mini_fb
|
38
49
|
|
data/lib/mini_fb.rb
CHANGED
@@ -12,6 +12,7 @@ module MiniFB
|
|
12
12
|
def enable_logging
|
13
13
|
@@logging = true
|
14
14
|
end
|
15
|
+
|
15
16
|
def disable_logging
|
16
17
|
@@logging = false
|
17
18
|
end
|
@@ -130,6 +131,10 @@ module MiniFB
|
|
130
131
|
|
131
132
|
puts 'kwargs=' + kwargs.inspect
|
132
133
|
|
134
|
+
if secret.is_a? String
|
135
|
+
secret = FaceBookSecret.new(secret)
|
136
|
+
end
|
137
|
+
|
133
138
|
# Prepare arguments for call
|
134
139
|
call_id = kwargs.fetch("call_id", true)
|
135
140
|
if call_id == true then
|
@@ -146,6 +151,7 @@ module MiniFB
|
|
146
151
|
|
147
152
|
# Hash with secret
|
148
153
|
arg_string = String.new
|
154
|
+
# todo: convert symbols to strings, symbols break the next line
|
149
155
|
kwargs.sort.each { |kv| arg_string << kv[0] << "=" << kv[1].to_s }
|
150
156
|
kwargs["sig"] = Digest::MD5.hexdigest( arg_string + secret.value.call )
|
151
157
|
|
@@ -167,6 +173,35 @@ module MiniFB
|
|
167
173
|
return data
|
168
174
|
end
|
169
175
|
|
176
|
+
# Returns true is signature is valid, false otherwise.
|
177
|
+
def MiniFB.verify_signature( secret, arguments )
|
178
|
+
signature = arguments.delete( "fb_sig" )
|
179
|
+
return false if signature.nil?
|
180
|
+
|
181
|
+
unsigned = Hash.new
|
182
|
+
signed = Hash.new
|
183
|
+
|
184
|
+
arguments.each do |k, v|
|
185
|
+
if k =~ /^fb_sig_(.*)/ then
|
186
|
+
signed[$1] = v
|
187
|
+
else
|
188
|
+
unsigned[k] = v
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
arg_string = String.new
|
193
|
+
signed.sort.each { |kv| arg_string << kv[0] << "=" << kv[1] }
|
194
|
+
if Digest::MD5.hexdigest( arg_string + secret ) == signature
|
195
|
+
return true
|
196
|
+
end
|
197
|
+
return false
|
198
|
+
end
|
199
|
+
|
200
|
+
def self.login_url(api_key, go_next=nil)
|
201
|
+
login_url = "http://api.facebook.com/login.php"
|
202
|
+
next_param = go_next.blank? ? "" : "&next=#{go_next}"
|
203
|
+
return "#{login_url}?api_key=#{api_key}#{next_param}"
|
204
|
+
end
|
170
205
|
|
171
206
|
# This function expects arguments as a hash, so
|
172
207
|
# it is agnostic to different POST handling variants in ruby.
|
@@ -185,6 +220,7 @@ module MiniFB
|
|
185
220
|
# The secret argument should be an instance of FacebookSecret
|
186
221
|
# to hide value from simple introspection.
|
187
222
|
#
|
223
|
+
# DEPRECATED, use verify_signature instead
|
188
224
|
def MiniFB.validate( secret, arguments )
|
189
225
|
|
190
226
|
signature = arguments.delete( "fb_sig" )
|
@@ -203,7 +239,7 @@ module MiniFB
|
|
203
239
|
|
204
240
|
arg_string = String.new
|
205
241
|
signed.sort.each { |kv| arg_string << kv[0] << "=" << kv[1] }
|
206
|
-
if Digest::MD5.hexdigest( arg_string + secret ) != signature
|
242
|
+
if Digest::MD5.hexdigest( arg_string + secret ) != signature
|
207
243
|
unsigned # Hash is incorrect, return only unsigned fields.
|
208
244
|
else
|
209
245
|
unsigned.merge signed
|
data/test/mini_fb_tests.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mini_fb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Reeder
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-10
|
12
|
+
date: 2009-11-10 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|