export async function callCreateAssessment()

in src/createAssessment.ts [222:263]


export async function callCreateAssessment(
  context: RecaptchaContext,
  req: EdgeRequest,
  environment?: [string, string],
  additionalParams?: Event,
): Promise<Assessment> {
  // TODO: this should use a builder pattern. with a CreateAssessmentRequest type.
  const site_info = await createPartialEventWithSiteInfo(context, req);
  const site_features = await context.buildEvent(req);
  if (req.method === "POST" && new URL(req.url).pathname === context.config.credentialPath) {
    site_features.userInfo = await getUserInfo(req, context.config.accountId, context.config.username);
  }

  const event = {
    ...site_info,
    ...site_features,
    ...additionalParams,
  };
  const assessment: Assessment = { event };
  assessment.assessmentEnvironment = {
    client: (environment ?? context.environment)[0],
    version: (environment ?? context.environment)[1],
  };
  const options: EdgeRequestInit = {
    method: "POST",
    body: JSON.stringify(assessment),
    headers: {
      "content-type": "application/json;charset=UTF-8",
    },
  };

  return context
    .fetch_create_assessment(options)
    .catch((reason) => {
      context.log("debug", "[rpc] createAssessment (fail)");
      context.debug_trace.create_assessment_status = "err";
      if (reason instanceof error.RecaptchaError) {
        throw reason;
      }
      throw new error.NetworkError(reason.message, action.createAllowAction());
    });
}