11package gohetznerdns
22
3- const recordsBasePath = "/records"
3+ // Client interfaces for the Hetzner DNS Public API Records endpoint
4+ // See api documentation for more information [https://dns.hetzner.com/api-docs#tag/Records]
5+ type RecordService interface {
46
5- type Record struct {
6- Type string `json:"type"`
7- Id string `json:"id"`
8- ZoneId string `json:"zone_id"`
9- Name string `json:"name"`
10- Value string `json:"value"`
11- TTL int `json:"ttl"`
12- }
13- type record struct {
14- Record * Record `json:"record"`
15- }
16- type Records struct {
17- Records []* Record `json:"records"`
18- ValidRecords []* Record `json:"valid_records"`
19- InvalidRecords []* Record `json:"invalid_records"`
20- }
7+ // Returns all records associated with user. [https://dns.hetzner.com/api-docs#operation/GetRecords]
8+ GetAllRecords (zone_id * string ) ([]* Record , error )
219
22- type RecordService interface {
23- GetAllRecords (zone_id string ) ([]* Record , error )
24- GetRecord (record_id string ) (* Record , error )
25- CreateRecord (request Record ) (* Record , error )
26- UpdateRecord (record_id string , request Record ) (* Record , error )
27- DeleteRecord (record_id string ) error
28- CreateRecords (request Records ) (* Records , error )
29- UpdateRecords (request Records ) (* Records , error )
10+ //Returns information about a single record. [https://dns.hetzner.com/api-docs#operation/GetRecord]
11+ GetRecord (record_id * string ) (* Record , error )
12+
13+ //Creates a new record. [https://dns.hetzner.com/api-docs#operation/CreateRecord]
14+ CreateRecord (request * Record ) (* Record , error )
15+
16+ //Updates a record. [https://dns.hetzner.com/api-docs#operation/UpdateRecord]
17+ UpdateRecord (request * Record ) (* Record , error )
18+
19+ //Deletes a record. [https://dns.hetzner.com/api-docs#operation/DeleteRecord]
20+ DeleteRecord (record_id * string ) error
3021}
3122
3223type recordService struct {
3324 client * client
3425}
3526
36- // GetAllRecords implements RecordsService.
37- func (service * recordService ) GetAllRecords (zone_id string ) ([]* Record , error ) {
27+ func (service * recordService ) GetAllRecords (zone_id * string ) ([]* Record , error ) {
3828 if err := validateNotEmpty ("zone_id" , zone_id ); err != nil {
3929 return nil , err
4030 }
@@ -43,7 +33,7 @@ func (service *recordService) GetAllRecords(zone_id string) ([]*Record, error) {
4333 createJsonRequest (200 ).
4434 setQueryParams (
4535 map [string ]string {
46- "zone_id" : zone_id ,
36+ "zone_id" : * zone_id ,
4737 }).
4838 setResult (records ).
4939 execute ("GET" , recordsBasePath )
@@ -52,26 +42,23 @@ func (service *recordService) GetAllRecords(zone_id string) ([]*Record, error) {
5242 }
5343 return records .Records , nil
5444}
55-
56- // GetRecord implements RecordsService.
57- func (service * recordService ) GetRecord (record_id string ) (* Record , error ) {
45+ func (service * recordService ) GetRecord (record_id * string ) (* Record , error ) {
5846 if err := validateNotEmpty ("record_id" , record_id ); err != nil {
5947 return nil , err
6048 }
61- record := new (record )
49+ record := new (RecordResponse )
6250 _ , err := service .client .
6351 createJsonRequest (200 ).
6452 setResult (record ).
65- execute ("GET" , recordsBasePath + "/" + record_id )
53+ execute ("GET" , recordsBasePath + "/" + * record_id )
6654 if err != nil {
6755 return nil , err
6856 }
6957 return record .Record , nil
7058}
7159
72- // CreateRecord implements RecordsService.
73- func (service * recordService ) CreateRecord (request Record ) (* Record , error ) {
74- record := new (record )
60+ func (service * recordService ) CreateRecord (request * Record ) (* Record , error ) {
61+ record := new (RecordResponse )
7562 _ , err := service .client .
7663 createJsonRequest (200 ).
7764 setResult (record ).
@@ -83,58 +70,29 @@ func (service *recordService) CreateRecord(request Record) (*Record, error) {
8370 return record .Record , nil
8471}
8572
86- // UpdateRecord implements RecordsService.
87- func (service * recordService ) UpdateRecord (record_id string , request Record ) (* Record , error ) {
88- if err := validateNotEmpty ("record_id" , record_id ); err != nil {
73+ func (service * recordService ) UpdateRecord (request * Record ) (* Record , error ) {
74+ if err := validateNotEmpty ("record_id" , request .Id ); err != nil {
8975 return nil , err
9076 }
91- record := new (record )
77+ record := new (RecordResponse )
9278 _ , err := service .client .
9379 createJsonRequest (200 ).
9480 setResult (record ).
9581 setBody (request ).
96- execute ("PUT" , recordsBasePath + "/" + record_id )
82+ execute ("PUT" , recordsBasePath + "/" + * request . Id )
9783 if err != nil {
9884 return nil , err
9985 }
10086 return record .Record , nil
10187}
10288
103- // GetRecord implements RecordsService.
104- func (service * recordService ) DeleteRecord (record_id string ) error {
89+ func (service * recordService ) DeleteRecord (record_id * string ) error {
10590 if err := validateNotEmpty ("record_id" , record_id ); err != nil {
10691 return err
10792 }
10893 _ , err := service .client .
10994 createTextRequest (200 , 404 ).
110- execute ("DELETE" , recordsBasePath + "/" + record_id )
95+ execute ("DELETE" , recordsBasePath + "/" + * record_id )
11196
11297 return err
11398}
114-
115- // BulkCreateRecords implements RecordsService.
116- func (service * recordService ) CreateRecords (request Records ) (* Records , error ) {
117- response := new (Records )
118- _ , err := service .client .
119- createJsonRequest (200 ).
120- setResult (response ).
121- setBody (request ).
122- execute ("POST" , recordsBasePath + "/bulk" )
123- if err != nil {
124- return nil , err
125- }
126- return response , nil
127- }
128-
129- func (service * recordService ) UpdateRecords (request Records ) (* Records , error ) {
130- response := new (Records )
131- _ , err := service .client .
132- createJsonRequest (200 ).
133- setResult (response ).
134- setBody (request ).
135- execute ("PUT" , recordsBasePath + "/bulk" )
136- if err != nil {
137- return nil , err
138- }
139- return response , nil
140- }
0 commit comments