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