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.
- data/lib/facebook_page_parser/exceptions.rb +40 -0
- data/lib/facebook_page_parser.rb +36 -0
- metadata +94 -0
@@ -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:
|