require 'addressable/uri'
# A wrapper to Nexaas ID's widget API
#
# [API]
# Documentation:
#
# @example Obtaining the user's navbar URL:
# client = NexaasID::Client::Identity.new(credentials)
# client.widget.navbar_url
#
# @example Inviting a new user to Nexaas ID (on behalf of an application):
# client = NexaasID::Client::Application.new
# client.sign_up.create('john.doe@gmail.com')
#
# @see NexaasID::Client::Identity#initialize
class NexaasID::Resources::Widget < NexaasID::Resources::Base
# Retrieves the user's navbar URL
#
# [API]
# Method: GET /api/v1/widgets/navbar
#
# Documentation:
#
# @return [String] user's navbar URL
def navbar_url(redirect_uri = nil)
access_token = api.token
querystring =
if access_token
{ access_token: access_token }
elsif redirect_uri
{
client_id: configuration.application_token,
redirect_uri: redirect_uri
}
else
nil
end
uri = Addressable::URI.parse(configuration.url)
uri.path = '/api/v1/widgets/navbar'
uri.query_values = querystring
uri.to_s
end
# Retrieves the user's widget URL
#
# [API]
# Method: GET /api/v1/widgets/user
#
# Documentation:
#
# @return [String] user's widget URL
def widget_url(callback = 'initWidget')
%(#{configuration.url}/api/v1/widgets/user.js?access_token=#{api.token}&callback=#{callback})
end
end