42 lines
1.0 KiB
Ruby
42 lines
1.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module GoogleCloud
|
|
module LoggingService
|
|
class Logger
|
|
WRITE_URL = "https://logging.googleapis.com/v2/entries:write"
|
|
SCOPE = "https://www.googleapis.com/auth/logging.write"
|
|
|
|
def initialize
|
|
@auth = GoogleCloud::Authentication.new(scope: SCOPE)
|
|
end
|
|
|
|
def log(client_email, private_key, payload)
|
|
access_token = @auth.generate_access_token(client_email, private_key)
|
|
|
|
return unless access_token
|
|
|
|
headers = build_headers(access_token)
|
|
|
|
post(WRITE_URL, body: payload, headers: headers)
|
|
end
|
|
|
|
private
|
|
|
|
def build_headers(access_token)
|
|
{ 'Authorization' => "Bearer #{access_token}", 'Content-Type' => 'application/json' }
|
|
end
|
|
|
|
def post(url, body:, headers:)
|
|
Gitlab::HTTP.post(
|
|
url,
|
|
body: body,
|
|
headers: headers
|
|
)
|
|
rescue URI::InvalidURIError => e
|
|
Gitlab::ErrorTracking.log_exception(e)
|
|
rescue *Gitlab::HTTP::HTTP_ERRORS
|
|
end
|
|
end
|
|
end
|
|
end
|