Class: Facebook::Middleware::ExceptionRaiser

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/facebook-client/middleware/exception_raiser.rb

Overview

Raise beautiful exceptions

Instance Method Summary collapse

Instance Method Details

#call(env) ⇒ Object

For handling errors, the message that gets returned is of the following format: => env[:status], :headers => env[:response_headers], :body => env[:body]



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/facebook-client/middleware/exception_raiser.rb', line 19

def call(env)
  begin
    @app.call(env)
  rescue Faraday::Error::ClientError => e
    # Error codes are based upon:
    # http://fbdevwiki.com/wiki/Error_codes#Error_Code_Table
    fb_error_code = e.response[:body].try(:[], 'error').try(:[], 'code')

    # Translate our error code into an exception
    exception =
      case fb_error_code
      ## (0-99) General Errors
      when 2
        Facebook::ServiceError
      when 3
        Facebook::UnknownMethodError
      when 4, 18, 9, 17
        Facebook::RequestLimitError
      when 10
        Facebook::ApplicationPermissionError
      when 11
        Facebook::MethodDeprecatedError
      when 0..99
        Facebook::GeneralError
      ## (100-199) Parameter Errors
      when 101
        Facebook::InvalidAPIKeyError
      when 102
        Facebook::InvalidSessionKeyError
      when 190
        Facebook::InvalidAccessTokenError
      when 100..199
        Facebook::ParameterError
      ## (200-299) User Permission Errors
      when 200
        Facebook::PermissionError
      when 212
        Facebook::OfflineAccessPermissionError
      when 200..299
        Facebook::UserPermissionError
      ## (300-399) Data Editing Errors
      when 300..399
        Facebook::DataEditingError
      ## (400-449) Authentication Errors
      when 400..449
        Facebook::AuthenticationError
      ## (450-455) Session Errors
      when 450..455
        Facebook::SessionError
      ## (500-599) Application Messaging Errors
      when 500..599
        Facebook::ApplicationMessagingError
      ## (600-699) FQL Errors
      when 600..699
        Facebook::FQLError
      ## (700-749) Ref Errors
      when 700..749
        Facebook::RefError
      ## (750-799) Application Integration Errors
      when 750..799
        Facebook::ApplicationIntegrationError
      ## (900-949) Application Information Errors
      when 900..949
        Facebook::ApplicationInformationError
      ## (950-999) Batch API Errors
      when 950..999
        Facebook::BatchAPIError
      else
        Facebook::GenericException
      end

    raise exception, e.response
  rescue Saddle::TimeoutError => e
    raise Facebook::TimeoutError, e.response
  end
end