cwninja-facebooker 1.0.8

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.
Files changed (115) hide show
  1. data/CHANGELOG.txt +0 -0
  2. data/COPYING +19 -0
  3. data/History.txt +16 -0
  4. data/Manifest.txt +114 -0
  5. data/README +46 -0
  6. data/README.txt +81 -0
  7. data/Rakefile +76 -0
  8. data/TODO.txt +10 -0
  9. data/generators/facebook/facebook_generator.rb +14 -0
  10. data/generators/facebook/templates/config/facebooker.yml +46 -0
  11. data/generators/facebook/templates/public/javascripts/facebooker.js +106 -0
  12. data/generators/facebook_controller/USAGE +33 -0
  13. data/generators/facebook_controller/facebook_controller_generator.rb +40 -0
  14. data/generators/facebook_controller/templates/controller.rb +7 -0
  15. data/generators/facebook_controller/templates/functional_test.rb +11 -0
  16. data/generators/facebook_controller/templates/helper.rb +2 -0
  17. data/generators/facebook_controller/templates/view.fbml.erb +2 -0
  18. data/generators/facebook_controller/templates/view.html.erb +2 -0
  19. data/generators/facebook_publisher/facebook_publisher_generator.rb +14 -0
  20. data/generators/facebook_publisher/templates/create_facebook_templates.rb +15 -0
  21. data/generators/facebook_publisher/templates/publisher.rb +3 -0
  22. data/generators/facebook_scaffold/USAGE +27 -0
  23. data/generators/facebook_scaffold/facebook_scaffold_generator.rb +118 -0
  24. data/generators/facebook_scaffold/templates/controller.rb +93 -0
  25. data/generators/facebook_scaffold/templates/facebook_style.css +2579 -0
  26. data/generators/facebook_scaffold/templates/functional_test.rb +89 -0
  27. data/generators/facebook_scaffold/templates/helper.rb +2 -0
  28. data/generators/facebook_scaffold/templates/layout.fbml.erb +6 -0
  29. data/generators/facebook_scaffold/templates/layout.html.erb +17 -0
  30. data/generators/facebook_scaffold/templates/style.css +74 -0
  31. data/generators/facebook_scaffold/templates/view_edit.fbml.erb +13 -0
  32. data/generators/facebook_scaffold/templates/view_edit.html.erb +18 -0
  33. data/generators/facebook_scaffold/templates/view_index.fbml.erb +24 -0
  34. data/generators/facebook_scaffold/templates/view_index.html.erb +24 -0
  35. data/generators/facebook_scaffold/templates/view_new.fbml.erb +12 -0
  36. data/generators/facebook_scaffold/templates/view_new.html.erb +17 -0
  37. data/generators/facebook_scaffold/templates/view_show.fbml.erb +10 -0
  38. data/generators/facebook_scaffold/templates/view_show.html.erb +10 -0
  39. data/generators/publisher/publisher_generator.rb +14 -0
  40. data/generators/xd_receiver/templates/xd_receiver.html +10 -0
  41. data/generators/xd_receiver/xd_receiver_generator.rb +9 -0
  42. data/init.rb +70 -0
  43. data/install.rb +12 -0
  44. data/lib/facebooker.rb +160 -0
  45. data/lib/facebooker/adapters/adapter_base.rb +87 -0
  46. data/lib/facebooker/adapters/bebo_adapter.rb +75 -0
  47. data/lib/facebooker/adapters/facebook_adapter.rb +48 -0
  48. data/lib/facebooker/admin.rb +28 -0
  49. data/lib/facebooker/batch_request.rb +44 -0
  50. data/lib/facebooker/data.rb +57 -0
  51. data/lib/facebooker/feed.rb +78 -0
  52. data/lib/facebooker/logging.rb +51 -0
  53. data/lib/facebooker/model.rb +123 -0
  54. data/lib/facebooker/models/affiliation.rb +10 -0
  55. data/lib/facebooker/models/album.rb +11 -0
  56. data/lib/facebooker/models/applicationproperties.rb +39 -0
  57. data/lib/facebooker/models/cookie.rb +10 -0
  58. data/lib/facebooker/models/education_info.rb +11 -0
  59. data/lib/facebooker/models/event.rb +26 -0
  60. data/lib/facebooker/models/friend_list.rb +14 -0
  61. data/lib/facebooker/models/group.rb +35 -0
  62. data/lib/facebooker/models/info_item.rb +10 -0
  63. data/lib/facebooker/models/info_section.rb +10 -0
  64. data/lib/facebooker/models/location.rb +8 -0
  65. data/lib/facebooker/models/notifications.rb +17 -0
  66. data/lib/facebooker/models/page.rb +27 -0
  67. data/lib/facebooker/models/photo.rb +10 -0
  68. data/lib/facebooker/models/tag.rb +12 -0
  69. data/lib/facebooker/models/user.rb +369 -0
  70. data/lib/facebooker/models/work_info.rb +9 -0
  71. data/lib/facebooker/parser.rb +547 -0
  72. data/lib/facebooker/rails/controller.rb +280 -0
  73. data/lib/facebooker/rails/facebook_asset_path.rb +18 -0
  74. data/lib/facebooker/rails/facebook_form_builder.rb +112 -0
  75. data/lib/facebooker/rails/facebook_pretty_errors.rb +14 -0
  76. data/lib/facebooker/rails/facebook_request_fix.rb +24 -0
  77. data/lib/facebooker/rails/facebook_session_handling.rb +69 -0
  78. data/lib/facebooker/rails/facebook_url_helper.rb +191 -0
  79. data/lib/facebooker/rails/facebook_url_rewriting.rb +39 -0
  80. data/lib/facebooker/rails/helpers.rb +642 -0
  81. data/lib/facebooker/rails/helpers/fb_connect.rb +34 -0
  82. data/lib/facebooker/rails/profile_publisher_extensions.rb +42 -0
  83. data/lib/facebooker/rails/publisher.rb +511 -0
  84. data/lib/facebooker/rails/routing.rb +49 -0
  85. data/lib/facebooker/rails/test_helpers.rb +88 -0
  86. data/lib/facebooker/rails/utilities.rb +22 -0
  87. data/lib/facebooker/server_cache.rb +24 -0
  88. data/lib/facebooker/service.rb +83 -0
  89. data/lib/facebooker/session.rb +564 -0
  90. data/lib/facebooker/version.rb +9 -0
  91. data/lib/net/http_multipart_post.rb +123 -0
  92. data/lib/tasks/facebooker.rake +18 -0
  93. data/lib/tasks/tunnel.rake +46 -0
  94. data/rails/init.rb +1 -0
  95. data/setup.rb +1585 -0
  96. data/templates/layout.erb +24 -0
  97. data/test/adapters_test.rb +98 -0
  98. data/test/batch_request_test.rb +82 -0
  99. data/test/event_test.rb +15 -0
  100. data/test/facebook_admin_test.rb +76 -0
  101. data/test/facebook_cache_test.rb +44 -0
  102. data/test/facebook_data_test.rb +86 -0
  103. data/test/facebooker_test.rb +855 -0
  104. data/test/fixtures/multipart_post_body_with_only_parameters.txt +33 -0
  105. data/test/fixtures/multipart_post_body_with_single_file.txt +38 -0
  106. data/test/fixtures/multipart_post_body_with_single_file_that_has_nil_key.txt +38 -0
  107. data/test/http_multipart_post_test.rb +54 -0
  108. data/test/logging_test.rb +43 -0
  109. data/test/model_test.rb +91 -0
  110. data/test/publisher_test.rb +458 -0
  111. data/test/rails_integration_test.rb +1221 -0
  112. data/test/session_test.rb +613 -0
  113. data/test/test_helper.rb +60 -0
  114. data/test/user_test.rb +270 -0
  115. metadata +185 -0
