// GD音乐台get(适配SPlayer的UNM-Server)
// 感谢来自GD Studio的开发API
// https://music.gdstudio.xyz/

const createOption = require('../util/option.js')

module.exports = async (query, request) => {
  try {
    const { id, br = '320' } = query
    if (!id) {
      return {
        status: 400,
        body: {
          code: 400,
          message: '缺少必要参数 id',
          data: [],
        },
      }
    }
    const validBR = ['128', '192', '320', '740', '999']
    // const covertBR = ['128000', '192000', '320000','740000', '999000']
    if (!validBR.includes(br)) {
      return {
        status: 400,
        body: {
          code: 400,
          message: '无效音质参数',
          allowed_values: validBR,
          data: [],
        },
      }
    }

    const apiUrl = new URL('https://music-api.gdstudio.xyz/api.php')
    apiUrl.searchParams.append('types', 'url')
    apiUrl.searchParams.append('id', id)
    apiUrl.searchParams.append('br', br)

    const response = await fetch(apiUrl.toString())
    if (!response.ok) throw new Error(`API 响应状态: ${response.status}`)
    const result = await response.json()

    // 代理逻辑
    const useProxy = process.env.ENABLE_PROXY || false
    const proxy = process.env.PROXY_URL
    if (useProxy && result.url && result.url.includes('kuwo')) {
      result.proxyUrl = proxy + result.url.replace(/^http:\/\//, 'http/')
    }

    return {
      status: 200,
      body: {
        code: 200,
        message: '请求成功',
        data: {
          id,
          br,
          url: result.url,
          ...(proxy && result.proxyUrl ? { proxyUrl: result.proxyUrl } : {}),
        },
      },
    }
  } catch (error) {
    console.error('Error in song_url_ncmget:', error)
    return {
      status: 500,
      body: {
        code: 500,
        message: '服务器处理请求失败',
        ...(process.env.NODE_ENV === 'development'
          ? { error: error.message }
          : {}),
        data: [],
      },
    }
  }
}
