import { createReadStream } from "fs";
import { ApiError } from "../../middleware/ApiError";
import CloudeFormdata from 'form-data'
import axios from "axios";
import { prisma } from "../../utils/prisma";


export class InvitationService {

    private readonly clerk_secret_key: string
    private readonly clerk_domain: string = 'https://api.clerk.com/v1'

    constructor() {
        this.clerk_secret_key = process.env.CLERK_SECRET_KEY as string
    }


    // force clear cloud cache


    async createInvitationService(email: string, redirect: string) {


        const response = await axios.post(`${this.clerk_domain}/invitations`,
            {
                email_address: email,
                // redirect_url: redirect ?? process.env.ACCESS_DOMAIN,
                redirect_url: `${process.env.ACCESS_DOMAIN}/register`,
                expires_in_days: 1,
                ignore_existing: false,
                afterSignUpUrl: process.env.ACCESS_DOMAIN

            },
            {
                headers: {
                    Authorization: `Bearer ${this.clerk_secret_key}`
                }
            }
        )

        return response.data

    }



    async getAllInvitationService() {
        const response = await axios.get(`${this.clerk_domain}/invitations`, {
            headers: {
                Authorization: `Bearer ${this.clerk_secret_key}`
            }
        });
        return response.data
    }



    async deleteInvitationService(id: string) {


        const response = await axios.post(`${this.clerk_domain}/invitations/${id}/revoke`, {}, {
            headers: {
                Authorization: `Bearer ${this.clerk_secret_key}`
            }
        })

        return response.data
    }






}

export default new InvitationService();