NameL3ss

validate firebase_token_Service

Aug 13th, 2021 (edited)
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. class FirebaseTokenService
  2. EXCEPTIONS = [
  3. SocketError,
  4. RestClient::BadRequest,
  5. RestClient::Exceptions::OpenTimeout,
  6. RestClient::RequestTimeout,
  7. RestClient::InternalServerError,
  8. RestClient::BadGateway,
  9. RestClient::ServiceUnavailable,
  10. RestClient::GatewayTimeout,
  11. RestClient::BandwidthLimitExceeded,
  12. Errno::ECONNREFUSED
  13. ].freeze
  14.  
  15. API_KEY = Rails.application.credentials.fetch(:firebase_api_key, '')
  16. FIREBASE_URL = "https://identitytoolkit.googleapis.com/v1/accounts:lookup?key=#{API_KEY}"
  17. attr_reader :token
  18. attr_accessor :error
  19.  
  20. def initialize(token:)
  21. @token = token
  22. end
  23.  
  24. def call
  25. begin
  26. request = RestClient::Request.new(
  27. url: FIREBASE_URL,
  28. payload: payload,
  29. content_type: :json,
  30. method: :post,
  31. timeout: 60,
  32. open_timeout: 4
  33. ).execute
  34. rescue *EXCEPTIONS=> e
  35. @error = e.response
  36. end
  37. response_firebase(request.try(:code) == 200 ? request : error)
  38. end
  39.  
  40. private
  41.  
  42. def response_firebase(request)
  43. JSON.parse(request.body)
  44. end
  45.  
  46. def payload
  47. { idToken: token }
  48. end
  49. end
Add Comment
Please, Sign In to add comment