fabasoad/nsfw-detection-action

View on GitHub
src/detection/providers/DeepaiNsfwDetectionProvider.ts

Summary

Maintainability
A
0 mins
Test Coverage
F
45%
import FormData from 'form-data'
import fs from 'fs'
import NsfwDetectionProviderBase from './NsfwDetectionProviderBase'

type DeepaiResponse = {
  output: {
    nsfw_score: number
  }
}

export class DeepaiNsfwDetectionProvider extends NsfwDetectionProviderBase {
  constructor() {
    super('https://api.deepai.org/api/nsfw-detector')
  }

  public async getScore(apiKey: string, file: fs.PathLike): Promise<number> {
    const body = new FormData()
    body.append('image', fs.createReadStream(file))

    const headers = body.getHeaders()
    headers['api-key'] = apiKey

    const resp = await this.request<DeepaiResponse>(body, headers)
    return resp.output.nsfw_score
  }
}