Class: OmniAuth::Strategies::Datadog

Inherits:
OAuth2
  • Object
show all
Defined in:
lib/omniauth/strategies/datadog.rb

Constant Summary collapse

CLIENT_OPTIONS =
{
  site: 'https://app.datadoghq.com',
  authorize_url: 'oauth2/v1/authorize',
  token_url: 'oauth2/v1/token',
  auth_scheme: :request_body
}
VALID_DOMAINS =
[
  'datadoghq.eu',
  'datadoghq.com'
]

Instance Method Summary collapse

Instance Method Details

#build_access_tokenObject



35
36
37
38
# File 'lib/omniauth/strategies/datadog.rb', line 35

def build_access_token
  verifier = request.params["code"]
  client.auth_code.get_token(verifier, {:redirect_uri => callback_url}.merge(token_params.to_hash(:symbolize_keys => true)), deep_symbolize(options.auth_token_params))
end

#callback_urlObject



31
32
33
# File 'lib/omniauth/strategies/datadog.rb', line 31

def callback_url
  full_host + callback_path
end

#clientObject

Datadog has a few different domains.



41
42
43
44
45
# File 'lib/omniauth/strategies/datadog.rb', line 41

def client
  client_options = options.client_options
  client_options['site'] = request.params['site'] if request.params['site'] && VALID_DOMAINS.any? { |d| request.params['site'].end_with?(d) }
  ::OAuth2::Client.new(options.client_id, options.client_secret, deep_symbolize(client_options))
end

#raw_infoObject



27
28
29
# File 'lib/omniauth/strategies/datadog.rb', line 27

def raw_info
  @raw_info ||= request.params.slice('dd_org_name', 'dd_oid', 'site')
end