@@ -0,0 +1,60 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+ require 'flexmock/test_unit'
4
+ require 'mocha'
5
+
6
+ require File.dirname(__FILE__)+'/../lib/facebooker/rails/test_helpers'
7
+
8
+ $: << File.join(File.dirname(__FILE__), '..', 'lib')
9
+
10
+ rails_root = File.join(File.dirname(__FILE__),'..','..')
11
+ if defined? RAILS_ROOT
12
+ RAILS_ROOT.replace(rails_root)
13
+ else
14
+ RAILS_ROOT = rails_root
15
+ end
16
+
17
+ require 'facebooker'
18
+
19
+ class Test::Unit::TestCase
20
+ include Facebooker::Rails::TestHelpers
21
+
22
+ private
23
+
24
+ def expect_http_posts_with_responses(*responses_xml)
25
+ mock_http = establish_session
26
+ responses_xml.each do |xml_string|
27
+ mock_http.should_receive(:post_form).and_return(xml_string).once.ordered(:posts)
28
+ end
29
+ end
30
+
31
+ def establish_session(session = @session)
32
+ mock = flexmock(Net::HTTP).should_receive(:post_form).and_return(example_auth_token_xml).once.ordered(:posts)
33
+ mock.should_receive(:post_form).and_return(example_get_session_xml).once.ordered(:posts)
34
+ session.secure!
35
+ mock
36
+ end
37
+
38
+ def example_auth_token_xml
39
+ <<-XML
40
+ <?xml version="1.0" encoding="UTF-8"?>
41
+ <auth_createToken_response xmlns="http://api.facebook.com/1.0/"
42
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
43
+ xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
44
+ 3e4a22bb2f5ed75114b0fc9995ea85f1
45
+ </auth_createToken_response>
46
+ XML
47
+ end
48
+
49
+ def example_get_session_xml
50
+ <<-XML
51
+ <?xml version="1.0" encoding="UTF-8"?>
52
+ <auth_getSession_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">
53
+ <session_key>5f34e11bfb97c762e439e6a5-8055</session_key>
54
+ <uid>8055</uid>
55
+ <expires>1173309298</expires>
56
+ <secret>ohairoflamao12345</secret>
57
+ </auth_getSession_response>
58
+ XML
59
+ end
60
+ end
data/test/user_test.rb ADDED
@@ -0,0 +1,270 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+ require 'rubygems'
3
+ require 'flexmock/test_unit'
4
+
5
+ class UserTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @session = Facebooker::Session.create('apikey', 'secretkey')
9
+ @user = Facebooker::User.new(1234, @session)
10
+ @other_user = Facebooker::User.new(4321, @session)
11
+ ENV['FACEBOOK_CANVAS_PATH'] ='facebook_app_name'
12
+ ENV['FACEBOOK_API_KEY'] = '1234567'
13
+ ENV['FACEBOOK_SECRET_KEY'] = '7654321'
14
+
15
+ @user.friends = [@other_user]
16
+ end
17
+
18
+ def test_has_permission
19
+ expect_http_posts_with_responses(has_app_permission_response_xml)
20
+ assert @user.has_permission?("status_update")
21
+ end
22
+
23
+ def test_can_ask_user_if_he_or_she_is_friends_with_another_user
24
+ assert(@user.friends_with?(@other_user))
25
+ end
26
+
27
+ def test_can_ask_user_if_he_or_she_is_friends_with_another_user_by_user_id
28
+ assert(@user.friends_with?(@other_user.id))
29
+ end
30
+
31
+ def test_cast_to_friend_list_id_with_nil
32
+ assert_nil @user.cast_to_friend_list_id(nil)
33
+ end
34
+ def test_cast_to_friend_list_id_with_integer
35
+ assert_equal 14,@user.cast_to_friend_list_id(14)
36
+ end
37
+ def test_cast_to_friend_list_id_with_string
38
+ @user.expects(:friend_lists).returns([Facebooker::FriendList.new(:flid=>199,:name=>"Work")])
39
+ assert_equal 199,@user.cast_to_friend_list_id("Work")
40
+ end
41
+ def test_cast_to_friend_list_id_with_friend_list
42
+ assert_equal 199,@user.cast_to_friend_list_id(Facebooker::FriendList.new(:flid=>199,:name=>"Work"))
43
+ end
44
+
45
+ def test_cast_to_friend_list_id_with_invalid_string_raises
46
+ @user.expects(:friend_lists).returns([Facebooker::FriendList.new(:flid=>1,:name=>"Not Picked")])
47
+ assert_nil @user.cast_to_friend_list_id("Something")
48
+ fail("No exception raised, Expected Facebooker::Session::InvalidFriendList")
49
+ rescue Facebooker::Session::InvalidFriendList
50
+ nil
51
+ end
52
+
53
+ def test_can_create_from_current_session
54
+ Facebooker::Session.expects(:current).returns("current")
55
+ user=Facebooker::User.new(1)
56
+ assert_equal("current",user.session)
57
+ end
58
+
59
+ def test_can_set_mobile_fbml
60
+ @user.expects(:set_profile_fbml).with(nil,"test",nil)
61
+ @user.mobile_fbml="test"
62
+ end
63
+ def test_can_set_profile_action
64
+ @user.expects(:set_profile_fbml).with(nil,nil,"test")
65
+ @user.profile_action="test"
66
+ end
67
+ def test_can_set_profile_fbml
68
+ @user.expects(:set_profile_fbml).with("test",nil,nil)
69
+ @user.profile_fbml="test"
70
+ end
71
+
72
+ def test_can_set_profile_main
73
+ @user.expects(:set_profile_fbml).with(nil,nil,nil,"test")
74
+ @user.profile_main="test"
75
+ end
76
+
77
+ def test_can_call_set_profile_fbml
78
+ @session.expects(:post).with('facebook.profile.setFBML', {:uid=>1234,:profile=>"profile",:profile_action=>"action",:mobile_profile=>"mobile"},false)
79
+ @user.set_profile_fbml("profile","mobile","action")
80
+ end
81
+
82
+ def test_can_call_set_profile_fbml_with_profile_main
83
+ @session.expects(:post).with('facebook.profile.setFBML', {:uid=>1234,:profile=>"profile",:profile_action=>"action",:mobile_profile=>"mobile", :profile_main => 'profile_main'},false)
84
+ @user.set_profile_fbml("profile","mobile","action",'profile_main')
85
+ end
86
+
87
+ def test_can_get_profile_photos
88
+ @user.expects(:profile_photos)
89
+ @user.profile_photos
90
+ end
91
+
92
+ def test_can_set_cookie
93
+ @user.expects(:set_cookie).with('name', 'value')
94
+ @user.set_cookie('name', 'value')
95
+ end
96
+
97
+ def test_can_get_cookies
98
+ @user.expects(:get_cookies).with('name')
99
+ @user.get_cookies('name')
100
+ end
101
+
102
+ def test_get_profile_photos
103
+ @user = Facebooker::User.new(548871286, @session)
104
+ expect_http_posts_with_responses(example_profile_photos_get_xml)
105
+ photos = @user.profile_photos
106
+ assert_equal "2357384227378429949", photos.first.aid
107
+ end
108
+
109
+ def test_can_send_email
110
+ @user.expects(:send_email).with("subject", "body text")
111
+ @user.send_email("subject", "body text")
112
+
113
+ @user.expects(:send_email).with("subject", nil, "body fbml")
114
+ @user.send_email("subject", nil, "body fbml")
115
+ end
116
+
117
+ def test_doesnt_post_to_facebook_when_assigning_status
118
+ @session.expects(:post).never
119
+ @user.status="my status"
120
+ end
121
+ def test_can_set_status_with_string
122
+ @session.expects(:post).with('facebook.users.setStatus', :status=>"my status",:status_includes_verb=>1)
123
+ @user.set_status("my status")
124
+ end
125
+
126
+ def test_get_events
127
+ @user = Facebooker::User.new(9507801, @session)
128
+ expect_http_posts_with_responses(example_events_get_xml)
129
+ events = @user.events
130
+ assert_equal "29511517904", events.first.eid
131
+ end
132
+
133
+ def test_events_caching_honors_params
134
+ @user = Facebooker::User.new(9507801, @session)
135
+ @session.expects(:post).returns([{:eid=>1}])
136
+ assert_equal 1,@user.events.first.eid
137
+ @session.expects(:post).returns([{:eid=>2}])
138
+ assert_equal 2,@user.events(:start_time=>1.day.ago).first.eid
139
+ @session.expects(:post).never
140
+ assert_equal 1,@user.events.first.eid
141
+ end
142
+
143
+
144
+ def test_to_s
145
+ assert_equal("1234",@user.to_s)
146
+ end
147
+
148
+ def test_equality
149
+ assert_equal @user, @user.dup
150
+ end
151
+
152
+ def test_hash_email
153
+ assert_equal "4228600737_c96da02bba97aedfd26136e980ae3761", Facebooker::User.hash_email("mary@example.com")
154
+ end
155
+ def test_hash_email_not_normalized
156
+ assert_equal "4228600737_c96da02bba97aedfd26136e980ae3761", Facebooker::User.hash_email(" MaRy@example.com ")
157
+ end
158
+
159
+ def test_register_with_array
160
+ expect_http_posts_with_responses(register_response_xml)
161
+ assert_equal ["4228600737_c96da02bba97aedfd26136e980ae3761"],Facebooker::User.register([{:email=>"mary@example.com",:account_id=>1}])
162
+ end
163
+
164
+ def test_register_with_array_raises_if_not_all_success
165
+ expect_http_posts_with_responses(register_response_xml)
166
+ assert_equal ["4228600737_c96da02bba97aedfd26136e980ae3761"],Facebooker::User.register([{:email=>"mary@example.com",:account_id=>1},{:email=>"mike@example.com",:account_id=>2}])
167
+ fail "Should have raised Facebooker::Session::UserRegistrationFailed"
168
+ rescue Facebooker::Session::UserRegistrationFailed => e
169
+ assert_equal({:email=>"mike@example.com",:account_id=>2},e.failed_users.first)
170
+ end
171
+
172
+ def test_get_locale
173
+ @user = Facebooker::User.new(9507801, @session)
174
+ expect_http_posts_with_responses(example_users_get_info_xml)
175
+ assert_equal "en_US", @user.locale
176
+ end
177
+
178
+ def test_get_profile_url
179
+ @user = Facebooker::User.new(8055, @session)
180
+ expect_http_posts_with_responses(example_users_get_info_xml)
181
+ assert_equal "http://www.facebook.com/profile.php?id=8055", @user.profile_url
182
+ end
183
+
184
+ private
185
+ def example_profile_photos_get_xml
186
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
187
+ <photos_get_response xmlns=\"http://api.facebook.com/1.0/\"
188
+ xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
189
+ xsi:schemaLocation=\"http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd\" list=\"true\">
190
+ <photo>
191
+ <pid>34585991612804</pid>
192
+ <aid>2357384227378429949</aid>
193
+ <owner>1240077</owner>
194
+ <src>http://ip002.facebook.com/v11/135/18/8055/s1240077_30043524_2020.jpg</src>
195
+ <src_big>http://ip002.facebook.com/v11/135/18/8055/n1240077_30043524_2020.jpg</src_big>
196
+ <src_small>http://ip002.facebook.com/v11/135/18/8055/t1240077_30043524_2020.jpg</src_small>
197
+ <link>http://www.facebook.com/photo.php?pid=30043524&id=8055</link>
198
+ <caption>From The Deathmatch (Trailer) (1999)</caption>
199
+ <created>1132553361</created>
200
+ </photo>
201
+ <photo>
202
+ <pid>34585991612805</pid>
203
+ <aid>2357384227378429949</aid>
204
+ <owner>1240077</owner>
205
+ <src>http://ip002.facebook.com/v11/135/18/8055/s1240077_30043525_2184.jpg</src>
206
+ <src_big>http://ip002.facebook.com/v11/135/18/8055/n1240077_30043525_2184.jpg</src_big>
207
+ <src_small>http://ip002.facebook.com/v11/135/18/8055/t1240077_30043525_2184.jpg</src_small>
208
+ <link>http://www.facebook.com/photo.php?pid=30043525&id=8055</link>
209
+ <caption>Mexico City, back cover of the CYHS Student Underground 1999.</caption>
210
+ <created>1132553362</created>
211
+ </photo>
212
+ </photos_get_response>"
213
+ end
214
+
215
+ def example_events_get_xml
216
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
217
+ <events_get_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\" list=\"true\">
218
+ <event>
219
+ <eid>29511517904</eid>
220
+ <name>PUMA SALE</name>
221
+ <tagline/>
222
+ <nid>0</nid>
223
+ <pic>http://profile.ak.facebook.com/object3/370/66/s29511517904_6952.jpg</pic>
224
+ <pic_big>http://profile.ak.facebook.com/object3/370/66/n29511517904_6952.jpg</pic_big>
225
+ <pic_small>http://profile.ak.facebook.com/object3/370/66/t29511517904_6952.jpg</pic_small>
226
+ <host>PUMA</host>
227
+ <description>PUMA SALE</description>
228
+ <event_type>Education</event_type>
229
+ <event_subtype>Study Group</event_subtype>
230
+ <start_time>1212166800</start_time>
231
+ <end_time>1212364800</end_time>
232
+ <creator>1234261165</creator>
233
+ <update_time>1209768148</update_time>
234
+ <location>PUMA LOT</location>
235
+ <venue>
236
+ <street>5 LYBERTY WAY</street>
237
+ <city>Westford</city>
238
+ <state>Massachusetts</state>
239
+ <country>United States</country>
240
+ <latitude>42.5792</latitude>
241
+ <longitude>-71.4383</longitude>
242
+ </venue>
243
+ </event>
244
+ </events_get_response>"
245
+ end
246
+
247
+ def example_users_get_info_xml
248
+ <<-XML
249
+ <?xml version="1.0" encoding="UTF-8"?> <users_getInfo_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" list="true"> <user> <uid>8055</uid> <about_me>This field perpetuates the glorification of the ego. Also, it has a character limit.</about_me> <activities>Here: facebook, etc. There: Glee Club, a capella, teaching.</activities> <affiliations list="true"> <affiliation> <nid>50453093</nid> <name>Facebook Developers</name> <type>work</type> <status/> <year/> </affiliation> </affiliations> <birthday>November 3</birthday> <books>The Brothers K, GEB, Ken Wilber, Zen and the Art, Fitzgerald, The Emporer's New Mind, The Wonderful Story of Henry Sugar</books> <current_location> <city>Palo Alto</city> <state>CA</state> <country>United States</country> <zip>94303</zip> </current_location> <education_history list="true"> <education_info> <name>Harvard</name> <year>2003</year> <concentrations list="true"> <concentration>Applied Mathematics</concentration> <concentration>Computer Science</concentration> </concentrations> </education_info> </education_history> <first_name>Dave</first_name> <hometown_location> <city>York</city> <state>PA</state> <country>United States</country> </hometown_location> <hs_info> <hs1_name>Central York High School</hs1_name> <hs2_name/> <grad_year>1999</grad_year> <hs1_id>21846</hs1_id> <hs2_id>0</hs2_id> </hs_info> <is_app_user>1</is_app_user> <has_added_app>1</has_added_app> <interests>coffee, computers, the funny, architecture, code breaking,snowboarding, philosophy, soccer, talking to strangers</interests> <last_name>Fetterman</last_name> <locale>en_US</locale> <meeting_for list="true"> <seeking>Friendship</seeking> </meeting_for> <meeting_sex list="true"> <sex>female</sex> </meeting_sex> <movies>Tommy Boy, Billy Madison, Fight Club, Dirty Work, Meet the Parents, My Blue Heaven, Office Space </movies> <music>New Found Glory, Daft Punk, Weezer, The Crystal Method, Rage, the KLF, Green Day, Live, Coldplay, Panic at the Disco, Family Force 5</music> <name>Dave Fetterman</name> <notes_count>0</notes_count> <pic>http://photos-055.facebook.com/ip007/profile3/1271/65/s8055_39735.jpg</pic> <pic_big>http://photos-055.facebook.com/ip007/profile3/1271/65/n8055_39735.jpg</pic_big> <pic_small>http://photos-055.facebook.com/ip007/profile3/1271/65/t8055_39735.jpg</pic_small> <pic_square>http://photos-055.facebook.com/ip007/profile3/1271/65/q8055_39735.jpg</pic_square> <political>Moderate</political> <profile_update_time>1170414620</profile_update_time> <profile_url>http://www.facebook.com/profile.php?id=8055</profile_url> <quotes/> <relationship_status>In a Relationship</relationship_status> <religion/> <sex>male</sex> <significant_other_id xsi:nil="true"/> <status> <message>Fast Company, November issue, page 84</message> <time>1193075616</time> </status> <timezone>-8</timezone> <tv>cf. Bob Trahan</tv> <wall_count>121</wall_count> <work_history list="true"> <work_info> <location> <city>Palo Alto</city> <state>CA</state> <country>United States</country> </location> <company_name>Facebook</company_name> <position>Software Engineer</position> <description>Tech Lead, Facebook Platform</description> <start_date>2006-01</start_date> <end_date/> </work_info> </work_history> </user> </users_getInfo_response>
250
+ XML
251
+ end
252
+
253
+ def register_response_xml
254
+ <<-XML
255
+ <?xml version="1.0" encoding="UTF-8"?>
256
+ <connect_registerUsers_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/facebook.xsd" list="true">
257
+ <connect_registerUsers_response_elt>4228600737_c96da02bba97aedfd26136e980ae3761</connect_registerUsers_response_elt>
258
+ </connect_registerUsers_response>
259
+ XML
260
+ end
261
+
262
+ def has_app_permission_response_xml
263
+ <<-XML
264
+ <?xml version="1.0" encoding="UTF-8"?>
265
+ <users_hasAppPermission_response xmlns="http://api.facebook.com/1.0/"
266
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
267
+ xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</users_hasAppPermission_response>
268
+ XML
269
+ end
270
+ end
metadata ADDED
@@ -0,0 +1,185 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cwninja-facebooker
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.8
5
+ platform: ruby
6
+ authors:
7
+ - Chad Fowler
8
+ - Patrick Ewing
9
+ - Mike Mangino
10
+ - Shane Vitarana
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+
15
+ date: 2008-02-13 00:00:00 -08:00
16
+ default_executable:
17
+ dependencies:
18
+ - !ruby/object:Gem::Dependency
19
+ name: hoe
20
+ version_requirement:
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 1.5.0
26
+ version:
27
+ description: "== DESCRIPTION: Facebooker is a Ruby wrapper over the Facebook[http://facebook.com] {REST API}[http://developer.facebook.com]. Its goals are: * Idiomatic Ruby * No dependencies outside of the Ruby standard library * Concrete classes and methods modeling the Facebook data, so it's easy for a Rubyist to understand what's available * Well tested == FEATURES/PROBLEMS:"
28
+ email: mmangino@elevatedrails.com
29
+ executables: []
30
+
31
+ extensions: []
32
+
33
+ extra_rdoc_files:
34
+ - CHANGELOG.txt
35
+ - History.txt
36
+ - Manifest.txt
37
+ - README.txt
38
+ - TODO.txt
39
+ - test/fixtures/multipart_post_body_with_only_parameters.txt
40
+ - test/fixtures/multipart_post_body_with_single_file.txt
41
+ - test/fixtures/multipart_post_body_with_single_file_that_has_nil_key.txt
42
+ files:
43
+ - CHANGELOG.txt
44
+ - COPYING
45
+ - History.txt
46
+ - Manifest.txt
47
+ - README
48
+ - README.txt
49
+ - Rakefile
50
+ - TODO.txt
51
+ - generators/publisher/publisher_generator.rb
52
+ - generators/facebook/facebook_generator.rb
53
+ - generators/facebook/templates/config/facebooker.yml
54
+ - generators/facebook/templates/public/javascripts/facebooker.js
55
+ - generators/facebook_controller/USAGE
56
+ - generators/facebook_controller/facebook_controller_generator.rb
57
+ - generators/facebook_controller/templates/controller.rb
58
+ - generators/facebook_controller/templates/functional_test.rb
59
+ - generators/facebook_controller/templates/helper.rb
60
+ - generators/facebook_controller/templates/view.fbml.erb
61
+ - generators/facebook_controller/templates/view.html.erb
62
+ - generators/facebook_publisher/facebook_publisher_generator.rb
63
+ - generators/facebook_publisher/templates/create_facebook_templates.rb
64
+ - generators/facebook_publisher/templates/publisher.rb
65
+ - generators/facebook_scaffold/USAGE
66
+ - generators/facebook_scaffold/facebook_scaffold_generator.rb
67
+ - generators/facebook_scaffold/templates/controller.rb
68
+ - generators/facebook_scaffold/templates/facebook_style.css
69
+ - generators/facebook_scaffold/templates/functional_test.rb
70
+ - generators/facebook_scaffold/templates/helper.rb
71
+ - generators/facebook_scaffold/templates/layout.fbml.erb
72
+ - generators/facebook_scaffold/templates/layout.html.erb
73
+ - generators/facebook_scaffold/templates/style.css
74
+ - generators/facebook_scaffold/templates/view_edit.fbml.erb
75
+ - generators/facebook_scaffold/templates/view_edit.html.erb
76
+ - generators/facebook_scaffold/templates/view_index.fbml.erb
77
+ - generators/facebook_scaffold/templates/view_index.html.erb
78
+ - generators/facebook_scaffold/templates/view_new.fbml.erb
79
+ - generators/facebook_scaffold/templates/view_new.html.erb
80
+ - generators/facebook_scaffold/templates/view_show.fbml.erb
81
+ - generators/facebook_scaffold/templates/view_show.html.erb
82
+ - generators/xd_receiver/xd_receiver_generator.rb
83
+ - generators/xd_receiver/templates/xd_receiver.html
84
+ - init.rb
85
+ - install.rb
86
+ - lib/facebooker.rb
87
+ - lib/facebooker/adapters/adapter_base.rb
88
+ - lib/facebooker/adapters/bebo_adapter.rb
89
+ - lib/facebooker/adapters/facebook_adapter.rb
90
+ - lib/facebooker/admin.rb
91
+ - lib/facebooker/batch_request.rb
92
+ - lib/facebooker/data.rb
93
+ - lib/facebooker/feed.rb
94
+ - lib/facebooker/logging.rb
95
+ - lib/facebooker/model.rb
96
+ - lib/facebooker/models/affiliation.rb
97
+ - lib/facebooker/models/album.rb
98
+ - lib/facebooker/models/applicationproperties.rb
99
+ - lib/facebooker/models/cookie.rb
100
+ - lib/facebooker/models/education_info.rb
101
+ - lib/facebooker/models/event.rb
102
+ - lib/facebooker/models/friend_list.rb
103
+ - lib/facebooker/models/group.rb
104
+ - lib/facebooker/models/info_item.rb
105
+ - lib/facebooker/models/info_section.rb
106
+ - lib/facebooker/models/location.rb
107
+ - lib/facebooker/models/notifications.rb
108
+ - lib/facebooker/models/page.rb
109
+ - lib/facebooker/models/photo.rb
110
+ - lib/facebooker/models/tag.rb
111
+ - lib/facebooker/models/user.rb
112
+ - lib/facebooker/models/work_info.rb
113
+ - lib/facebooker/parser.rb
114
+ - lib/facebooker/rails/controller.rb
115
+ - lib/facebooker/rails/facebook_asset_path.rb
116
+ - lib/facebooker/rails/facebook_form_builder.rb
117
+ - lib/facebooker/rails/facebook_pretty_errors.rb
118
+ - lib/facebooker/rails/facebook_request_fix.rb
119
+ - lib/facebooker/rails/facebook_session_handling.rb
120
+ - lib/facebooker/rails/facebook_url_rewriting.rb
121
+ - lib/facebooker/rails/facebook_url_helper.rb
122
+ - lib/facebooker/rails/helpers.rb
123
+ - lib/facebooker/rails/helpers/fb_connect.rb
124
+ - lib/facebooker/rails/profile_publisher_extensions.rb
125
+ - lib/facebooker/rails/publisher.rb
126
+ - lib/facebooker/rails/routing.rb
127
+ - lib/facebooker/rails/test_helpers.rb
128
+ - lib/facebooker/rails/utilities.rb
129
+ - lib/facebooker/server_cache.rb
130
+ - lib/facebooker/service.rb
131
+ - lib/facebooker/session.rb
132
+ - lib/facebooker/version.rb
133
+ - lib/net/http_multipart_post.rb
134
+ - lib/tasks/facebooker.rake
135
+ - lib/tasks/tunnel.rake
136
+ - rails/init.rb
137
+ - setup.rb
138
+ - templates/layout.erb
139
+ - test/adapters_test.rb
140
+ - test/batch_request_test.rb
141
+ - test/event_test.rb
142
+ - test/facebook_admin_test.rb
143
+ - test/facebook_cache_test.rb
144
+ - test/facebook_data_test.rb
145
+ - test/facebooker_test.rb
146
+ - test/fixtures/multipart_post_body_with_only_parameters.txt
147
+ - test/fixtures/multipart_post_body_with_single_file.txt
148
+ - test/fixtures/multipart_post_body_with_single_file_that_has_nil_key.txt
149
+ - test/http_multipart_post_test.rb
150
+ - test/logging_test.rb
151
+ - test/model_test.rb
152
+ - test/publisher_test.rb
153
+ - test/rails_integration_test.rb
154
+ - test/session_test.rb
155
+ - test/test_helper.rb
156
+ - test/user_test.rb
157
+ has_rdoc: true
158
+ homepage:
159
+ post_install_message:
160
+ rdoc_options:
161
+ - --main
162
+ - README.txt
163
+ require_paths:
164
+ - lib
165
+ required_ruby_version: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: "0"
170
+ version:
171
+ required_rubygems_version: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: "0"
176
+ version:
177
+ requirements: []
178
+
179
+ rubyforge_project: facebooker
180
+ rubygems_version: 1.2.0
181
+ signing_key:
182
+ specification_version: 2
183
+ summary: Pure, idiomatic Ruby wrapper for the Facebook REST API.
184
+ test_files:
185
+ - test/test_helper.rb