Class: ServicePing::SubmitService

Inherits:
Object
  • Object
show all
Defined in:
app/services/service_ping/submit_service.rb

Constant Summary collapse

PRODUCTION_BASE_URL =
'https://version.gitlab.com'
STAGING_BASE_URL =
'https://gitlab-org-gitlab-services-version-gitlab-com-staging.version-staging.gitlab.org'
USAGE_DATA_PATH =
'usage_data'
ERROR_PATH =
'usage_ping_errors'
METADATA_PATH =
'usage_ping_metadata'
SubmissionError =
Class.new(StandardError)

Instance Method Summary collapse

Constructor Details

#initialize(skip_db_write: false, payload: nil) ⇒ SubmitService

Returns a new instance of SubmitService.



13
14
15
16
# File 'app/services/service_ping/submit_service.rb', line 13

def initialize(skip_db_write: false, payload: nil)
  @skip_db_write = skip_db_write
  @payload = payload
end

Instance Method Details

#executeObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/services/service_ping/submit_service.rb', line 18

def execute
  return unless ServicePing::ServicePingSettings.product_intelligence_enabled?

  start_time = Time.current

  begin
    response = submit_usage_data_payload

    raise SubmissionError, "Unsuccessful response code: #{response.code}" unless response.success?

    handle_response(response)
    
  rescue StandardError => e
    submit_error_payload(e, start_time)

    raise
  end
end