Status RequestBuilder::FillCheckRequest()

in src/api_proxy/service_control/request_builder.cc [1051:1091]


Status RequestBuilder::FillCheckRequest(const CheckRequestInfo& info,
                                        CheckRequest* request) const {
  Status status = VerifyRequiredCheckFields(info);
  if (!status.ok()) {
    return status;
  }
  request->set_service_name(service_name_);
  request->set_service_config_id(service_config_id_);

  Timestamp current_time = CreateTimestamp(info.current_time);
  Operation* op = request->mutable_operation();
  SetOperationCommonFields(info, current_time, op);
  if (!info.api_key.empty()) {
    // For check request, we send the API key as is.
    op->set_consumer_id(std::string(kConsumerIdApiKey) +
                        std::string(info.api_key));
  }

  auto* labels = op->mutable_labels();
  if (!info.client_ip.empty()) {
    (*labels)[kServiceControlCallerIp] = info.client_ip;
  }
  if (!info.referer.empty()) {
    (*labels)[kServiceControlReferer] = info.referer;
  }
  (*labels)[kServiceControlUserAgent] = kUserAgent;
  (*labels)[kServiceControlServiceAgent] = get_service_agent();

  if (!info.android_package_name.empty()) {
    (*labels)[kServiceControlAndroidPackageName] = info.android_package_name;
  }
  if (!info.android_cert_fingerprint.empty()) {
    (*labels)[kServiceControlAndroidCertFingerprint] =
        info.android_cert_fingerprint;
  }
  if (!info.ios_bundle_id.empty()) {
    (*labels)[kServiceControlIosBundleId] = info.ios_bundle_id;
  }

  return OkStatus();
}