facebook_page_parser 0.1.0

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.
@@ -0,0 +1,40 @@
1
+ #encoding: utf-8
2
+
3
+ module FacebookPageParser
4
+ module Exceptions
5
+ class AuthenticationFailedError < StandardError
6
+ end
7
+
8
+ class ResourceNotAvailableError < StandardError
9
+ end
10
+
11
+ class UnauthorizedAccessError < StandardError
12
+ end
13
+
14
+ class UnknownServerError < StandardError
15
+ end
16
+
17
+ class WebServiceNotAvailableError < StandardError
18
+ end
19
+
20
+ def handle_failure(response)
21
+ case response.code
22
+ when "401"
23
+ message = "Authentication failure. HTTP status 401"
24
+ raise AuthenticationFailedError, message
25
+ when "403"
26
+ message = "Unauthorized access. HTTP status 403"
27
+ raise UnauthorizedAccessError, message
28
+ when "404"
29
+ message = "Resource not found. HTTP status 404"
30
+ raise ResourceNotAvailableError, message
31
+ when "500"
32
+ message = "Web service reported an internal error. HTTP status 500"
33
+ raise UnknownServerError, message
34
+ else
35
+ message = "Web Service unavailable - unidentified error. HTTP status #{response.code}"
36
+ raise WebServiceNotAvailableError, message
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,36 @@
1
+ #encoding: utf-8
2
+
3
+ require 'httparty'
4
+ require 'facebook_page_parser/exceptions'
5
+
6
+ module FacebookPageParser
7
+ class Parser
8
+ include HTTParty
9
+ extend Exceptions
10
+
11
+ attr_reader :page
12
+
13
+ def initialize(page)
14
+ @page = parse_url(page)
15
+ end
16
+
17
+ def parse_url(url)
18
+ url = url.gsub(/(http:\/\/)?([a-z\-]+|www)?\.?facebook.com\//,"")
19
+ id = (url.match(/(pages)+/)) ? url.split("/").last : url
20
+ "https://graph.facebook.com/#{id}"
21
+ end
22
+
23
+ #memoize request
24
+ def request
25
+ @request ||= self.class.get(@page)
26
+ end
27
+
28
+ def get
29
+ if request.success?
30
+ request
31
+ else
32
+ self.class.handle_failure(request.response)
33
+ end
34
+ end
35
+ end
36
+ end
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: facebook_page_parser
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Nicholas Pufal
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-24 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: httparty
16
+ requirement: &70357090866280 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70357090866280
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec
27
+ requirement: &70357090865060 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70357090865060
36
+ - !ruby/object:Gem::Dependency
37
+ name: vcr
38
+ requirement: &70357090863960 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70357090863960
47
+ - !ruby/object:Gem::Dependency
48
+ name: webmock
49
+ requirement: &70357090863280 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 1.7.0
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70357090863280
58
+ description: This is a very simple parser for Facebook Pages (a.k.a fan pages), using
59
+ the Graph API. This gem was made in 2 hours for an experimental project, so many
60
+ small fixes need to be made. You're welcome to make a pull request :)'
61
+ email:
62
+ - niko.pufal@gmail.com
63
+ executables: []
64
+ extensions: []
65
+ extra_rdoc_files: []
66
+ files:
67
+ - lib/facebook_page_parser/exceptions.rb
68
+ - lib/facebook_page_parser.rb
69
+ homepage: https://github.com/nicholaspufal/facebook-page-parser
70
+ licenses: []
71
+ post_install_message:
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ! '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ requirements: []
88
+ rubyforge_project:
89
+ rubygems_version: 1.8.15
90
+ signing_key:
91
+ specification_version: 3
92
+ summary: Parser for Facebook Pages using the Graph API
93
+ test_files: []
94
+ has_rdoc: