import { BaseJsonService } from '../index.js'
import { metric } from '../text-formatters.js'
import { floorCount as floorCountColor } from '../color-formatters.js'

export function renderQuestionsBadge({
  suffix,
  stackexchangesite,
  query,
  numValue,
}) {
  const label = `${stackexchangesite} ${query} questions`
  return {
    label,
    message: `${metric(numValue)}${suffix}`,
    color: floorCountColor(numValue, 1000, 10000, 20000),
  }
}

export class StackExchangeBase extends BaseJsonService {
  static category = 'chat'

  static auth = {
    passKey: 'stackapps_api_key',
    authorizedOrigins: ['https://api.stackexchange.com'],
    isRequired: false,
  }

  static defaultBadgeData = {
    label: 'stackoverflow',
  }

  async fetch(params) {
    return this._requestJson(
      this.authHelper.withQueryStringAuth({ passKey: 'key' }, params)
    )
  }
}
