class Aws::ClientSideMonitoring::RequestMetrics::ApiCall

def _truncate(document)

def _truncate(document)
  document.each do |key, value|
    limit = FIELD_MAX_LENGTH[key]
    if limit && value.to_s.length > limit
      document[key] = value.to_s.slice(0...limit)
    end
  end
  document
end

def complete(opts = {})

def complete(opts = {})
  @latency = opts[:latency]
  @attempt_count = opts[:attempt_count]
  @user_agent = opts[:user_agent]
  if opts[:final_error_retryable]
    @max_retries_exceeded = 1
  else
    @max_retries_exceeded = 0
  end
  @final_http_status_code = opts[:final_http_status_code]
  @final_aws_exception = opts[:final_aws_exception]
  @final_aws_exception_message = opts[:final_aws_exception_message]
  @final_sdk_exception = opts[:final_sdk_exception]
  @final_sdk_exception_message = opts[:final_sdk_exception_message]
  @region = opts[:region] if opts[:region] # in case region changes
end

def initialize(service, api, client_id, version, timestamp, region)

def initialize(service, api, client_id, version, timestamp, region)
  @service = service
  @api = api
  @client_id = client_id
  @version = version
  @timestamp = timestamp
  @region = region
end

def to_json(*a)

def to_json(*a)
  document = {
    "Type" => "ApiCall",
    "Service" => @service,
    "Api" => @api,
    "ClientId" => @client_id,
    "Timestamp" => @timestamp,
    "Version" => @version,
    "AttemptCount" => @attempt_count,
    "Latency" => @latency,
    "Region" => @region,
    "MaxRetriesExceeded" => @max_retries_exceeded,
    "UserAgent" => @user_agent,
    "FinalHttpStatusCode" => @final_http_status_code,
  }
  document["FinalSdkException"] = @final_sdk_exception if @final_sdk_exception
  document["FinalSdkExceptionMessage"] = @final_sdk_exception_message if @final_sdk_exception_message
  document["FinalAwsException"] = @final_aws_exception if @final_aws_exception
  document["FinalAwsExceptionMessage"] = @final_aws_exception_message if @final_aws_exception_message
  document = _truncate(document)
  document.to_json
end