@le7el/rewards_engine
Version:
Smart contracts that distribute reward tokens according to conditional oracle or a merkle root
56 lines (49 loc) • 1.52 kB
text/typescript
import { Wallet } from 'ethers'
const API_URL: string = 'https://tools.le7el.com/tools/v1/events'
export default class Le7eLEvents {
private readonly api_url: string
private readonly signer: Wallet
constructor(private_key: string, api_url: string = API_URL) {
this.signer = new Wallet(private_key)
this.api_url = api_url
}
public sendEvent(
user_id: string,
event: string,
payload: Object,
nonce: number = 0,
context_type: string = 'filter',
user_id_type: string = 'wallet',
platform: string = 'web'
) {
if (context_type !== 'filter') throw 'only fitlers are supported as context'
if (user_id_type !== 'wallet') throw 'only wallets are supported as user id type'
if (!user_id) throw 'user is required'
if (!event) throw 'event is required'
if (!nonce || nonce == 0) nonce = Date.now()
const data: string = JSON.stringify({
nonce,
user_id,
user_id_type,
context_type,
platform,
event,
payload
})
const api_url: string = this.api_url
return this.signer.signMessage(data)
.then((raw_signature: string) => {
return fetch(api_url, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${raw_signature}`,
"Nonce": `${nonce}`
},
body: data
})
})
.then((response: Response) => response.json())
.then((data: any) => console.log(data))
}
}