dns.go raw
1 /*
2 * Copyright 2022 Baidu, Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5 * except in compliance with the License. You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software distributed under the
10 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
11 * either express or implied. See the License for the specific language governing permissions
12 * and limitations under the License.
13 */
14 package dns
15
16 import (
17 "encoding/json"
18 "github.com/baidubce/bce-sdk-go/bce"
19 "github.com/baidubce/bce-sdk-go/http"
20 "strconv"
21 "strings"
22 )
23
24 // AddLineGroup -
25 //
26 // PARAMS:
27 // - cli: the client agent which can perform sending request
28 // - clientToken: 幂等性Token,是一个长度不超过64位的ASCII字符串。
29 // - body:
30 // RETURNS:
31 // - error: the return error if any occurs
32 func AddLineGroup(cli bce.Client, body *AddLineGroupRequest, clientToken string) error {
33 req := &bce.BceRequest{}
34 req.SetMethod(http.POST)
35 path := "/v1/dns/customline"
36 req.SetUri(path)
37 req.SetParam("clientToken", clientToken)
38
39 jsonBytes, err := json.Marshal(body)
40 if err != nil {
41 return err
42 }
43 jsonBody, err := bce.NewBodyFromBytes(jsonBytes)
44 if err != nil {
45 return err
46 }
47 req.SetBody(jsonBody)
48
49 resp := &bce.BceResponse{}
50 if err := cli.SendRequest(req, resp); err != nil {
51 return err
52 }
53 if resp.IsFail() {
54 return resp.ServiceError()
55 }
56 return nil
57 }
58
59 // CreatePaidZone -
60 //
61 // PARAMS:
62 // - cli: the client agent which can perform sending request
63 // - clientToken: 幂等性Token,是一个长度不超过64位的ASCII字符串。
64 // - body:
65 // RETURNS:
66 // - error: the return error if any occurs
67 func CreatePaidZone(cli bce.Client, body *CreatePaidZoneRequest, clientToken string) error {
68 req := &bce.BceRequest{}
69 req.SetMethod(http.POST)
70 path := "/v1/dns/zone/order"
71 req.SetUri(path)
72 req.SetParam("clientToken", clientToken)
73
74 jsonBytes, err := json.Marshal(body)
75 if err != nil {
76 return err
77 }
78 jsonBody, err := bce.NewBodyFromBytes(jsonBytes)
79 if err != nil {
80 return err
81 }
82 req.SetBody(jsonBody)
83
84 resp := &bce.BceResponse{}
85 if err := cli.SendRequest(req, resp); err != nil {
86 return err
87 }
88 if resp.IsFail() {
89 return resp.ServiceError()
90 }
91 return nil
92 }
93
94 // CreateRecord -
95 //
96 // PARAMS:
97 // - cli: the client agent which can perform sending request
98 // - zoneName: 域名名称。
99 // - clientToken: 幂等性Token,是一个长度不超过64位的ASCII字符串。
100 // - body:
101 // RETURNS:
102 // - error: the return error if any occurs
103 func CreateRecord(cli bce.Client, zoneName string, body *CreateRecordRequest, clientToken string) error {
104 req := &bce.BceRequest{}
105 req.SetMethod(http.POST)
106 path := "/v1/dns/zone/[zoneName]/record"
107 path = strings.Replace(path, "[zoneName]", zoneName, -1)
108 req.SetUri(path)
109 req.SetParam("clientToken", clientToken)
110
111 jsonBytes, err := json.Marshal(body)
112 if err != nil {
113 return err
114 }
115 jsonBody, err := bce.NewBodyFromBytes(jsonBytes)
116 if err != nil {
117 return err
118 }
119 req.SetBody(jsonBody)
120
121 resp := &bce.BceResponse{}
122 if err := cli.SendRequest(req, resp); err != nil {
123 return err
124 }
125 if resp.IsFail() {
126 return resp.ServiceError()
127 }
128 return nil
129 }
130
131 // CreateZone -
132 //
133 // PARAMS:
134 // - cli: the client agent which can perform sending request
135 // - clientToken: 幂等性Token,是一个长度不超过64位的ASCII字符串
136 // - body:
137 // RETURNS:
138 // - error: the return error if any occurs
139 func CreateZone(cli bce.Client, body *CreateZoneRequest, clientToken string) error {
140 req := &bce.BceRequest{}
141 req.SetMethod(http.POST)
142 path := "/v1/dns/zone"
143 req.SetUri(path)
144 req.SetParam("clientToken", clientToken)
145
146 jsonBytes, err := json.Marshal(body)
147 if err != nil {
148 return err
149 }
150 jsonBody, err := bce.NewBodyFromBytes(jsonBytes)
151 if err != nil {
152 return err
153 }
154 req.SetBody(jsonBody)
155
156 resp := &bce.BceResponse{}
157 if err := cli.SendRequest(req, resp); err != nil {
158 return err
159 }
160 if resp.IsFail() {
161 return resp.ServiceError()
162 }
163 return nil
164 }
165
166 // DeleteLineGroup -
167 //
168 // PARAMS:
169 // - cli: the client agent which can perform sending request
170 // - lineId: 线路组id。
171 // - clientToken: 幂等性Token,是一个长度不超过64位的ASCII字符串。
172 // RETURNS:
173 // - error: the return error if any occurs
174 func DeleteLineGroup(cli bce.Client, lineId string, clientToken string) error {
175 req := &bce.BceRequest{}
176 req.SetMethod(http.DELETE)
177 path := "/v1/dns/customline/[lineId]"
178 path = strings.Replace(path, "[lineId]", lineId, -1)
179 req.SetUri(path)
180 req.SetParam("clientToken", clientToken)
181
182 resp := &bce.BceResponse{}
183 if err := cli.SendRequest(req, resp); err != nil {
184 return err
185 }
186 if resp.IsFail() {
187 return resp.ServiceError()
188 }
189 return nil
190 }
191
192 // DeleteRecord -
193 //
194 // PARAMS:
195 // - cli: the client agent which can perform sending request
196 // - zoneName: 域名名称。
197 // - recordId: 解析记录id。
198 // - clientToken: 幂等性Token,是一个长度不超过64位的ASCII字符串。
199 // - body:
200 // RETURNS:
201 // - error: the return error if any occurs
202 func DeleteRecord(cli bce.Client, zoneName string, recordId string, clientToken string) error {
203 req := &bce.BceRequest{}
204 req.SetMethod(http.DELETE)
205 path := "/v1/dns/zone/[zoneName]/record/[recordId]"
206 path = strings.Replace(path, "[zoneName]", zoneName, -1)
207 path = strings.Replace(path, "[recordId]", recordId, -1)
208 req.SetUri(path)
209 req.SetParam("clientToken", clientToken)
210
211 resp := &bce.BceResponse{}
212 if err := cli.SendRequest(req, resp); err != nil {
213 return err
214 }
215 if resp.IsFail() {
216 return resp.ServiceError()
217 }
218 return nil
219 }
220
221 // DeleteZone -
222 //
223 // PARAMS:
224 // - cli: the client agent which can perform sending request
225 // - zoneName: 域名的名称。
226 // - clientToken: 幂等性Token,是一个长度不超过64位的ASCII字符串。
227 // - body:
228 // RETURNS:
229 // - error: the return error if any occurs
230 func DeleteZone(cli bce.Client, zoneName string, clientToken string) error {
231 req := &bce.BceRequest{}
232 req.SetMethod(http.DELETE)
233 path := "/v1/dns/zone/[zoneName]"
234 path = strings.Replace(path, "[zoneName]", zoneName, -1)
235 req.SetUri(path)
236 req.SetParam("clientToken", clientToken)
237 resp := &bce.BceResponse{}
238 if err := cli.SendRequest(req, resp); err != nil {
239 return err
240 }
241 if resp.IsFail() {
242 return resp.ServiceError()
243 }
244 return nil
245 }
246
247 // ListLineGroup -
248 //
249 // PARAMS:
250 // - cli: the client agent which can perform sending request
251 // - marker: 批量获取列表的查询的起始位置,是一个由系统生成的字符串。
252 // - maxKeys: 每页包含的最大数量,最大数量通常不超过1000,缺省值为1000。
253 // - body:
254 // RETURNS:
255 // - *api.ListLineGroupResponse:
256 // - error: the return error if any occurs
257 func ListLineGroup(cli bce.Client, marker string, maxKeys int) (*ListLineGroupResponse, error) {
258 req := &bce.BceRequest{}
259 req.SetMethod(http.GET)
260 path := "/v1/dns/customline"
261 req.SetUri(path)
262 if "" != marker {
263 req.SetParam("marker", marker)
264 }
265 if 0 != maxKeys {
266 req.SetParam("maxKeys", strconv.Itoa(maxKeys))
267 }
268
269 resp := &bce.BceResponse{}
270 if err := cli.SendRequest(req, resp); err != nil {
271 return nil, err
272 }
273 if resp.IsFail() {
274 return nil, resp.ServiceError()
275 }
276 res := &ListLineGroupResponse{}
277 if err := resp.ParseJsonBody(res); err != nil {
278 return nil, err
279 }
280 return res, nil
281 }
282
283 // ListRecord -
284 //
285 // PARAMS:
286 // - cli: the client agent which can perform sending request
287 // - zoneName: 域名的名称。
288 // - rr: 主机记录,例如“www”。
289 // - id: 解析记录id。
290 // - marker: 批量获取列表的查询的起始位置,是一个由系统生成的字符串。
291 // - maxKeys: 每页包含的最大数量,最大数量通常不超过1000。缺省值为1000。
292 // - body:
293 // RETURNS:
294 // - *api.ListRecordResponse:
295 // - error: the return error if any occurs
296 func ListRecord(cli bce.Client, zoneName string, rr string, id string,
297 marker string, maxKeys int) (*ListRecordResponse, error) {
298 req := &bce.BceRequest{}
299 req.SetMethod(http.GET)
300 path := "/v1/dns/zone/[zoneName]/record"
301 path = strings.Replace(path, "[zoneName]", zoneName, -1)
302 req.SetUri(path)
303 if "" != rr {
304 req.SetParam("rr", rr)
305 }
306 if "" != id {
307 req.SetParam("id", id)
308 }
309 if "" != marker {
310 req.SetParam("marker", marker)
311 }
312 if 0 != maxKeys {
313 req.SetParam("maxKeys", strconv.Itoa(maxKeys))
314 }
315
316 resp := &bce.BceResponse{}
317 if err := cli.SendRequest(req, resp); err != nil {
318 return nil, err
319 }
320 if resp.IsFail() {
321 return nil, resp.ServiceError()
322 }
323 res := &ListRecordResponse{}
324 if err := resp.ParseJsonBody(res); err != nil {
325 return nil, err
326 }
327 return res, nil
328 }
329
330 // ListZone -
331 //
332 // PARAMS:
333 // - cli: the client agent which can perform sending request
334 // - name: 域名的名称,支持模糊搜索。
335 // - marker: 批量获取列表的查询的起始位置,是一个由系统生成的字符串
336 // - maxKeys: 每页包含的最大数量,最大数量通常不超过1000。缺省值为1000
337 // - body:
338 // RETURNS:
339 // - *api.ListZoneResponse:
340 // - error: the return error if any occurs
341 func ListZone(cli bce.Client, body *ListZoneRequest, name string, marker string, maxKeys int) (
342 *ListZoneResponse, error) {
343 req := &bce.BceRequest{}
344 req.SetMethod(http.GET)
345 path := "/v1/dns/zone"
346 req.SetUri(path)
347 if "" != name {
348 req.SetParam("name", name)
349 }
350 if "" != marker {
351 req.SetParam("marker", marker)
352 }
353 if 0 != maxKeys {
354 req.SetParam("maxKeys", strconv.Itoa(maxKeys))
355 }
356
357 jsonBytes, err := json.Marshal(body)
358 if err != nil {
359 return nil, err
360 }
361 jsonBody, err := bce.NewBodyFromBytes(jsonBytes)
362 if err != nil {
363 return nil, err
364 }
365 req.SetBody(jsonBody)
366
367 resp := &bce.BceResponse{}
368 if err := cli.SendRequest(req, resp); err != nil {
369 return nil, err
370 }
371 if resp.IsFail() {
372 return nil, resp.ServiceError()
373 }
374 res := &ListZoneResponse{}
375 if err := resp.ParseJsonBody(res); err != nil {
376 return nil, err
377 }
378 return res, nil
379 }
380
381 // RenewZone -
382 //
383 // PARAMS:
384 // - cli: the client agent which can perform sending request
385 // - name: 续费的域名。
386 // - body:
387 // RETURNS:
388 // - error: the return error if any occurs
389 func RenewZone(cli bce.Client, name string, body *RenewZoneRequest, clientToken string) error {
390 req := &bce.BceRequest{}
391 req.SetMethod(http.PUT)
392 path := "/v1/dns/zone/order/[name]"
393 path = strings.Replace(path, "[name]", name, -1)
394 req.SetUri(path)
395 req.SetParam("purchaseReserved", "")
396 req.SetParam("clientToken", clientToken)
397
398 jsonBytes, err := json.Marshal(body)
399 if err != nil {
400 return err
401 }
402 jsonBody, err := bce.NewBodyFromBytes(jsonBytes)
403 if err != nil {
404 return err
405 }
406 req.SetBody(jsonBody)
407
408 resp := &bce.BceResponse{}
409 if err := cli.SendRequest(req, resp); err != nil {
410 return err
411 }
412 if resp.IsFail() {
413 return resp.ServiceError()
414 }
415 return nil
416 }
417
418 // UpdateLineGroup -
419 //
420 // PARAMS:
421 // - cli: the client agent which can perform sending request
422 // - lineId: 线路组id。
423 // - clientToken: 幂等性Token,是一个长度不超过64位的ASCII字符串。
424 // - body:
425 // RETURNS:
426 // - error: the return error if any occurs
427 func UpdateLineGroup(cli bce.Client, lineId string, body *UpdateLineGroupRequest,
428 clientToken string) error {
429 req := &bce.BceRequest{}
430 req.SetMethod(http.PUT)
431 path := "/v1/dns/customline/[lineId]"
432 path = strings.Replace(path, "[lineId]", lineId, -1)
433 req.SetUri(path)
434 req.SetParam("clientToken", clientToken)
435
436 jsonBytes, err := json.Marshal(body)
437 if err != nil {
438 return err
439 }
440 jsonBody, err := bce.NewBodyFromBytes(jsonBytes)
441 if err != nil {
442 return err
443 }
444 req.SetBody(jsonBody)
445
446 resp := &bce.BceResponse{}
447 if err := cli.SendRequest(req, resp); err != nil {
448 return err
449 }
450 if resp.IsFail() {
451 return resp.ServiceError()
452 }
453 return nil
454 }
455
456 // UpdateRecord -
457 //
458 // PARAMS:
459 // - cli: the client agent which can perform sending request
460 // - zoneName: 域名名称。
461 // - recordId: 解析记录id。
462 // - clientToken: 幂等性Token,是一个长度不超过64位的ASCII字符串。
463 // - body:
464 // RETURNS:
465 // - error: the return error if any occurs
466 func UpdateRecord(cli bce.Client, zoneName string, recordId string, body *UpdateRecordRequest,
467 clientToken string) error {
468 req := &bce.BceRequest{}
469 req.SetMethod(http.PUT)
470 path := "/v1/dns/zone/[zoneName]/record/[recordId]"
471 path = strings.Replace(path, "[zoneName]", zoneName, -1)
472 path = strings.Replace(path, "[recordId]", recordId, -1)
473 req.SetUri(path)
474 req.SetParam("clientToken", clientToken)
475
476 jsonBytes, err := json.Marshal(body)
477 if err != nil {
478 return err
479 }
480 jsonBody, err := bce.NewBodyFromBytes(jsonBytes)
481 if err != nil {
482 return err
483 }
484 req.SetBody(jsonBody)
485
486 resp := &bce.BceResponse{}
487 if err := cli.SendRequest(req, resp); err != nil {
488 return err
489 }
490 if resp.IsFail() {
491 return resp.ServiceError()
492 }
493 return nil
494 }
495
496 // UpdateRecordDisable -
497 //
498 // PARAMS:
499 // - cli: the client agent which can perform sending request
500 // - zoneName: 域名名称。
501 // - recordId: 解析记录id。
502 // - clientToken: 幂等性Token,是一个长度不超过64位的ASCII字符串。
503 // - body:
504 // RETURNS:
505 // - error: the return error if any occurs
506 func UpdateRecordDisable(cli bce.Client, zoneName string, recordId string, clientToken string) error {
507 req := &bce.BceRequest{}
508 req.SetMethod(http.PUT)
509 path := "/v1/dns/zone/[zoneName]/record/[recordId]"
510 path = strings.Replace(path, "[zoneName]", zoneName, -1)
511 path = strings.Replace(path, "[recordId]", recordId, -1)
512 req.SetUri(path)
513 req.SetParam("disable", "")
514 req.SetParam("clientToken", clientToken)
515
516 resp := &bce.BceResponse{}
517 if err := cli.SendRequest(req, resp); err != nil {
518 return err
519 }
520 if resp.IsFail() {
521 return resp.ServiceError()
522 }
523 return nil
524 }
525
526 // UpdateRecordEnable -
527 //
528 // PARAMS:
529 // - cli: the client agent which can perform sending request
530 // - zoneName: 域名名称。
531 // - recordId: 解析记录id。
532 // - clientToken: 幂等性Token,是一个长度不超过64位的ASCII字符串。
533 // - body:
534 // RETURNS:
535 // - error: the return error if any occurs
536 func UpdateRecordEnable(cli bce.Client, zoneName string, recordId string, clientToken string) error {
537 req := &bce.BceRequest{}
538 req.SetMethod(http.PUT)
539 path := "/v1/dns/zone/[zoneName]/record/[recordId]"
540 path = strings.Replace(path, "[zoneName]", zoneName, -1)
541 path = strings.Replace(path, "[recordId]", recordId, -1)
542 req.SetUri(path)
543 req.SetParam("enable", "")
544 req.SetParam("clientToken", clientToken)
545
546 resp := &bce.BceResponse{}
547 if err := cli.SendRequest(req, resp); err != nil {
548 return err
549 }
550 if resp.IsFail() {
551 return resp.ServiceError()
552 }
553 return nil
554 }
555
556 // UpgradeZone -
557 //
558 // PARAMS:
559 // - cli: the client agent which can perform sending request
560 // - clientToken: 幂等性Token,是一个长度不超过64位的ASCII字符串。
561 // - body:
562 // RETURNS:
563 // - error: the return error if any occurs
564 func UpgradeZone(cli bce.Client, body *UpgradeZoneRequest, clientToken string) error {
565 req := &bce.BceRequest{}
566 req.SetMethod(http.PUT)
567 path := "/v1/dns/zone/order"
568 req.SetUri(path)
569 req.SetParam("upgradeToDiscount", "")
570 req.SetParam("clientToken", clientToken)
571
572 jsonBytes, err := json.Marshal(body)
573 if err != nil {
574 return err
575 }
576 jsonBody, err := bce.NewBodyFromBytes(jsonBytes)
577 if err != nil {
578 return err
579 }
580 req.SetBody(jsonBody)
581
582 resp := &bce.BceResponse{}
583 if err := cli.SendRequest(req, resp); err != nil {
584 return err
585 }
586 if resp.IsFail() {
587 return resp.ServiceError()
588 }
589 return nil
590 }
591