simianarmy-facebooker 1.0.40

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 (135) hide show
  1. data/.autotest +15 -0
  2. data/CHANGELOG.rdoc +24 -0
  3. data/COPYING.rdoc +19 -0
  4. data/Manifest.txt +133 -0
  5. data/README.rdoc +113 -0
  6. data/Rakefile +85 -0
  7. data/TODO.rdoc +4 -0
  8. data/examples/desktop_login.rb +14 -0
  9. data/facebooker.gemspec +38 -0
  10. data/generators/facebook/facebook_generator.rb +14 -0
  11. data/generators/facebook/templates/config/facebooker.yml +49 -0
  12. data/generators/facebook/templates/public/javascripts/facebooker.js +93 -0
  13. data/generators/facebook_controller/USAGE +33 -0
  14. data/generators/facebook_controller/facebook_controller_generator.rb +40 -0
  15. data/generators/facebook_controller/templates/controller.rb +7 -0
  16. data/generators/facebook_controller/templates/functional_test.rb +11 -0
  17. data/generators/facebook_controller/templates/helper.rb +2 -0
  18. data/generators/facebook_controller/templates/view.fbml.erb +2 -0
  19. data/generators/facebook_controller/templates/view.html.erb +2 -0
  20. data/generators/facebook_publisher/facebook_publisher_generator.rb +14 -0
  21. data/generators/facebook_publisher/templates/create_facebook_templates.rb +15 -0
  22. data/generators/facebook_publisher/templates/publisher.rb +3 -0
  23. data/generators/facebook_scaffold/USAGE +27 -0
  24. data/generators/facebook_scaffold/facebook_scaffold_generator.rb +118 -0
  25. data/generators/facebook_scaffold/templates/controller.rb +93 -0
  26. data/generators/facebook_scaffold/templates/facebook_style.css +2579 -0
  27. data/generators/facebook_scaffold/templates/functional_test.rb +89 -0
  28. data/generators/facebook_scaffold/templates/helper.rb +2 -0
  29. data/generators/facebook_scaffold/templates/layout.fbml.erb +6 -0
  30. data/generators/facebook_scaffold/templates/layout.html.erb +17 -0
  31. data/generators/facebook_scaffold/templates/style.css +74 -0
  32. data/generators/facebook_scaffold/templates/view_edit.fbml.erb +13 -0
  33. data/generators/facebook_scaffold/templates/view_edit.html.erb +18 -0
  34. data/generators/facebook_scaffold/templates/view_index.fbml.erb +24 -0
  35. data/generators/facebook_scaffold/templates/view_index.html.erb +24 -0
  36. data/generators/facebook_scaffold/templates/view_new.fbml.erb +12 -0
  37. data/generators/facebook_scaffold/templates/view_new.html.erb +17 -0
  38. data/generators/facebook_scaffold/templates/view_show.fbml.erb +10 -0
  39. data/generators/facebook_scaffold/templates/view_show.html.erb +10 -0
  40. data/generators/publisher/publisher_generator.rb +14 -0
  41. data/generators/xd_receiver/templates/xd_receiver.html +10 -0
  42. data/generators/xd_receiver/xd_receiver_generator.rb +10 -0
  43. data/init.rb +26 -0
  44. data/install.rb +12 -0
  45. data/lib/facebooker/adapters/adapter_base.rb +91 -0
  46. data/lib/facebooker/adapters/bebo_adapter.rb +77 -0
  47. data/lib/facebooker/adapters/facebook_adapter.rb +52 -0
  48. data/lib/facebooker/admin.rb +42 -0
  49. data/lib/facebooker/batch_request.rb +45 -0
  50. data/lib/facebooker/data.rb +57 -0
  51. data/lib/facebooker/feed.rb +78 -0
  52. data/lib/facebooker/logging.rb +44 -0
  53. data/lib/facebooker/mobile.rb +20 -0
  54. data/lib/facebooker/mock/service.rb +50 -0
  55. data/lib/facebooker/mock/session.rb +18 -0
  56. data/lib/facebooker/model.rb +139 -0
  57. data/lib/facebooker/models/affiliation.rb +10 -0
  58. data/lib/facebooker/models/album.rb +11 -0
  59. data/lib/facebooker/models/applicationproperties.rb +39 -0
  60. data/lib/facebooker/models/applicationrestrictions.rb +10 -0
  61. data/lib/facebooker/models/cookie.rb +10 -0
  62. data/lib/facebooker/models/education_info.rb +11 -0
  63. data/lib/facebooker/models/event.rb +28 -0
  64. data/lib/facebooker/models/friend_list.rb +16 -0
  65. data/lib/facebooker/models/group.rb +36 -0
  66. data/lib/facebooker/models/info_item.rb +10 -0
  67. data/lib/facebooker/models/info_section.rb +10 -0
  68. data/lib/facebooker/models/location.rb +8 -0
  69. data/lib/facebooker/models/notifications.rb +17 -0
  70. data/lib/facebooker/models/page.rb +28 -0
  71. data/lib/facebooker/models/photo.rb +19 -0
  72. data/lib/facebooker/models/tag.rb +12 -0
  73. data/lib/facebooker/models/user.rb +469 -0
  74. data/lib/facebooker/models/video.rb +9 -0
  75. data/lib/facebooker/models/work_info.rb +10 -0
  76. data/lib/facebooker/parser.rb +650 -0
  77. data/lib/facebooker/rails/backwards_compatible_param_checks.rb +31 -0
  78. data/lib/facebooker/rails/controller.rb +356 -0
  79. data/lib/facebooker/rails/cucumber/world.rb +46 -0
  80. data/lib/facebooker/rails/cucumber.rb +28 -0
  81. data/lib/facebooker/rails/extensions/action_controller.rb +48 -0
  82. data/lib/facebooker/rails/extensions/rack_setup.rb +6 -0
  83. data/lib/facebooker/rails/extensions/routing.rb +15 -0
  84. data/lib/facebooker/rails/facebook_form_builder.rb +112 -0
  85. data/lib/facebooker/rails/facebook_pretty_errors.rb +22 -0
  86. data/lib/facebooker/rails/facebook_request_fix.rb +28 -0
  87. data/lib/facebooker/rails/facebook_request_fix_2-3.rb +31 -0
  88. data/lib/facebooker/rails/facebook_session_handling.rb +68 -0
  89. data/lib/facebooker/rails/facebook_url_helper.rb +192 -0
  90. data/lib/facebooker/rails/facebook_url_rewriting.rb +60 -0
  91. data/lib/facebooker/rails/helpers/fb_connect.rb +118 -0
  92. data/lib/facebooker/rails/helpers.rb +804 -0
  93. data/lib/facebooker/rails/integration_session.rb +38 -0
  94. data/lib/facebooker/rails/profile_publisher_extensions.rb +42 -0
  95. data/lib/facebooker/rails/publisher.rb +550 -0
  96. data/lib/facebooker/rails/routing.rb +49 -0
  97. data/lib/facebooker/rails/test_helpers.rb +68 -0
  98. data/lib/facebooker/rails/utilities.rb +22 -0
  99. data/lib/facebooker/server_cache.rb +24 -0
  100. data/lib/facebooker/service.rb +102 -0
  101. data/lib/facebooker/session.rb +635 -0
  102. data/lib/facebooker/version.rb +9 -0
  103. data/lib/facebooker.rb +179 -0
  104. data/lib/net/http_multipart_post.rb +123 -0
  105. data/lib/rack/facebook.rb +82 -0
  106. data/lib/tasks/facebooker.rake +18 -0
  107. data/lib/tasks/tunnel.rake +46 -0
  108. data/rails/init.rb +1 -0
  109. data/setup.rb +1585 -0
  110. data/templates/layout.erb +24 -0
  111. data/test/facebooker/adapters_test.rb +174 -0
  112. data/test/facebooker/admin_test.rb +102 -0
  113. data/test/facebooker/batch_request_test.rb +83 -0
  114. data/test/facebooker/data_test.rb +86 -0
  115. data/test/facebooker/logging_test.rb +43 -0
  116. data/test/facebooker/mobile_test.rb +45 -0
  117. data/test/facebooker/model_test.rb +133 -0
  118. data/test/facebooker/models/event_test.rb +15 -0
  119. data/test/facebooker/models/photo_test.rb +16 -0
  120. data/test/facebooker/models/user_test.rb +361 -0
  121. data/test/facebooker/rails/facebook_request_fix_2-3_test.rb +25 -0
  122. data/test/facebooker/rails/facebook_url_rewriting_test.rb +39 -0
  123. data/test/facebooker/rails/publisher_test.rb +481 -0
  124. data/test/facebooker/rails_integration_test.rb +1434 -0
  125. data/test/facebooker/server_cache_test.rb +44 -0
  126. data/test/facebooker/session_test.rb +652 -0
  127. data/test/facebooker_test.rb +951 -0
  128. data/test/fixtures/multipart_post_body_with_only_parameters.txt +33 -0
  129. data/test/fixtures/multipart_post_body_with_single_file.txt +38 -0
  130. data/test/fixtures/multipart_post_body_with_single_file_that_has_nil_key.txt +38 -0
  131. data/test/net/http_multipart_post_test.rb +52 -0
  132. data/test/rack/facebook_test.rb +61 -0
  133. data/test/rails_test_helper.rb +27 -0
  134. data/test/test_helper.rb +74 -0
  135. metadata +222 -0
