universal_ssl.go 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package cloudflare
  2. import (
  3. "encoding/json"
  4. "github.com/pkg/errors"
  5. )
  6. // UniversalSSLSetting represents a universal ssl setting's properties.
  7. type UniversalSSLSetting struct {
  8. Enabled bool `json:"enabled"`
  9. }
  10. type universalSSLSettingResponse struct {
  11. Response
  12. Result UniversalSSLSetting `json:"result"`
  13. }
  14. // UniversalSSLVerificationDetails represents a universal ssl verifcation's properties.
  15. type UniversalSSLVerificationDetails struct {
  16. CertificateStatus string `json:"certificate_status"`
  17. VerificationType string `json:"verification_type"`
  18. ValidationMethod string `json:"validation_method"`
  19. CertPackUUID string `json:"cert_pack_uuid"`
  20. VerificationStatus bool `json:"verification_status"`
  21. BrandCheck bool `json:"brand_check"`
  22. VerificationInfo UniversalSSLVerificationInfo `json:"verification_info"`
  23. }
  24. // UniversalSSLVerificationInfo represents DCV record.
  25. type UniversalSSLVerificationInfo struct {
  26. RecordName string `json:"record_name"`
  27. RecordTarget string `json:"record_target"`
  28. }
  29. type universalSSLVerificationResponse struct {
  30. Response
  31. Result []UniversalSSLVerificationDetails `json:"result"`
  32. }
  33. // UniversalSSLSettingDetails returns the details for a universal ssl setting
  34. //
  35. // API reference: https://api.cloudflare.com/#universal-ssl-settings-for-a-zone-universal-ssl-settings-details
  36. func (api *API) UniversalSSLSettingDetails(zoneID string) (UniversalSSLSetting, error) {
  37. uri := "/zones/" + zoneID + "/ssl/universal/settings"
  38. res, err := api.makeRequest("GET", uri, nil)
  39. if err != nil {
  40. return UniversalSSLSetting{}, errors.Wrap(err, errMakeRequestError)
  41. }
  42. var r universalSSLSettingResponse
  43. if err := json.Unmarshal(res, &r); err != nil {
  44. return UniversalSSLSetting{}, errors.Wrap(err, errUnmarshalError)
  45. }
  46. return r.Result, nil
  47. }
  48. // EditUniversalSSLSetting edits the uniersal ssl setting for a zone
  49. //
  50. // API reference: https://api.cloudflare.com/#universal-ssl-settings-for-a-zone-edit-universal-ssl-settings
  51. func (api *API) EditUniversalSSLSetting(zoneID string, setting UniversalSSLSetting) (UniversalSSLSetting, error) {
  52. uri := "/zones/" + zoneID + "/ssl/universal/settings"
  53. res, err := api.makeRequest("PATCH", uri, setting)
  54. if err != nil {
  55. return UniversalSSLSetting{}, errors.Wrap(err, errMakeRequestError)
  56. }
  57. var r universalSSLSettingResponse
  58. if err := json.Unmarshal(res, &r); err != nil {
  59. return UniversalSSLSetting{}, errors.Wrap(err, errUnmarshalError)
  60. }
  61. return r.Result, nil
  62. }
  63. // UniversalSSLVerificationDetails returns the details for a universal ssl verifcation
  64. //
  65. // API reference: https://api.cloudflare.com/#ssl-verification-ssl-verification-details
  66. func (api *API) UniversalSSLVerificationDetails(zoneID string) ([]UniversalSSLVerificationDetails, error) {
  67. uri := "/zones/" + zoneID + "/ssl/verification"
  68. res, err := api.makeRequest("GET", uri, nil)
  69. if err != nil {
  70. return []UniversalSSLVerificationDetails{}, errors.Wrap(err, errMakeRequestError)
  71. }
  72. var r universalSSLVerificationResponse
  73. if err := json.Unmarshal(res, &r); err != nil {
  74. return []UniversalSSLVerificationDetails{}, errors.Wrap(err, errUnmarshalError)
  75. }
  76. return r.Result, nil
  77. }