domain.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import Curd from '@/api/curd'
  2. import http from '@/lib/http'
  3. import type { ChatComplicationMessage } from '@/api/openai'
  4. import type { CertificateInfo } from '@/api/cert'
  5. import type { NgxConfig } from '@/api/ngx'
  6. export interface Site {
  7. modified_at: string
  8. advanced: boolean
  9. enabled: boolean
  10. name: string
  11. config: string
  12. auto_cert: boolean
  13. chatgpt_messages: ChatComplicationMessage[]
  14. tokenized?: NgxConfig
  15. cert_info?: {
  16. [key: number]: CertificateInfo
  17. }
  18. }
  19. export interface AutoCertRequest {
  20. dns_credential_id: number
  21. challenge_method: string
  22. domains: string[]
  23. }
  24. class Domain extends Curd<Site> {
  25. // eslint-disable-next-line @typescript-eslint/no-explicit-any
  26. enable(name: string, config?: any) {
  27. return http.post(`${this.baseUrl}/${name}/enable`, undefined, config)
  28. }
  29. disable(name: string) {
  30. return http.post(`${this.baseUrl}/${name}/disable`)
  31. }
  32. get_template() {
  33. return http.get('template')
  34. }
  35. add_auto_cert(domain: string, data: AutoCertRequest) {
  36. return http.post(`auto_cert/${domain}`, data)
  37. }
  38. remove_auto_cert(domain: string) {
  39. return http.delete(`auto_cert/${domain}`)
  40. }
  41. duplicate(name: string, data: { name: string }): Promise<{ dst: string }> {
  42. return http.post(`${this.baseUrl}/${name}/duplicate`, data)
  43. }
  44. advance_mode(name: string, data: { advanced: boolean }) {
  45. return http.post(`${this.baseUrl}/${name}/advance`, data)
  46. }
  47. }
  48. const domain = new Domain('/domain')
  49. export default domain