@@ -0,0 +1,33 @@
1
+ --MichaelNiessnerIsSuperDuperAwesome
2
+ Content-Disposition: form-data; name="aid"
3
+
4
+ 940915667462717
5
+ --MichaelNiessnerIsSuperDuperAwesome
6
+ Content-Disposition: form-data; name="api_key"
7
+
8
+ 77a52842357422fadd912a2600e6e53c
9
+ --MichaelNiessnerIsSuperDuperAwesome
10
+ Content-Disposition: form-data; name="call_id"
11
+
12
+ 1172623588.023010
13
+ --MichaelNiessnerIsSuperDuperAwesome
14
+ Content-Disposition: form-data; name="caption"
15
+
16
+ Under the sunset
17
+ --MichaelNiessnerIsSuperDuperAwesome
18
+ Content-Disposition: form-data; name="method"
19
+
20
+ facebook.photos.upload
21
+ --MichaelNiessnerIsSuperDuperAwesome
22
+ Content-Disposition: form-data; name="session_key"
23
+
24
+ 489727d0ab2efc6e8003018c-i2LLkn8BDb2s.
25
+ --MichaelNiessnerIsSuperDuperAwesome
26
+ Content-Disposition: form-data; name="sig"
27
+
28
+ dfa724b8a5cd97d9df4baf2b60d3484c
29
+ --MichaelNiessnerIsSuperDuperAwesome
30
+ Content-Disposition: form-data; name="v"
31
+
32
+ 1.0
33
+ --MichaelNiessnerIsSuperDuperAwesome--
@@ -0,0 +1,38 @@
1
+ --MichaelNiessnerIsSuperDuperAwesome
2
+ Content-Disposition: form-data; name="aid"
3
+
4
+ 940915667462717
5
+ --MichaelNiessnerIsSuperDuperAwesome
6
+ Content-Disposition: form-data; name="api_key"
7
+
8
+ 77a52842357422fadd912a2600e6e53c
9
+ --MichaelNiessnerIsSuperDuperAwesome
10
+ Content-Disposition: form-data; name="call_id"
11
+
12
+ 1172623588.023010
13
+ --MichaelNiessnerIsSuperDuperAwesome
14
+ Content-Disposition: form-data; name="caption"
15
+
16
+ Under the sunset
17
+ --MichaelNiessnerIsSuperDuperAwesome
18
+ Content-Disposition: form-data; name="method"
19
+
20
+ facebook.photos.upload
21
+ --MichaelNiessnerIsSuperDuperAwesome
22
+ Content-Disposition: form-data; name="session_key"
23
+
24
+ 489727d0ab2efc6e8003018c-i2LLkn8BDb2s.
25
+ --MichaelNiessnerIsSuperDuperAwesome
26
+ Content-Disposition: form-data; name="sig"
27
+
28
+ dfa724b8a5cd97d9df4baf2b60d3484c
29
+ --MichaelNiessnerIsSuperDuperAwesome
30
+ Content-Disposition: form-data; name="v"
31
+
32
+ 1.0
33
+ --MichaelNiessnerIsSuperDuperAwesome
34
+ Content-Disposition: form-data; name="file"; filename="somefilename.jpg"
35
+ Content-Type: image/jpg
36
+
37
+ [Raw file data here]
38
+ --MichaelNiessnerIsSuperDuperAwesome--
@@ -0,0 +1,38 @@
1
+ --MichaelNiessnerIsSuperDuperAwesome
2
+ Content-Disposition: form-data; name="aid"
3
+
4
+ 940915667462717
5
+ --MichaelNiessnerIsSuperDuperAwesome
6
+ Content-Disposition: form-data; name="api_key"
7
+
8
+ 77a52842357422fadd912a2600e6e53c
9
+ --MichaelNiessnerIsSuperDuperAwesome
10
+ Content-Disposition: form-data; name="call_id"
11
+
12
+ 1172623588.023010
13
+ --MichaelNiessnerIsSuperDuperAwesome
14
+ Content-Disposition: form-data; name="caption"
15
+
16
+ Under the sunset
17
+ --MichaelNiessnerIsSuperDuperAwesome
18
+ Content-Disposition: form-data; name="method"
19
+
20
+ facebook.photos.upload
21
+ --MichaelNiessnerIsSuperDuperAwesome
22
+ Content-Disposition: form-data; name="session_key"
23
+
24
+ 489727d0ab2efc6e8003018c-i2LLkn8BDb2s.
25
+ --MichaelNiessnerIsSuperDuperAwesome
26
+ Content-Disposition: form-data; name="sig"
27
+
28
+ dfa724b8a5cd97d9df4baf2b60d3484c
29
+ --MichaelNiessnerIsSuperDuperAwesome
30
+ Content-Disposition: form-data; name="v"
31
+
32
+ 1.0
33
+ --MichaelNiessnerIsSuperDuperAwesome
34
+ Content-Disposition: form-data; filename="somefilename.jpg"
35
+ Content-Type: image/jpg
36
+
37
+ [Raw file data here]
38
+ --MichaelNiessnerIsSuperDuperAwesome--
@@ -0,0 +1,52 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+ require 'net/http_multipart_post'
3
+
4
+ class HttpMulitpartPostTest < Test::Unit::TestCase
5
+ def setup
6
+ super
7
+ end
8
+
9
+ def fixture(string)
10
+ File.open(File.dirname(__FILE__) + "/../fixtures/#{string}.txt").read
11
+ end
12
+
13
+ def test_multipart_post_with_only_parameters
14
+ params = add_sample_facebook_params({})
15
+ post = Net::HTTP::MultipartPost.new("uri", params)
16
+ assert_equal fixture("multipart_post_body_with_only_parameters"), post.send(:body)
17
+ end
18
+
19
+ def test_multipart_post_with_a_single_file
20
+ params = add_sample_facebook_params({})
21
+ params[:file] = Net::HTTP::MultipartPostFile.new
22
+ params[:file].filename = "somefilename.jpg"
23
+ params[:file].content_type = "image/jpg"
24
+ params[:file].data = "[Raw file data here]"
25
+ post = Net::HTTP::MultipartPost.new("uri", params)
26
+ assert_equal fixture("multipart_post_body_with_single_file"), post.send(:body)
27
+ end
28
+
29
+ def test_multipart_post_with_a_single_file_parameter_that_has_nil_key
30
+ params = add_sample_facebook_params({})
31
+ params[nil] = Net::HTTP::MultipartPostFile.new("somefilename.jpg", "image/jpg", "[Raw file data here]")
32
+ post = Net::HTTP::MultipartPost.new("uri", params)
33
+ assert_equal fixture("multipart_post_body_with_single_file_that_has_nil_key"), post.send(:body)
34
+ end
35
+
36
+ def test_multipart_post_should_have_correct_content_type
37
+ post = Net::HTTP::MultipartPost.new("uri", {})
38
+ assert post.send(:content_type) =~ /multipart\/form-data; boundary=/
39
+ end
40
+
41
+ def add_sample_facebook_params(hash)
42
+ hash[:method] = "facebook.photos.upload"
43
+ hash[:v] = "1.0"
44
+ hash[:api_key] = "77a52842357422fadd912a2600e6e53c"
45
+ hash[:session_key] = "489727d0ab2efc6e8003018c-i2LLkn8BDb2s."
46
+ hash[:call_id] = "1172623588.023010"
47
+ hash[:caption] = "Under the sunset"
48
+ hash[:aid] = "940915667462717"
49
+ hash[:sig] = "dfa724b8a5cd97d9df4baf2b60d3484c"
50
+ hash
51
+ end
52
+ end
@@ -0,0 +1,61 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+ require 'rack/facebook'
3
+ require 'rack/lint'
4
+ require 'rack/mock'
5
+
6
+ class Rack::FacebookTest < Test::Unit::TestCase
7
+
8
+ def setup
9
+ flexmock(Facebooker).should_receive(:secret_key).and_return('secret')
10
+ @app = lambda do |env|
11
+ @env = env
12
+ Rack::Response.new().to_a
13
+ end
14
+ @facebook = Rack::Facebook.new(@app)
15
+ end
16
+
17
+ def params(p)
18
+ p.map{|*args| args.join('=') }.join('&')
19
+ end
20
+
21
+ def app
22
+ Rack::MockRequest.new(Rack::Lint.new(@facebook))
23
+ end
24
+
25
+ def test_without_fb_params
26
+ response = app.post("/")
27
+ assert_equal 200, response.status
28
+ end
29
+
30
+ def test_converts_request_method
31
+ response = app.post("/",
32
+ :input => params(:fb_sig_request_method => 'GET', :fb_sig => '4d2a700e90b0bcbe54b9e627d2cc1417'))
33
+ assert_equal 200, response.status
34
+ assert_equal 'GET', @env['REQUEST_METHOD']
35
+ end
36
+
37
+ def test_only_sets_request_method_if_provided
38
+ response = app.post("/", :input => params(:fb_sig_user => '1', :fb_sig => '313dd5caed3d0902d83225ff3ae9a950'))
39
+ assert_equal 200, response.status
40
+ assert_equal 'POST', @env['REQUEST_METHOD']
41
+ end
42
+
43
+ def test_renders_400_with_invalid_signature
44
+ response = app.post("/",
45
+ :input => params(:fb_sig => 'wrong', :fb_sig_user => 1))
46
+ assert_equal 400, response.status
47
+ end
48
+
49
+ def test_skips_with_false_condition
50
+ @facebook = Rack::Facebook.new(@app) { false }
51
+ response = app.post("/", :input => params(:fb_sig_user => 'ignored'))
52
+ assert_equal 200, response.status
53
+ end
54
+
55
+ def test_verifies_with_true_condition
56
+ @facebook = Rack::Facebook.new(@app) { true }
57
+ response = app.post("/", :input => params(:fb_sig_user => 'ignored'))
58
+ assert_equal 400, response.status
59
+ end
60
+
61
+ end
@@ -0,0 +1,27 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper')
2
+
3
+ tmp = $-w
4
+ $-w = nil
5
+ require 'action_controller'
6
+ require 'action_controller/test_process'
7
+ require 'active_record'
8
+ $-w = tmp
9
+ gem 'rails'
10
+ require 'initializer'
11
+ require File.dirname(__FILE__)+'/../init'
12
+ require 'facebooker/rails/controller'
13
+ require 'facebooker/rails/helpers/fb_connect'
14
+ require 'facebooker/rails/helpers'
15
+ require 'facebooker/rails/publisher'
16
+ require 'facebooker/rails/facebook_form_builder'
17
+
18
+ ActionController::Routing::Routes.draw do |map|
19
+ map.connect '', :controller=>"facebook",:conditions=>{:canvas=>true}
20
+ map.connect '', :controller=>"plain_old_rails"
21
+ map.resources :comments, :controller=>"plain_old_rails"
22
+ map.connect 'require_auth/:action', :controller => "controller_which_requires_facebook_authentication"
23
+ map.connect 'require_install/:action', :controller => "controller_which_requires_application_installation"
24
+ silence_warnings do
25
+ map.connect ':controller/:action/:id', :controller => "plain_old_rails"
26
+ end
27
+ end
@@ -0,0 +1,74 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+
4
+ begin
5
+ require 'nokogiri'
6
+ rescue LoadError
7
+ # Should work without nokogiri
8
+ end
9
+
10
+ begin
11
+ require 'multi_rails_init'
12
+ rescue LoadError
13
+ # multi rails not installed, test against newest supported version of Rails
14
+ gem 'rails', '2.2.2'
15
+ end
16
+ require 'activesupport'
17
+ require 'flexmock/test_unit'
18
+ require 'mocha'
19
+
20
+ $: << File.join(File.dirname(__FILE__), '..', 'lib')
21
+
22
+ rails_root = File.join(File.dirname(__FILE__),'..','..')
23
+ if defined? RAILS_ROOT
24
+ RAILS_ROOT.replace(rails_root)
25
+ else
26
+ RAILS_ROOT = rails_root
27
+ end
28
+
29
+ require 'facebooker'
30
+ require 'facebooker/rails/test_helpers'
31
+
32
+
33
+ class Test::Unit::TestCase
34
+ include Facebooker::Rails::TestHelpers
35
+
36
+ private
37
+
38
+ def expect_http_posts_with_responses(*responses_xml)
39
+ mock_http = establish_session
40
+ responses_xml.each do |xml_string|
41
+ mock_http.should_receive(:post_form).and_return(xml_string).once.ordered(:posts)
42
+ end
43
+ end
44
+
45
+ def establish_session(session = @session)
46
+ mock = flexmock(Net::HTTP).should_receive(:post_form).and_return(example_auth_token_xml).once.ordered(:posts)
47
+ mock.should_receive(:post_form).and_return(example_get_session_xml).once.ordered(:posts)
48
+ session.secure!
49
+ mock
50
+ end
51
+
52
+ def example_auth_token_xml
53
+ <<-XML
54
+ <?xml version="1.0" encoding="UTF-8"?>
55
+ <auth_createToken_response xmlns="http://api.facebook.com/1.0/"
56
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
57
+ xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
58
+ 3e4a22bb2f5ed75114b0fc9995ea85f1
59
+ </auth_createToken_response>
60
+ XML
61
+ end
62
+
63
+ def example_get_session_xml
64
+ <<-XML
65
+ <?xml version="1.0" encoding="UTF-8"?>
66
+ <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">
67
+ <session_key>5f34e11bfb97c762e439e6a5-8055</session_key>
68
+ <uid>8055</uid>
69
+ <expires>1173309298</expires>
70
+ <secret>ohairoflamao12345</secret>
71
+ </auth_getSession_response>
72
+ XML
73
+ end
74
+ end
metadata ADDED
@@ -0,0 +1,222 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: simianarmy-facebooker
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.40
5
+ platform: ruby
6
+ authors:
7
+ - Chad Fowler
8
+ - Patrick Ewing
9
+ - Mike Mangino
10
+ - Shane Vitarana
11
+ - Corey Innis
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+
16
+ date: 2009-07-01 00:00:00 -07:00
17
+ default_executable:
18
+ dependencies:
19
+ - !ruby/object:Gem::Dependency
20
+ name: hoe
21
+ type: :development
22
+ version_requirement:
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: 1.11.0
28
+ version:
29
+ description: "Facebooker is a Ruby wrapper over the Facebook[http://facebook.com] {REST API}[http://wiki.developers.facebook.com/index.php/API]. Its goals are: * Idiomatic Ruby * No dependencies outside of the Ruby standard library (This is true with Rails 2.1. Previous Rails versions require the JSON gem) * Concrete classes and methods modeling the Facebook data, so it's easy for a Rubyist to understand what's available * Well tested"
30
+ email: mmangino@elevatedrails.com
31
+ executables: []
32
+
33
+ extensions: []
34
+
35
+ extra_rdoc_files:
36
+ - Manifest.txt
37
+ - CHANGELOG.rdoc
38
+ - COPYING.rdoc
39
+ - README.rdoc
40
+ - TODO.rdoc
41
+ files:
42
+ - .autotest
43
+ - CHANGELOG.rdoc
44
+ - COPYING.rdoc
45
+ - Manifest.txt
46
+ - README.rdoc
47
+ - Rakefile
48
+ - TODO.rdoc
49
+ - examples/desktop_login.rb
50
+ - facebooker.gemspec
51
+ - generators/facebook/facebook_generator.rb
52
+ - generators/facebook/templates/config/facebooker.yml
53
+ - generators/facebook/templates/public/javascripts/facebooker.js
54
+ - generators/facebook_controller/USAGE
55
+ - generators/facebook_controller/facebook_controller_generator.rb
56
+ - generators/facebook_controller/templates/controller.rb
57
+ - generators/facebook_controller/templates/functional_test.rb
58
+ - generators/facebook_controller/templates/helper.rb
59
+ - generators/facebook_controller/templates/view.fbml.erb
60
+ - generators/facebook_controller/templates/view.html.erb
61
+ - generators/facebook_publisher/facebook_publisher_generator.rb
62
+ - generators/facebook_publisher/templates/create_facebook_templates.rb
63
+ - generators/facebook_publisher/templates/publisher.rb
64
+ - generators/facebook_scaffold/USAGE
65
+ - generators/facebook_scaffold/facebook_scaffold_generator.rb
66
+ - generators/facebook_scaffold/templates/controller.rb
67
+ - generators/facebook_scaffold/templates/facebook_style.css
68
+ - generators/facebook_scaffold/templates/functional_test.rb
69
+ - generators/facebook_scaffold/templates/helper.rb
70
+ - generators/facebook_scaffold/templates/layout.fbml.erb
71
+ - generators/facebook_scaffold/templates/layout.html.erb
72
+ - generators/facebook_scaffold/templates/style.css
73
+ - generators/facebook_scaffold/templates/view_edit.fbml.erb
74
+ - generators/facebook_scaffold/templates/view_edit.html.erb
75
+ - generators/facebook_scaffold/templates/view_index.fbml.erb
76
+ - generators/facebook_scaffold/templates/view_index.html.erb
77
+ - generators/facebook_scaffold/templates/view_new.fbml.erb
78
+ - generators/facebook_scaffold/templates/view_new.html.erb
79
+ - generators/facebook_scaffold/templates/view_show.fbml.erb
80
+ - generators/facebook_scaffold/templates/view_show.html.erb
81
+ - generators/publisher/publisher_generator.rb
82
+ - generators/xd_receiver/templates/xd_receiver.html
83
+ - generators/xd_receiver/xd_receiver_generator.rb
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/mobile.rb
96
+ - lib/facebooker/mock/service.rb
97
+ - lib/facebooker/mock/session.rb
98
+ - lib/facebooker/model.rb
99
+ - lib/facebooker/models/affiliation.rb
100
+ - lib/facebooker/models/album.rb
101
+ - lib/facebooker/models/applicationproperties.rb
102
+ - lib/facebooker/models/applicationrestrictions.rb
103
+ - lib/facebooker/models/cookie.rb
104
+ - lib/facebooker/models/education_info.rb
105
+ - lib/facebooker/models/event.rb
106
+ - lib/facebooker/models/friend_list.rb
107
+ - lib/facebooker/models/group.rb
108
+ - lib/facebooker/models/info_item.rb
109
+ - lib/facebooker/models/info_section.rb
110
+ - lib/facebooker/models/location.rb
111
+ - lib/facebooker/models/notifications.rb
112
+ - lib/facebooker/models/page.rb
113
+ - lib/facebooker/models/photo.rb
114
+ - lib/facebooker/models/tag.rb
115
+ - lib/facebooker/models/user.rb
116
+ - lib/facebooker/models/video.rb
117
+ - lib/facebooker/models/work_info.rb
118
+ - lib/facebooker/parser.rb
119
+ - lib/facebooker/rails/backwards_compatible_param_checks.rb
120
+ - lib/facebooker/rails/controller.rb
121
+ - lib/facebooker/rails/cucumber.rb
122
+ - lib/facebooker/rails/cucumber/world.rb
123
+ - lib/facebooker/rails/extensions/action_controller.rb
124
+ - lib/facebooker/rails/extensions/rack_setup.rb
125
+ - lib/facebooker/rails/extensions/routing.rb
126
+ - lib/facebooker/rails/facebook_form_builder.rb
127
+ - lib/facebooker/rails/facebook_pretty_errors.rb
128
+ - lib/facebooker/rails/facebook_request_fix.rb
129
+ - lib/facebooker/rails/facebook_request_fix_2-3.rb
130
+ - lib/facebooker/rails/facebook_session_handling.rb
131
+ - lib/facebooker/rails/facebook_url_helper.rb
132
+ - lib/facebooker/rails/facebook_url_rewriting.rb
133
+ - lib/facebooker/rails/helpers.rb
134
+ - lib/facebooker/rails/helpers/fb_connect.rb
135
+ - lib/facebooker/rails/integration_session.rb
136
+ - lib/facebooker/rails/profile_publisher_extensions.rb
137
+ - lib/facebooker/rails/publisher.rb
138
+ - lib/facebooker/rails/routing.rb
139
+ - lib/facebooker/rails/test_helpers.rb
140
+ - lib/facebooker/rails/utilities.rb
141
+ - lib/facebooker/server_cache.rb
142
+ - lib/facebooker/service.rb
143
+ - lib/facebooker/session.rb
144
+ - lib/facebooker/version.rb
145
+ - lib/net/http_multipart_post.rb
146
+ - lib/rack/facebook.rb
147
+ - lib/tasks/facebooker.rake
148
+ - lib/tasks/tunnel.rake
149
+ - rails/init.rb
150
+ - setup.rb
151
+ - templates/layout.erb
152
+ - test/facebooker/adapters_test.rb
153
+ - test/facebooker/admin_test.rb
154
+ - test/facebooker/batch_request_test.rb
155
+ - test/facebooker/data_test.rb
156
+ - test/facebooker/logging_test.rb
157
+ - test/facebooker/mobile_test.rb
158
+ - test/facebooker/model_test.rb
159
+ - test/facebooker/models/event_test.rb
160
+ - test/facebooker/models/photo_test.rb
161
+ - test/facebooker/models/user_test.rb
162
+ - test/facebooker/rails/publisher_test.rb
163
+ - test/facebooker/rails_integration_test.rb
164
+ - test/facebooker/rails/facebook_request_fix_2-3_test.rb
165
+ - test/facebooker/server_cache_test.rb
166
+ - test/facebooker/session_test.rb
167
+ - test/facebooker_test.rb
168
+ - test/fixtures/multipart_post_body_with_only_parameters.txt
169
+ - test/fixtures/multipart_post_body_with_single_file.txt
170
+ - test/fixtures/multipart_post_body_with_single_file_that_has_nil_key.txt
171
+ - test/net/http_multipart_post_test.rb
172
+ - test/rack/facebook_test.rb
173
+ - test/rails_test_helper.rb
174
+ - test/test_helper.rb
175
+ - test/facebooker/rails/facebook_url_rewriting_test.rb
176
+ has_rdoc: true
177
+ homepage: http://facebooker.rubyforge.org
178
+ post_install_message:
179
+ rdoc_options:
180
+ - --main
181
+ - README.rdoc
182
+ require_paths:
183
+ - lib
184
+ required_ruby_version: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: "0"
189
+ version:
190
+ required_rubygems_version: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: "0"
195
+ version:
196
+ requirements: []
197
+
198
+ rubyforge_project: facebooker
199
+ rubygems_version: 1.2.0
200
+ signing_key:
201
+ specification_version: 2
202
+ summary: Facebooker is a Ruby wrapper over the Facebook[http://facebook.com] {REST API}[http://wiki.developers.facebook.com/index.php/API]
203
+ test_files:
204
+ - test/facebooker_test.rb
205
+ - test/facebooker/adapters_test.rb
206
+ - test/facebooker/admin_test.rb
207
+ - test/facebooker/batch_request_test.rb
208
+ - test/facebooker/data_test.rb
209
+ - test/facebooker/logging_test.rb
210
+ - test/facebooker/mobile_test.rb
211
+ - test/facebooker/model_test.rb
212
+ - test/facebooker/rails_integration_test.rb
213
+ - test/facebooker/server_cache_test.rb
214
+ - test/facebooker/session_test.rb
215
+ - test/facebooker/models/event_test.rb
216
+ - test/facebooker/models/photo_test.rb
217
+ - test/facebooker/models/user_test.rb
218
+ - test/facebooker/rails/facebook_request_fix_2-3_test.rb
219
+ - test/facebooker/rails/facebook_url_rewriting_test.rb
220
+ - test/facebooker/rails/publisher_test.rb
221
+ - test/net/http_multipart_post_test.rb
222
+ - test/rack/facebook_test.rb