facebooker 1.0.74 → 1.0.75
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/facebooker.gemspec +2 -2
- data/lib/facebooker/attachment.rb +8 -0
- data/lib/facebooker/models/user.rb +0 -1
- data/lib/facebooker/parser.rb +20 -4
- data/lib/facebooker/rails/helpers/fb_connect.rb +3 -0
- data/lib/facebooker/session.rb +22 -0
- data/lib/facebooker/version.rb +1 -1
- data/test/facebooker/rails_integration_test.rb +1 -1
- data/test/facebooker/session_test.rb +93 -0
- metadata +2 -2
data/facebooker.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{facebooker}
|
5
|
-
s.version = "1.0.
|
5
|
+
s.version = "1.0.75"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Chad Fowler", "Patrick Ewing", "Mike Mangino", "Shane Vitarana", "Corey Innis", "Mike Mangino"]
|
9
|
-
s.date = %q{2010-
|
9
|
+
s.date = %q{2010-08-20}
|
10
10
|
s.description = %q{Facebooker is a Ruby wrapper over the Facebook[http://facebook.com] {REST API}[http://wiki.developers.facebook.com/index.php/API]. Its goals are:
|
11
11
|
|
12
12
|
* Idiomatic Ruby
|
@@ -42,6 +42,14 @@ class Facebooker::Attachment
|
|
42
42
|
params[:expanded_height] = expanded_height unless expanded_height.nil?
|
43
43
|
add_media(params)
|
44
44
|
end
|
45
|
+
|
46
|
+
|
47
|
+
def add_property(key, value)
|
48
|
+
@storage[:properties] ||= {}
|
49
|
+
@storage[:properties][key] = value
|
50
|
+
end
|
51
|
+
|
52
|
+
|
45
53
|
|
46
54
|
def to_hash
|
47
55
|
@storage
|
data/lib/facebooker/parser.rb
CHANGED
@@ -583,16 +583,16 @@ module Facebooker
|
|
583
583
|
|
584
584
|
class EventsRsvp < Parser#:nodoc:
|
585
585
|
def self.process(data)
|
586
|
-
|
586
|
+
booleanize(element('events_rsvp_response', data).content.strip)
|
587
587
|
end
|
588
588
|
end
|
589
|
-
|
589
|
+
|
590
590
|
class EventsCreate < Parser#:nodoc:
|
591
591
|
def self.process(data)
|
592
592
|
element('events_create_response', data).content.strip
|
593
593
|
end
|
594
594
|
end
|
595
|
-
|
595
|
+
|
596
596
|
class EventsCancel < Parser#:nodoc:
|
597
597
|
def self.process(data)
|
598
598
|
element('events_cancel_response', data).content.strip
|
@@ -605,6 +605,18 @@ module Facebooker
|
|
605
605
|
end
|
606
606
|
end
|
607
607
|
|
608
|
+
class EventsEdit < Parser#:nodoc:
|
609
|
+
def self.process(data)
|
610
|
+
booleanize(element('events_edit_response', data).content.strip)
|
611
|
+
end
|
612
|
+
end
|
613
|
+
|
614
|
+
class EventsInvite < Parser#:nodoc:
|
615
|
+
def self.process(data)
|
616
|
+
booleanize(element('events_invite_response', data).content.strip)
|
617
|
+
end
|
618
|
+
end
|
619
|
+
|
608
620
|
class GroupGetMembers < Parser#:nodoc:
|
609
621
|
def self.process(data)
|
610
622
|
root = element('groups_getMembers_response', data)
|
@@ -827,6 +839,7 @@ module Facebooker
|
|
827
839
|
2 => Facebooker::Session::ServiceUnavailable,
|
828
840
|
4 => Facebooker::Session::MaxRequestsDepleted,
|
829
841
|
5 => Facebooker::Session::HostNotAllowed,
|
842
|
+
10 => Facebooker::Session::AppPermissionError,
|
830
843
|
100 => Facebooker::Session::MissingOrInvalidParameter,
|
831
844
|
101 => Facebooker::Session::InvalidAPIKey,
|
832
845
|
102 => Facebooker::Session::SessionExpired,
|
@@ -862,7 +875,8 @@ module Facebooker
|
|
862
875
|
605 => Facebooker::Session::FQLFunctionDoesNotExist,
|
863
876
|
606 => Facebooker::Session::FQLWrongNumberArgumentsPassedToFunction,
|
864
877
|
612 => Facebooker::Session::ReadMailboxExtendedPermissionRequired,
|
865
|
-
807 => Facebooker::Session::TemplateBundleInvalid
|
878
|
+
807 => Facebooker::Session::TemplateBundleInvalid,
|
879
|
+
1001=> Facebooker::Session::EventNameLocked
|
866
880
|
}
|
867
881
|
def self.process(data)
|
868
882
|
response_element = element('error_response', data) rescue nil
|
@@ -940,6 +954,8 @@ module Facebooker
|
|
940
954
|
'facebook.events.create' => EventsCreate,
|
941
955
|
'facebook.events.cancel' => EventsCancel,
|
942
956
|
'facebook.events.get' => EventsGet,
|
957
|
+
'facebook.events.edit' => EventsEdit,
|
958
|
+
'facebook.events.invite' => EventsInvite,
|
943
959
|
'facebook.events.rsvp' => EventsRsvp,
|
944
960
|
'facebook.groups.get' => GroupsGet,
|
945
961
|
'facebook.events.getMembers' => EventMembersGet,
|
@@ -137,6 +137,9 @@ module Facebooker
|
|
137
137
|
def fb_logout_link(text,url,*args)
|
138
138
|
js = update_page do |page|
|
139
139
|
page.call "FB.Connect.logoutAndRedirect",url
|
140
|
+
# When session is valid, this call is meaningless, since we already redirect
|
141
|
+
# When session is invalid, it will log the user out of the system.
|
142
|
+
page.redirect_to url
|
140
143
|
end
|
141
144
|
link_to_function text, js, *args
|
142
145
|
end
|
data/lib/facebooker/session.rb
CHANGED
@@ -20,6 +20,7 @@ module Facebooker
|
|
20
20
|
class ServiceUnavailable < Error; end
|
21
21
|
class MaxRequestsDepleted < Error; end
|
22
22
|
class HostNotAllowed < Error; end
|
23
|
+
class AppPermissionError < Error; end
|
23
24
|
class MissingOrInvalidParameter < Error; end
|
24
25
|
class InvalidAPIKey < Error; end
|
25
26
|
class SessionExpired < Error; end
|
@@ -59,6 +60,7 @@ module Facebooker
|
|
59
60
|
class ExtendedPermissionRequired < Error; end
|
60
61
|
class ReadMailboxExtendedPermissionRequired < Error; end
|
61
62
|
class InvalidFriendList < Error; end
|
63
|
+
class EventNameLocked < StandardError ; end
|
62
64
|
class UserUnRegistrationFailed < Error
|
63
65
|
attr_accessor :failed_users
|
64
66
|
end
|
@@ -322,6 +324,10 @@ module Facebooker
|
|
322
324
|
|
323
325
|
post_file('facebook.events.create', :event_info => event_info.to_json, nil => multipart_post_file)
|
324
326
|
end
|
327
|
+
|
328
|
+
def edit_event(eid, event_info, options = {})
|
329
|
+
post('facebook.events.edit', options.merge(:eid => eid, :event_info => event_info.to_json))
|
330
|
+
end
|
325
331
|
|
326
332
|
# Cancel an event
|
327
333
|
# http://wiki.developers.facebook.com/index.php/Events.cancel
|
@@ -333,6 +339,22 @@ module Facebooker
|
|
333
339
|
result == '1' ? true : false
|
334
340
|
end
|
335
341
|
|
342
|
+
# Invite users to an event
|
343
|
+
# http://wiki.developers.facebook.com/index.php/Events.invite
|
344
|
+
# E.g:
|
345
|
+
# @session.event_invite('1000321123', %w{1234 4567 1000123321}, :personal_message => "Please come!")
|
346
|
+
def event_invite(eid, uids, options = {})
|
347
|
+
post('facebook.events.invite', options.merge(:eid => eid, :uids => uids.to_json))
|
348
|
+
end
|
349
|
+
|
350
|
+
# RSVP to an event
|
351
|
+
# http://wiki.developers.facebook.com/index.php/Events.rsvp
|
352
|
+
# E.g:
|
353
|
+
# @session.event_rsvp('1000321123', 'attending')
|
354
|
+
def event_rsvp(eid,rsvp_status, options = {})
|
355
|
+
post('facebook.events.rsvp', options.merge(:eid => eid, :rsvp_status => rsvp_status))
|
356
|
+
end
|
357
|
+
|
336
358
|
def event_members(eid)
|
337
359
|
@members ||= {}
|
338
360
|
@members[eid] ||= post('facebook.events.getMembers', :eid => eid) do |response|
|
data/lib/facebooker/version.rb
CHANGED
@@ -1103,7 +1103,7 @@ class RailsHelperTest < Test::Unit::TestCase
|
|
1103
1103
|
end
|
1104
1104
|
|
1105
1105
|
def test_fb_logout_link
|
1106
|
-
assert_equal @h.fb_logout_link("Logout","My URL"),"<a href=\"#\" onclick=\"FB.Connect.logoutAndRedirect("My URL")
|
1106
|
+
assert_equal @h.fb_logout_link("Logout","My URL"),"<a href=\"#\" onclick=\"FB.Connect.logoutAndRedirect("My URL");\nwindow.location.href = "My URL";; return false;\">Logout</a>"
|
1107
1107
|
end
|
1108
1108
|
|
1109
1109
|
def test_fb_bookmark_link
|
@@ -213,11 +213,33 @@ class Facebooker::SessionTest < Test::Unit::TestCase
|
|
213
213
|
mock_session.create_event('name' => 'foo', 'category' => 'bar', :start_time => start_time, :end_time => end_time)
|
214
214
|
end
|
215
215
|
|
216
|
+
def test_can_edit_events
|
217
|
+
expect_http_posts_with_responses(example_event_edit_xml)
|
218
|
+
assert @session.edit_event("12345", :host => 'Me, Myself, & I')
|
219
|
+
end
|
220
|
+
|
221
|
+
def test_edit_event_name_after_others_rsvp_throws_exception
|
222
|
+
expect_http_posts_with_responses(example_event_edit_name_exception_xml)
|
223
|
+
assert_raises(Facebooker::Session::EventNameLocked) {
|
224
|
+
@session.edit_event("12345", :name => 'Please Raise an Exception')
|
225
|
+
}
|
226
|
+
end
|
227
|
+
|
216
228
|
def test_can_cancel_events
|
217
229
|
expect_http_posts_with_responses(example_event_cancel_xml)
|
218
230
|
assert @session.cancel_event("12345", :cancel_message => "It's raining")
|
219
231
|
end
|
220
232
|
|
233
|
+
def test_can_invite_to_events
|
234
|
+
expect_http_posts_with_responses(example_event_invite_xml)
|
235
|
+
assert @session.event_invite("12345", %w{1234 4567 100043211234}, :personal_message => 'Please come!')
|
236
|
+
end
|
237
|
+
|
238
|
+
def test_can_rsvp_to_events
|
239
|
+
expect_http_posts_with_responses(example_event_rsvp_xml)
|
240
|
+
assert @session.event_rsvp("12345", "attending")
|
241
|
+
end
|
242
|
+
|
221
243
|
def test_can_query_for_events
|
222
244
|
expect_http_posts_with_responses(example_events_get_xml)
|
223
245
|
events = @session.events
|
@@ -520,6 +542,68 @@ XML
|
|
520
542
|
</events_create_response>
|
521
543
|
XML
|
522
544
|
end
|
545
|
+
|
546
|
+
def example_event_edit_xml
|
547
|
+
<<-XML
|
548
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
549
|
+
<events_edit_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
|
550
|
+
1
|
551
|
+
</events_edit_response>
|
552
|
+
XML
|
553
|
+
end
|
554
|
+
|
555
|
+
def example_event_edit_name_exception_xml
|
556
|
+
<<-XML
|
557
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
558
|
+
<error_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
|
559
|
+
<error_code>1001</error_code>
|
560
|
+
<error_msg>You are no longer able to change the name of this event.</error_msg>
|
561
|
+
<request_args list="true">
|
562
|
+
<arg>
|
563
|
+
<key>v</key>
|
564
|
+
<value>1.0</value>
|
565
|
+
</arg>
|
566
|
+
<arg>
|
567
|
+
<key>session_key</key>
|
568
|
+
<value>xxxxxxxxxxxxxxxxxxxxxxxx-100000123443210</value>
|
569
|
+
</arg>
|
570
|
+
<arg>
|
571
|
+
<key>eid</key>
|
572
|
+
<value>123456776543210</value>
|
573
|
+
</arg>
|
574
|
+
<arg>
|
575
|
+
<key>api_key</key>
|
576
|
+
<value>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</value>
|
577
|
+
</arg>
|
578
|
+
<arg>
|
579
|
+
<key>method</key>
|
580
|
+
<value>facebook.events.edit</value>
|
581
|
+
</arg>
|
582
|
+
<arg>
|
583
|
+
<key>sig</key>
|
584
|
+
<value>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</value>
|
585
|
+
</arg>
|
586
|
+
<arg>
|
587
|
+
<key>event_info</key>
|
588
|
+
<value>{"name":"Please Raise an Exception"}</value>
|
589
|
+
</arg>
|
590
|
+
<arg>
|
591
|
+
<key>call_id</key>
|
592
|
+
<value>1276801014.58273</value>
|
593
|
+
</arg>
|
594
|
+
</request_args>
|
595
|
+
</error_response>
|
596
|
+
XML
|
597
|
+
end
|
598
|
+
|
599
|
+
def example_event_invite_xml
|
600
|
+
<<-XML
|
601
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
602
|
+
<events_invite_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
|
603
|
+
1
|
604
|
+
</events_invite_response>
|
605
|
+
XML
|
606
|
+
end
|
523
607
|
|
524
608
|
def example_event_cancel_xml
|
525
609
|
<<-XML
|
@@ -530,6 +614,15 @@ XML
|
|
530
614
|
XML
|
531
615
|
end
|
532
616
|
|
617
|
+
def example_event_rsvp_xml
|
618
|
+
<<-XML
|
619
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
620
|
+
<events_rsvp_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
|
621
|
+
1
|
622
|
+
</events_rsvp_response>
|
623
|
+
XML
|
624
|
+
end
|
625
|
+
|
533
626
|
def example_events_get_xml
|
534
627
|
<<-XML
|
535
628
|
<?xml version="1.0" encoding="UTF-8"?>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: facebooker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.75
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chad Fowler
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-08-20 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|