Class: Kameleoon::Network::UrlProvider

Inherits:
Object
  • Object
show all
Defined in:
lib/kameleoon/network/url_provider.rb

Overview

UrlProvider is used as a source of URLs for network calls.

Constant Summary collapse

TRACKING_PATH =
'/visit/events'
VISITOR_DATA_PATH =
'/visit/visitor'
GET_DATA_PATH =
'/map/map'
POST_DATA_PATH =
'/map/maps'
ACCESS_TOKEN_PATH =
'/oauth/token'
DEFAULT_EVENTS_DOMAIN =
'events.kameleoon.eu'
DEFAULT_CONFIGURATION_DOMAIN =
'sdk-config.kameleoon.eu'
DEFAULT_ACCESS_TOKEN_DOMAIN =
'api.kameleoon.com'
DEFAULT_DATA_API_DOMAIN =
'data.kameleoon.io'
CONFIGURATION_API_URL_FORMAT =
'https://%s/v3/%s'
DATA_API_URL_FORMAT =
'https://%s%s?%s'
RT_CONFIGURATION_URL_FORMAT =
'https://%s:8110/sse?%s'
ACCESS_TOKEN_URL_FORMAT =
'https://%s/oauth/token'
TEST_DATA_API_DOMAIN =
'data.kameleoon.net'
TEST_AUTOMATION_API_DOMAIN =
'api.kameleoon.net'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(site_code, network_domain = nil) ⇒ UrlProvider

Returns a new instance of UrlProvider.



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/kameleoon/network/url_provider.rb', line 32

def initialize(
  site_code,
  network_domain = nil
)
  @site_code = site_code
  @data_api_domain = DEFAULT_DATA_API_DOMAIN
  @events_domain = DEFAULT_EVENTS_DOMAIN
  @configuration_domain = DEFAULT_CONFIGURATION_DOMAIN
  @access_token_domain = DEFAULT_ACCESS_TOKEN_DOMAIN
  @is_custom_domain = false
  update_domains(network_domain)
end

Instance Attribute Details

#access_token_domainObject (readonly)

Returns the value of attribute access_token_domain.



30
31
32
# File 'lib/kameleoon/network/url_provider.rb', line 30

def access_token_domain
  @access_token_domain
end

#configuration_domainObject (readonly)

Returns the value of attribute configuration_domain.



30
31
32
# File 'lib/kameleoon/network/url_provider.rb', line 30

def configuration_domain
  @configuration_domain
end

#data_api_domainObject (readonly)

Returns the value of attribute data_api_domain.



30
31
32
# File 'lib/kameleoon/network/url_provider.rb', line 30

def data_api_domain
  @data_api_domain
end

#events_domainObject (readonly)

Returns the value of attribute events_domain.



30
31
32
# File 'lib/kameleoon/network/url_provider.rb', line 30

def events_domain
  @events_domain
end

#site_codeObject (readonly)

Returns the value of attribute site_code.



30
31
32
# File 'lib/kameleoon/network/url_provider.rb', line 30

def site_code
  @site_code
end

Instance Method Details

#apply_data_api_domain(domain) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'lib/kameleoon/network/url_provider.rb', line 45

def apply_data_api_domain(domain)
  return if domain.nil? || domain.empty?

  if @is_custom_domain
    sub_domain = domain.split('.').first
    @data_api_domain = @data_api_domain.sub(/^[^.]+/, sub_domain)
  else
    @data_api_domain = domain
  end
end

#make_access_token_urlObject



106
107
108
# File 'lib/kameleoon/network/url_provider.rb', line 106

def make_access_token_url
  format(ACCESS_TOKEN_URL_FORMAT, @access_token_domain)
end

#make_api_data_get_request_url(key) ⇒ Object



84
85
86
87
88
89
90
# File 'lib/kameleoon/network/url_provider.rb', line 84

def make_api_data_get_request_url(key)
  params = {
    siteCode: @site_code,
    key: key
  }
  format(DATA_API_URL_FORMAT, @data_api_domain, GET_DATA_PATH, UriHelper.encode_query(params))
end

#make_configuration_url(environment = nil, timestamp = nil) ⇒ Object



92
93
94
95
96
97
98
99
# File 'lib/kameleoon/network/url_provider.rb', line 92

def make_configuration_url(environment = nil, timestamp = nil)
  url = format(CONFIGURATION_API_URL_FORMAT, @configuration_domain, @site_code)
  params = {}
  params[:environment] = environment unless environment.nil?
  params[:ts] = timestamp unless timestamp.nil?
  url = "#{url}?#{UriHelper.encode_query(params)}" unless params.empty?
  url
end

#make_real_time_urlObject



101
102
103
104
# File 'lib/kameleoon/network/url_provider.rb', line 101

def make_real_time_url
  params = { siteCode: @site_code }
  format(RT_CONFIGURATION_URL_FORMAT, @events_domain, UriHelper.encode_query(params))
end

#make_tracking_urlObject



56
57
58
59
60
61
62
63
64
# File 'lib/kameleoon/network/url_provider.rb', line 56

def make_tracking_url
  params = {
    sdkName: SDK_NAME,
    sdkVersion: SDK_VERSION,
    siteCode: @site_code,
    bodyUa: true
  }
  format(DATA_API_URL_FORMAT, @data_api_domain, TRACKING_PATH, UriHelper.encode_query(params))
end

#make_visitor_data_get_url(visitor_code, filter, is_unique_identifier = false) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/kameleoon/network/url_provider.rb', line 66

def make_visitor_data_get_url(visitor_code, filter, is_unique_identifier = false)
  params = { siteCode: @site_code }
  params[is_unique_identifier ? :mappingValue : :visitorCode] = visitor_code
  params[:maxNumberPreviousVisits] = filter.previous_visit_amount
  params[:version] = 0
  params[:staticData] = true
  params[:kcs] = true if filter.kcs
  params[:currentVisit] = true if filter.current_visit
  params[:customData] = true if filter.custom_data
  params[:conversion] = true if filter.conversions
  params[:geolocation] = true if filter.geolocation
  params[:experiment] = true if filter.experiments
  params[:page] = true if filter.page_views
  params[:personalization] = true if filter.personalization
  params[:cbs] = true if filter.cbs
  format(DATA_API_URL_FORMAT, @data_api_domain, VISITOR_DATA_PATH, UriHelper.encode_query(params))
end