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());
});
}