action.go raw

   1  // Code Generated by gadget/xsdk, DO NOT EDIT
   2  
   3  package dns
   4  
   5  import (
   6  	"bytes"
   7  	"context"
   8  	"encoding/json"
   9  	"net/http"
  10  )
  11  
  12  // Group: CustomLines
  13  // 自定义线路
  14  
  15  func (c *Client) BatchDeleteCustomLine(ctx context.Context, data *BatchDeleteCustomLineRequest) (*BatchDeleteCustomLineResponse, error) {
  16  	body, err := json.Marshal(data)
  17  	if err != nil {
  18  		return nil, err
  19  	}
  20  
  21  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, "/?Action=BatchDeleteCustomLine", bytes.NewReader(body))
  22  	if err != nil {
  23  		return nil, err
  24  	}
  25  
  26  	resp, err := c.do(ctx, req)
  27  	if err != nil {
  28  		return nil, err
  29  	}
  30  	defer resp.Body.Close()
  31  
  32  	var payload BatchDeleteCustomLineResponse
  33  	d := json.NewDecoder(resp.Body)
  34  	if err := d.Decode(&payload); err != nil {
  35  		return nil, err
  36  	}
  37  	return &payload, nil
  38  }
  39  
  40  func (c *Client) CreateCustomLine(ctx context.Context, data *CreateCustomLineRequest) (*CreateCustomLineResponse, error) {
  41  	body, err := json.Marshal(data)
  42  	if err != nil {
  43  		return nil, err
  44  	}
  45  
  46  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, "/?Action=CreateCustomLine", bytes.NewReader(body))
  47  	if err != nil {
  48  		return nil, err
  49  	}
  50  
  51  	resp, err := c.do(ctx, req)
  52  	if err != nil {
  53  		return nil, err
  54  	}
  55  	defer resp.Body.Close()
  56  
  57  	var payload CreateCustomLineResponse
  58  	d := json.NewDecoder(resp.Body)
  59  	if err := d.Decode(&payload); err != nil {
  60  		return nil, err
  61  	}
  62  	return &payload, nil
  63  }
  64  
  65  func (c *Client) ListCustomLines(ctx context.Context, data *ListCustomLinesRequest) (*ListCustomLinesResponse, error) {
  66  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=ListCustomLines", nil)
  67  	if err != nil {
  68  		return nil, err
  69  	}
  70  
  71  	q := req.URL.Query()
  72  	if v := data.Line; v != nil {
  73  		q.Add("Line", *v)
  74  	}
  75  	if v := data.NameCN; v != nil {
  76  		q.Add("NameCN", *v)
  77  	}
  78  	if v := data.Remark; v != nil {
  79  		q.Add("Remark", *v)
  80  	}
  81  	if v := data.IPSegment; v != nil {
  82  		q.Add("IPSegment", *v)
  83  	}
  84  	if v := data.PageSize; v != nil {
  85  		q.Add("PageSize", *v)
  86  	}
  87  	if v := data.PageNumber; v != nil {
  88  		q.Add("PageNumber", *v)
  89  	}
  90  	if v := data.SearchMode; v != nil {
  91  		q.Add("SearchMode", *v)
  92  	}
  93  	req.URL.RawQuery = q.Encode()
  94  
  95  	resp, err := c.do(ctx, req)
  96  	if err != nil {
  97  		return nil, err
  98  	}
  99  	defer resp.Body.Close()
 100  
 101  	var payload ListCustomLinesResponse
 102  	d := json.NewDecoder(resp.Body)
 103  	if err := d.Decode(&payload); err != nil {
 104  		return nil, err
 105  	}
 106  	return &payload, nil
 107  }
 108  
 109  func (c *Client) ListRecordDigestByLine(ctx context.Context, data *ListRecordDigestByLineRequest) (*ListRecordDigestByLineResponse, error) {
 110  	body, err := json.Marshal(data)
 111  	if err != nil {
 112  		return nil, err
 113  	}
 114  
 115  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=ListRecordDigestByLine", bytes.NewReader(body))
 116  	if err != nil {
 117  		return nil, err
 118  	}
 119  
 120  	resp, err := c.do(ctx, req)
 121  	if err != nil {
 122  		return nil, err
 123  	}
 124  	defer resp.Body.Close()
 125  
 126  	var payload ListRecordDigestByLineResponse
 127  	d := json.NewDecoder(resp.Body)
 128  	if err := d.Decode(&payload); err != nil {
 129  		return nil, err
 130  	}
 131  	return &payload, nil
 132  }
 133  
 134  func (c *Client) UpdateCustomLine(ctx context.Context, data *UpdateCustomLineRequest) (*UpdateCustomLineResponse, error) {
 135  	body, err := json.Marshal(data)
 136  	if err != nil {
 137  		return nil, err
 138  	}
 139  
 140  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, "/?Action=UpdateCustomLine", bytes.NewReader(body))
 141  	if err != nil {
 142  		return nil, err
 143  	}
 144  
 145  	resp, err := c.do(ctx, req)
 146  	if err != nil {
 147  		return nil, err
 148  	}
 149  	defer resp.Body.Close()
 150  
 151  	var payload UpdateCustomLineResponse
 152  	d := json.NewDecoder(resp.Body)
 153  	if err := d.Decode(&payload); err != nil {
 154  		return nil, err
 155  	}
 156  	return &payload, nil
 157  }
 158  
 159  // Group: Others
 160  // 其他
 161  
 162  func (c *Client) ListLines(ctx context.Context, data *ListLinesRequest) (*ListLinesResponse, error) {
 163  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=ListLines", nil)
 164  	if err != nil {
 165  		return nil, err
 166  	}
 167  
 168  	q := req.URL.Query()
 169  	if v := data.Type; v != nil {
 170  		q.Add("Type", *v)
 171  	}
 172  	if v := data.PageSize; v != nil {
 173  		q.Add("PageSize", *v)
 174  	}
 175  	if v := data.PageNumber; v != nil {
 176  		q.Add("PageNumber", *v)
 177  	}
 178  	if v := data.Hierarchy; v != nil {
 179  		q.Add("Hierarchy", *v)
 180  	}
 181  	if v := data.ZID; v != nil {
 182  		q.Add("ZID", *v)
 183  	}
 184  	req.URL.RawQuery = q.Encode()
 185  
 186  	resp, err := c.do(ctx, req)
 187  	if err != nil {
 188  		return nil, err
 189  	}
 190  	defer resp.Body.Close()
 191  
 192  	var payload ListLinesResponse
 193  	d := json.NewDecoder(resp.Body)
 194  	if err := d.Decode(&payload); err != nil {
 195  		return nil, err
 196  	}
 197  	return &payload, nil
 198  }
 199  
 200  func (c *Client) ListRecordAttributes(ctx context.Context, data *ListRecordAttributesRequest) (*ListRecordAttributesResponse, error) {
 201  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=ListRecordAttributes", nil)
 202  	if err != nil {
 203  		return nil, err
 204  	}
 205  
 206  	q := req.URL.Query()
 207  	if v := data.ZID; v != nil {
 208  		q.Add("ZID", *v)
 209  	}
 210  	req.URL.RawQuery = q.Encode()
 211  
 212  	resp, err := c.do(ctx, req)
 213  	if err != nil {
 214  		return nil, err
 215  	}
 216  	defer resp.Body.Close()
 217  
 218  	var payload ListRecordAttributesResponse
 219  	d := json.NewDecoder(resp.Body)
 220  	if err := d.Decode(&payload); err != nil {
 221  		return nil, err
 222  	}
 223  	return &payload, nil
 224  }
 225  
 226  // Group: Records
 227  // 解析记录管理
 228  
 229  func (c *Client) CreateRecord(ctx context.Context, data *CreateRecordRequest) (*CreateRecordResponse, error) {
 230  	body, err := json.Marshal(data)
 231  	if err != nil {
 232  		return nil, err
 233  	}
 234  
 235  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, "/?Action=CreateRecord", bytes.NewReader(body))
 236  	if err != nil {
 237  		return nil, err
 238  	}
 239  
 240  	resp, err := c.do(ctx, req)
 241  	if err != nil {
 242  		return nil, err
 243  	}
 244  	defer resp.Body.Close()
 245  
 246  	var payload CreateRecordResponse
 247  	d := json.NewDecoder(resp.Body)
 248  	if err := d.Decode(&payload); err != nil {
 249  		return nil, err
 250  	}
 251  	return &payload, nil
 252  }
 253  
 254  func (c *Client) DeleteRecord(ctx context.Context, data *DeleteRecordRequest) error {
 255  	body, err := json.Marshal(data)
 256  	if err != nil {
 257  		return err
 258  	}
 259  
 260  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, "/?Action=DeleteRecord", bytes.NewReader(body))
 261  	if err != nil {
 262  		return err
 263  	}
 264  
 265  	resp, err := c.do(ctx, req)
 266  	if err != nil {
 267  		return err
 268  	}
 269  	defer resp.Body.Close()
 270  
 271  	return nil
 272  }
 273  
 274  func (c *Client) ListRecordSets(ctx context.Context, data *ListRecordSetsRequest) (*ListRecordSetsResponse, error) {
 275  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=ListRecordSets", nil)
 276  	if err != nil {
 277  		return nil, err
 278  	}
 279  
 280  	q := req.URL.Query()
 281  	if v := data.Host; v != nil {
 282  		q.Add("Host", *v)
 283  	}
 284  	if v := data.RecordSetID; v != nil {
 285  		q.Add("RecordSetID", *v)
 286  	}
 287  	if v := data.SearchMode; v != nil {
 288  		q.Add("SearchMode", *v)
 289  	}
 290  	if v := data.PageSize; v != nil {
 291  		q.Add("PageSize", *v)
 292  	}
 293  	if v := data.PageNumber; v != nil {
 294  		q.Add("PageNumber", *v)
 295  	}
 296  	if v := data.ZID; v != nil {
 297  		q.Add("ZID", *v)
 298  	}
 299  	req.URL.RawQuery = q.Encode()
 300  
 301  	resp, err := c.do(ctx, req)
 302  	if err != nil {
 303  		return nil, err
 304  	}
 305  	defer resp.Body.Close()
 306  
 307  	var payload ListRecordSetsResponse
 308  	d := json.NewDecoder(resp.Body)
 309  	if err := d.Decode(&payload); err != nil {
 310  		return nil, err
 311  	}
 312  	return &payload, nil
 313  }
 314  
 315  func (c *Client) ListRecords(ctx context.Context, data *ListRecordsRequest) (*ListRecordsResponse, error) {
 316  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=ListRecords", nil)
 317  	if err != nil {
 318  		return nil, err
 319  	}
 320  
 321  	q := req.URL.Query()
 322  	if v := data.PageNumber; v != nil {
 323  		q.Add("PageNumber", *v)
 324  	}
 325  	if v := data.Type; v != nil {
 326  		q.Add("Type", *v)
 327  	}
 328  	if v := data.SearchMode; v != nil {
 329  		q.Add("SearchMode", *v)
 330  	}
 331  	if v := data.SearchOrder; v != nil {
 332  		q.Add("SearchOrder", *v)
 333  	}
 334  	if v := data.Host; v != nil {
 335  		q.Add("Host", *v)
 336  	}
 337  	if v := data.ZID; v != nil {
 338  		q.Add("ZID", *v)
 339  	}
 340  	if v := data.Value; v != nil {
 341  		q.Add("Value", *v)
 342  	}
 343  	if v := data.RecordSetID; v != nil {
 344  		q.Add("RecordSetID", *v)
 345  	}
 346  	if v := data.PageSize; v != nil {
 347  		q.Add("PageSize", *v)
 348  	}
 349  	if v := data.Line; v != nil {
 350  		q.Add("Line", *v)
 351  	}
 352  	req.URL.RawQuery = q.Encode()
 353  
 354  	resp, err := c.do(ctx, req)
 355  	if err != nil {
 356  		return nil, err
 357  	}
 358  	defer resp.Body.Close()
 359  
 360  	var payload ListRecordsResponse
 361  	d := json.NewDecoder(resp.Body)
 362  	if err := d.Decode(&payload); err != nil {
 363  		return nil, err
 364  	}
 365  	return &payload, nil
 366  }
 367  
 368  func (c *Client) ListRecordsAdvance(ctx context.Context, data *ListRecordsAdvanceRequest) (*ListRecordsAdvanceResponse, error) {
 369  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=ListRecordsAdvance", nil)
 370  	if err != nil {
 371  		return nil, err
 372  	}
 373  
 374  	q := req.URL.Query()
 375  	if v := data.SearchOrder; v != nil {
 376  		q.Add("SearchOrder", *v)
 377  	}
 378  	if v := data.SubPageNumber; v != nil {
 379  		q.Add("SubPageNumber", *v)
 380  	}
 381  	if v := data.LastOperator; v != nil {
 382  		q.Add("LastOperator", *v)
 383  	}
 384  	if v := data.ZID; v != nil {
 385  		q.Add("ZID", *v)
 386  	}
 387  	if v := data.OrderKey; v != nil {
 388  		q.Add("OrderKey", *v)
 389  	}
 390  	if v := data.SearchMode; v != nil {
 391  		q.Add("SearchMode", *v)
 392  	}
 393  	if v := data.TTL; v != nil {
 394  		q.Add("TTL", *v)
 395  	}
 396  	if v := data.GTMDomainFilter; v != nil {
 397  		q.Add("GTMDomainFilter", *v)
 398  	}
 399  	if v := data.Name; v != nil {
 400  		q.Add("Name", *v)
 401  	}
 402  	if v := data.PageSize; v != nil {
 403  		q.Add("PageSize", *v)
 404  	}
 405  	if v := data.SubPageSize; v != nil {
 406  		q.Add("SubPageSize", *v)
 407  	}
 408  	if v := data.Host; v != nil {
 409  		q.Add("Host", *v)
 410  	}
 411  	if v := data.Line; v != nil {
 412  		q.Add("Line", *v)
 413  	}
 414  	if v := data.PageNumber; v != nil {
 415  		q.Add("PageNumber", *v)
 416  	}
 417  	if v := data.Value; v != nil {
 418  		q.Add("Value", *v)
 419  	}
 420  	if v := data.Type; v != nil {
 421  		q.Add("Type", *v)
 422  	}
 423  	if v := data.Enable; v != nil {
 424  		q.Add("Enable", *v)
 425  	}
 426  	req.URL.RawQuery = q.Encode()
 427  
 428  	resp, err := c.do(ctx, req)
 429  	if err != nil {
 430  		return nil, err
 431  	}
 432  	defer resp.Body.Close()
 433  
 434  	var payload ListRecordsAdvanceResponse
 435  	d := json.NewDecoder(resp.Body)
 436  	if err := d.Decode(&payload); err != nil {
 437  		return nil, err
 438  	}
 439  	return &payload, nil
 440  }
 441  
 442  func (c *Client) QueryRecord(ctx context.Context, data *QueryRecordRequest) (*QueryRecordResponse, error) {
 443  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=QueryRecord", nil)
 444  	if err != nil {
 445  		return nil, err
 446  	}
 447  
 448  	q := req.URL.Query()
 449  	if v := data.Value; v != nil {
 450  		q.Add("Value", *v)
 451  	}
 452  	if v := data.Line; v != nil {
 453  		q.Add("Line", *v)
 454  	}
 455  	if v := data.RecordID; v != nil {
 456  		q.Add("RecordID", *v)
 457  	}
 458  	if v := data.FQDN; v != nil {
 459  		q.Add("FQDN", *v)
 460  	}
 461  	if v := data.PQDN; v != nil {
 462  		q.Add("PQDN", *v)
 463  	}
 464  	if v := data.Type; v != nil {
 465  		q.Add("Type", *v)
 466  	}
 467  	req.URL.RawQuery = q.Encode()
 468  
 469  	resp, err := c.do(ctx, req)
 470  	if err != nil {
 471  		return nil, err
 472  	}
 473  	defer resp.Body.Close()
 474  
 475  	var payload QueryRecordResponse
 476  	d := json.NewDecoder(resp.Body)
 477  	if err := d.Decode(&payload); err != nil {
 478  		return nil, err
 479  	}
 480  	return &payload, nil
 481  }
 482  
 483  func (c *Client) SyncFullRecordsV2(ctx context.Context, data *SyncFullRecordsV2Request) (*SyncFullRecordsV2Response, error) {
 484  	body, err := json.Marshal(data)
 485  	if err != nil {
 486  		return nil, err
 487  	}
 488  
 489  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, "/?Action=SyncFullRecordsV2", bytes.NewReader(body))
 490  	if err != nil {
 491  		return nil, err
 492  	}
 493  
 494  	resp, err := c.do(ctx, req)
 495  	if err != nil {
 496  		return nil, err
 497  	}
 498  	defer resp.Body.Close()
 499  
 500  	var payload SyncFullRecordsV2Response
 501  	d := json.NewDecoder(resp.Body)
 502  	if err := d.Decode(&payload); err != nil {
 503  		return nil, err
 504  	}
 505  	return &payload, nil
 506  }
 507  
 508  func (c *Client) UpdateRecord(ctx context.Context, data *UpdateRecordRequest) (*UpdateRecordResponse, error) {
 509  	body, err := json.Marshal(data)
 510  	if err != nil {
 511  		return nil, err
 512  	}
 513  
 514  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, "/?Action=UpdateRecord", bytes.NewReader(body))
 515  	if err != nil {
 516  		return nil, err
 517  	}
 518  
 519  	resp, err := c.do(ctx, req)
 520  	if err != nil {
 521  		return nil, err
 522  	}
 523  	defer resp.Body.Close()
 524  
 525  	var payload UpdateRecordResponse
 526  	d := json.NewDecoder(resp.Body)
 527  	if err := d.Decode(&payload); err != nil {
 528  		return nil, err
 529  	}
 530  	return &payload, nil
 531  }
 532  
 533  func (c *Client) UpdateRecordSet(ctx context.Context, data *UpdateRecordSetRequest) (*UpdateRecordSetResponse, error) {
 534  	body, err := json.Marshal(data)
 535  	if err != nil {
 536  		return nil, err
 537  	}
 538  
 539  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, "/?Action=UpdateRecordSet", bytes.NewReader(body))
 540  	if err != nil {
 541  		return nil, err
 542  	}
 543  
 544  	resp, err := c.do(ctx, req)
 545  	if err != nil {
 546  		return nil, err
 547  	}
 548  	defer resp.Body.Close()
 549  
 550  	var payload UpdateRecordSetResponse
 551  	d := json.NewDecoder(resp.Body)
 552  	if err := d.Decode(&payload); err != nil {
 553  		return nil, err
 554  	}
 555  	return &payload, nil
 556  }
 557  
 558  func (c *Client) UpdateRecordStatus(ctx context.Context, data *UpdateRecordStatusRequest) (*UpdateRecordStatusResponse, error) {
 559  	body, err := json.Marshal(data)
 560  	if err != nil {
 561  		return nil, err
 562  	}
 563  
 564  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, "/?Action=UpdateRecordStatus", bytes.NewReader(body))
 565  	if err != nil {
 566  		return nil, err
 567  	}
 568  
 569  	resp, err := c.do(ctx, req)
 570  	if err != nil {
 571  		return nil, err
 572  	}
 573  	defer resp.Body.Close()
 574  
 575  	var payload UpdateRecordStatusResponse
 576  	d := json.NewDecoder(resp.Body)
 577  	if err := d.Decode(&payload); err != nil {
 578  		return nil, err
 579  	}
 580  	return &payload, nil
 581  }
 582  
 583  // Group: Stats
 584  // 访问量统计
 585  
 586  func (c *Client) ListDomainStatistics(ctx context.Context, data *ListDomainStatisticsRequest) (*ListDomainStatisticsResponse, error) {
 587  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=ListDomainStatistics", nil)
 588  	if err != nil {
 589  		return nil, err
 590  	}
 591  
 592  	q := req.URL.Query()
 593  	if v := data.Name; v != nil {
 594  		q.Add("Name", *v)
 595  	}
 596  	if v := data.SearchMode; v != nil {
 597  		q.Add("SearchMode", *v)
 598  	}
 599  	if v := data.Start; v != nil {
 600  		q.Add("Start", *v)
 601  	}
 602  	if v := data.End; v != nil {
 603  		q.Add("End", *v)
 604  	}
 605  	if v := data.Threshold; v != nil {
 606  		q.Add("Threshold", *v)
 607  	}
 608  	if v := data.PageNumber; v != nil {
 609  		q.Add("PageNumber", *v)
 610  	}
 611  	if v := data.PageSize; v != nil {
 612  		q.Add("PageSize", *v)
 613  	}
 614  	if v := data.ZID; v != nil {
 615  		q.Add("ZID", *v)
 616  	}
 617  	req.URL.RawQuery = q.Encode()
 618  
 619  	resp, err := c.do(ctx, req)
 620  	if err != nil {
 621  		return nil, err
 622  	}
 623  	defer resp.Body.Close()
 624  
 625  	var payload ListDomainStatisticsResponse
 626  	d := json.NewDecoder(resp.Body)
 627  	if err := d.Decode(&payload); err != nil {
 628  		return nil, err
 629  	}
 630  	return &payload, nil
 631  }
 632  
 633  func (c *Client) ListZoneStatistics(ctx context.Context, data *ListZoneStatisticsRequest) (*ListZoneStatisticsResponse, error) {
 634  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=ListZoneStatistics", nil)
 635  	if err != nil {
 636  		return nil, err
 637  	}
 638  
 639  	q := req.URL.Query()
 640  	if v := data.PageNumber; v != nil {
 641  		q.Add("PageNumber", *v)
 642  	}
 643  	if v := data.PageSize; v != nil {
 644  		q.Add("PageSize", *v)
 645  	}
 646  	if v := data.SearchMode; v != nil {
 647  		q.Add("SearchMode", *v)
 648  	}
 649  	if v := data.Name; v != nil {
 650  		q.Add("Name", *v)
 651  	}
 652  	if v := data.Start; v != nil {
 653  		q.Add("Start", *v)
 654  	}
 655  	if v := data.End; v != nil {
 656  		q.Add("End", *v)
 657  	}
 658  	if v := data.Threshold; v != nil {
 659  		q.Add("Threshold", *v)
 660  	}
 661  	req.URL.RawQuery = q.Encode()
 662  
 663  	resp, err := c.do(ctx, req)
 664  	if err != nil {
 665  		return nil, err
 666  	}
 667  	defer resp.Body.Close()
 668  
 669  	var payload ListZoneStatisticsResponse
 670  	d := json.NewDecoder(resp.Body)
 671  	if err := d.Decode(&payload); err != nil {
 672  		return nil, err
 673  	}
 674  	return &payload, nil
 675  }
 676  
 677  func (c *Client) QueryDomainStatistics(ctx context.Context, data *QueryDomainStatisticsRequest) (QueryDomainStatisticsResponse, error) {
 678  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=QueryDomainStatistics", nil)
 679  	if err != nil {
 680  		return nil, err
 681  	}
 682  
 683  	q := req.URL.Query()
 684  	if v := data.Name; v != nil {
 685  		q.Add("Name", *v)
 686  	}
 687  	if v := data.Start; v != nil {
 688  		q.Add("Start", *v)
 689  	}
 690  	if v := data.End; v != nil {
 691  		q.Add("End", *v)
 692  	}
 693  	if v := data.ZID; v != nil {
 694  		q.Add("ZID", *v)
 695  	}
 696  	req.URL.RawQuery = q.Encode()
 697  
 698  	resp, err := c.do(ctx, req)
 699  	if err != nil {
 700  		return nil, err
 701  	}
 702  	defer resp.Body.Close()
 703  
 704  	var payload QueryDomainStatisticsResponse
 705  	d := json.NewDecoder(resp.Body)
 706  	if err := d.Decode(&payload); err != nil {
 707  		return nil, err
 708  	}
 709  	return payload, nil
 710  }
 711  
 712  func (c *Client) QueryZoneStatistics(ctx context.Context, data *QueryZoneStatisticsRequest) (QueryZoneStatisticsResponse, error) {
 713  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=QueryZoneStatistics", nil)
 714  	if err != nil {
 715  		return nil, err
 716  	}
 717  
 718  	q := req.URL.Query()
 719  	if v := data.ZID; v != nil {
 720  		q.Add("ZID", *v)
 721  	}
 722  	if v := data.Start; v != nil {
 723  		q.Add("Start", *v)
 724  	}
 725  	if v := data.End; v != nil {
 726  		q.Add("End", *v)
 727  	}
 728  	req.URL.RawQuery = q.Encode()
 729  
 730  	resp, err := c.do(ctx, req)
 731  	if err != nil {
 732  		return nil, err
 733  	}
 734  	defer resp.Body.Close()
 735  
 736  	var payload QueryZoneStatisticsResponse
 737  	d := json.NewDecoder(resp.Body)
 738  	if err := d.Decode(&payload); err != nil {
 739  		return nil, err
 740  	}
 741  	return payload, nil
 742  }
 743  
 744  // Group: Zones
 745  // 域名管理
 746  
 747  func (c *Client) CheckRetrieveZone(ctx context.Context, data *CheckRetrieveZoneRequest) (*CheckRetrieveZoneResponse, error) {
 748  	body, err := json.Marshal(data)
 749  	if err != nil {
 750  		return nil, err
 751  	}
 752  
 753  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, "/?Action=CheckRetrieveZone", bytes.NewReader(body))
 754  	if err != nil {
 755  		return nil, err
 756  	}
 757  
 758  	resp, err := c.do(ctx, req)
 759  	if err != nil {
 760  		return nil, err
 761  	}
 762  	defer resp.Body.Close()
 763  
 764  	var payload CheckRetrieveZoneResponse
 765  	d := json.NewDecoder(resp.Body)
 766  	if err := d.Decode(&payload); err != nil {
 767  		return nil, err
 768  	}
 769  	return &payload, nil
 770  }
 771  
 772  func (c *Client) CreateZone(ctx context.Context, data *CreateZoneRequest) (*CreateZoneResponse, error) {
 773  	body, err := json.Marshal(data)
 774  	if err != nil {
 775  		return nil, err
 776  	}
 777  
 778  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, "/?Action=CreateZone", bytes.NewReader(body))
 779  	if err != nil {
 780  		return nil, err
 781  	}
 782  
 783  	resp, err := c.do(ctx, req)
 784  	if err != nil {
 785  		return nil, err
 786  	}
 787  	defer resp.Body.Close()
 788  
 789  	var payload CreateZoneResponse
 790  	d := json.NewDecoder(resp.Body)
 791  	if err := d.Decode(&payload); err != nil {
 792  		return nil, err
 793  	}
 794  	return &payload, nil
 795  }
 796  
 797  func (c *Client) DeleteZone(ctx context.Context, data *DeleteZoneRequest) error {
 798  	body, err := json.Marshal(data)
 799  	if err != nil {
 800  		return err
 801  	}
 802  
 803  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, "/?Action=DeleteZone", bytes.NewReader(body))
 804  	if err != nil {
 805  		return err
 806  	}
 807  
 808  	resp, err := c.do(ctx, req)
 809  	if err != nil {
 810  		return err
 811  	}
 812  	defer resp.Body.Close()
 813  
 814  	return nil
 815  }
 816  
 817  func (c *Client) ListZones(ctx context.Context, data *ListZonesRequest) (*ListZonesResponse, error) {
 818  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=ListZones", nil)
 819  	if err != nil {
 820  		return nil, err
 821  	}
 822  
 823  	q := req.URL.Query()
 824  	if v := data.TradeCode; v != nil {
 825  		q.Add("TradeCode", *v)
 826  	}
 827  	if v := data.OrderKey; v != nil {
 828  		q.Add("OrderKey", *v)
 829  	}
 830  	if v := data.SearchOrder; v != nil {
 831  		q.Add("SearchOrder", *v)
 832  	}
 833  	if v := data.Remark; v != nil {
 834  		q.Add("Remark", *v)
 835  	}
 836  	if v := data.Stage; v != nil {
 837  		q.Add("Stage", *v)
 838  	}
 839  	if v := data.AboutToExpire; v != nil {
 840  		q.Add("AboutToExpire", *v)
 841  	}
 842  	if v := data.PageSize; v != nil {
 843  		q.Add("PageSize", *v)
 844  	}
 845  	if v := data.PageNumber; v != nil {
 846  		q.Add("PageNumber", *v)
 847  	}
 848  	if v := data.Key; v != nil {
 849  		q.Add("Key", *v)
 850  	}
 851  	if v := data.SearchMode; v != nil {
 852  		q.Add("SearchMode", *v)
 853  	}
 854  	req.URL.RawQuery = q.Encode()
 855  
 856  	resp, err := c.do(ctx, req)
 857  	if err != nil {
 858  		return nil, err
 859  	}
 860  	defer resp.Body.Close()
 861  
 862  	var payload ListZonesResponse
 863  	d := json.NewDecoder(resp.Body)
 864  	if err := d.Decode(&payload); err != nil {
 865  		return nil, err
 866  	}
 867  	return &payload, nil
 868  }
 869  
 870  func (c *Client) ListZonesNameServer(ctx context.Context, data *ListZonesNameServerRequest) (*ListZonesNameServerResponse, error) {
 871  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=ListZonesNameServer", nil)
 872  	if err != nil {
 873  		return nil, err
 874  	}
 875  
 876  	q := req.URL.Query()
 877  	if v := data.ZIDs; v != nil {
 878  		q.Add("ZIDs", *v)
 879  	}
 880  	req.URL.RawQuery = q.Encode()
 881  
 882  	resp, err := c.do(ctx, req)
 883  	if err != nil {
 884  		return nil, err
 885  	}
 886  	defer resp.Body.Close()
 887  
 888  	var payload ListZonesNameServerResponse
 889  	d := json.NewDecoder(resp.Body)
 890  	if err := d.Decode(&payload); err != nil {
 891  		return nil, err
 892  	}
 893  	return &payload, nil
 894  }
 895  
 896  func (c *Client) QueryZone(ctx context.Context, data *QueryZoneRequest) (*QueryZoneResponse, error) {
 897  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, "/?Action=QueryZone", nil)
 898  	if err != nil {
 899  		return nil, err
 900  	}
 901  
 902  	q := req.URL.Query()
 903  	if v := data.ZID; v != nil {
 904  		q.Add("ZID", *v)
 905  	}
 906  	if v := data.UseAllocateNameServer; v != nil {
 907  		q.Add("UseAllocateNameServer", *v)
 908  	}
 909  	req.URL.RawQuery = q.Encode()
 910  
 911  	resp, err := c.do(ctx, req)
 912  	if err != nil {
 913  		return nil, err
 914  	}
 915  	defer resp.Body.Close()
 916  
 917  	var payload QueryZoneResponse
 918  	d := json.NewDecoder(resp.Body)
 919  	if err := d.Decode(&payload); err != nil {
 920  		return nil, err
 921  	}
 922  	return &payload, nil
 923  }
 924  
 925  func (c *Client) RetrieveZone(ctx context.Context, data *RetrieveZoneRequest) (*RetrieveZoneResponse, error) {
 926  	body, err := json.Marshal(data)
 927  	if err != nil {
 928  		return nil, err
 929  	}
 930  
 931  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, "/?Action=RetrieveZone", bytes.NewReader(body))
 932  	if err != nil {
 933  		return nil, err
 934  	}
 935  
 936  	resp, err := c.do(ctx, req)
 937  	if err != nil {
 938  		return nil, err
 939  	}
 940  	defer resp.Body.Close()
 941  
 942  	var payload RetrieveZoneResponse
 943  	d := json.NewDecoder(resp.Body)
 944  	if err := d.Decode(&payload); err != nil {
 945  		return nil, err
 946  	}
 947  	return &payload, nil
 948  }
 949  
 950  func (c *Client) UpdateZone(ctx context.Context, data *UpdateZoneRequest) (*UpdateZoneResponse, error) {
 951  	body, err := json.Marshal(data)
 952  	if err != nil {
 953  		return nil, err
 954  	}
 955  
 956  	req, err := http.NewRequestWithContext(ctx, http.MethodPost, "/?Action=UpdateZone", bytes.NewReader(body))
 957  	if err != nil {
 958  		return nil, err
 959  	}
 960  
 961  	resp, err := c.do(ctx, req)
 962  	if err != nil {
 963  		return nil, err
 964  	}
 965  	defer resp.Body.Close()
 966  
 967  	var payload UpdateZoneResponse
 968  	d := json.NewDecoder(resp.Body)
 969  	if err := d.Decode(&payload); err != nil {
 970  		return nil, err
 971  	}
 972  	return &payload, nil
 973  }
 974