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