class FirebaseDynamicLink::LinkRenderer
Responsible to formatting output of Client#shorten_link
Public Instance Methods
render(response)
click to toggle source
@param response [Faraday::Connection] http reponse @return [Hash<Symbol, String or Hash> @example
{ :link => short link result :preview_link => preview of short link result :warning => warning message by Firebase if present }
@raise FirebaseDynamicLink::ConnectionError
if there is something wrong with Faraday request @raise FirebaseDynamicLink::QuotaExceeded
if request reached Google Firebase quota
# File lib/firebase_dynamic_link/link_renderer.rb, line 16 def render(response) if response.status.between?(200, 299) render_success(response) elsif response.status == 429 raise_limit_has_reached else raise_error(response) end end
Private Instance Methods
raise_error(response)
click to toggle source
# File lib/firebase_dynamic_link/link_renderer.rb, line 38 def raise_error(response) reason = response.reason_phrase.to_s if response.respond_to?(:reason_phrase) message = begin body = JSON.parse(response.body) body["error"]["message"] rescue JSON::ParserError, NoMethodError response.body end raise FirebaseDynamicLink::ConnectionError, [reason, message].compact.join(": ") end
raise_limit_has_reached()
click to toggle source
# File lib/firebase_dynamic_link/link_renderer.rb, line 49 def raise_limit_has_reached raise FirebaseDynamicLink::QuotaExceeded, "Request limit has been reached" end
render_success(response)
click to toggle source
# File lib/firebase_dynamic_link/link_renderer.rb, line 28 def render_success(response) body = JSON.parse(response.body) return raise_error(response) if body.key?("error") { link: body["shortLink"], preview_link: body["previewLink"], warning: body["warning"] } end