Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | 2x 19x 19x 19x 19x 4x 4x 4x 3x 1x 10x 10x 10x 4x 6x 9x 8x 8x 8x 2x 2x | import { NativeModules } from 'react-native'
import { UnknownError } from './errors'
import type { FingerprintJsProAgentParams, ProAgent, RequestOptions, Tags, VisitorData, VisitorId } from './types'
import { unwrapError } from './unwrapError'
const packageVersion = '__VERSION__'
/**
*
* @group API Client approach
*/
export class FingerprintJsProAgent implements ProAgent {
/**
* Initialises FingerprintJS Pro Agent with certain settings
*
* @param params
*/
private requestOptions: RequestOptions = {}
constructor({
apiKey,
region,
endpointUrl,
fallbackEndpointUrls = [],
extendedResponseFormat = false,
requestOptions = {},
allowUseOfLocationData = false,
locationTimeoutMillisAndroid = 5000,
}: FingerprintJsProAgentParams) {
try {
NativeModules.RNFingerprintjsPro.configure(
apiKey,
region,
endpointUrl,
fallbackEndpointUrls,
extendedResponseFormat,
packageVersion,
allowUseOfLocationData,
locationTimeoutMillisAndroid
)
this.requestOptions = requestOptions
} catch (e) {
console.error('RNFingerprintjsPro configure error: ', e)
}
}
/**
* Returns visitor identifier based on the request options {@link https://dev.fingerprint.com/docs/native-android-integration#get-the-visitor-identifier | more info in the documentation page}
*
* @param tags is a customer-provided value or an object that will be saved together with the analysis event and will be returned back to you in a webhook message or when you search for the visit in the server API. {@link https://dev.fingerprint.com/docs/js-agent#tag | more info in the documentation page}
* @param linkedId is a way of linking current analysis event with a custom identifier. This will allow you to filter visit information when using the Server API {@link https://dev.fingerprint.com/docs/js-agent#linkedid | more info in the documentation page}
* @param options is used to configure requests with different settings
*/
public async getVisitorId(tags?: Tags, linkedId?: string, options?: RequestOptions): Promise<VisitorId> {
try {
const timeout = options?.timeout ?? this.requestOptions.timeout
if (timeout != null) {
return await NativeModules.RNFingerprintjsPro.getVisitorIdWithTimeout(tags, linkedId, timeout)
}
return await NativeModules.RNFingerprintjsPro.getVisitorId(tags, linkedId)
} catch (error) {
if (error instanceof Error) {
throw unwrapError(error)
} else {
throw new UnknownError(String(error))
}
}
}
/**
* Returns visitor identification data based on the request options {@link https://dev.fingerprint.com/docs/native-android-integration#get-the-visitor-identifier | more info in the documentation page}
*
* Provide `extendedResponseFormat` option in the {@link constructor} to get response in the {@link https://dev.fingerprint.com/docs/native-android-integration#response-format | extended format}
*
* @param tags is a customer-provided value or an object that will be saved together with the analysis event and will be returned back to you in a webhook message or when you search for the visit in the server API. {@link https://dev.fingerprint.com/docs/js-agent#tag | more info in the documentation page}
* @param linkedId is a way of linking current analysis event with a custom identifier. This will allow you to filter visit information when using the Server API {@link https://dev.fingerprint.com/docs/js-agent#linkedid | more info in the documentation page}
* @param options is used to configure requests with different settings
*/
public async getVisitorData(tags?: Tags, linkedId?: string, options?: RequestOptions): Promise<VisitorData> {
try {
const timeout = options?.timeout ?? this.requestOptions.timeout
let visitorData: unknown[] | null
if (timeout != null) {
visitorData = await NativeModules.RNFingerprintjsPro.getVisitorDataWithTimeout(tags, linkedId, timeout)
} else {
visitorData = await NativeModules.RNFingerprintjsPro.getVisitorData(tags, linkedId)
}
const [requestId, confidenceScore, visitorDataJsonString, sealedResult] = visitorData!
const result = {
...JSON.parse(visitorDataJsonString as string),
requestId,
confidence: {
score: confidenceScore,
},
}
Iif (sealedResult) {
result['sealedResult'] = sealedResult
}
return result
} catch (error) {
if (error instanceof Error) {
throw unwrapError(error)
} else E{
throw new UnknownError(String(error))
}
}
}
}
|