1package slb
2
3import "github.com/denverdino/aliyungo/common"
4
5type UploadServerCertificateArgs struct {
6	RegionId              common.Region
7	ServerCertificate     string
8	ServerCertificateName string
9	PrivateKey            string
10}
11
12type UploadServerCertificateResponse struct {
13	common.Response
14	ServerCertificateId   string
15	ServerCertificateName string
16	Fingerprint           string
17}
18
19// UploadServerCertificate Upload server certificate
20//
21// You can read doc at http://docs.aliyun.com/#pub/slb/api-reference/api-servercertificate&UploadServerCertificate
22func (client *Client) UploadServerCertificate(args *UploadServerCertificateArgs) (response *UploadServerCertificateResponse, err error) {
23	response = &UploadServerCertificateResponse{}
24	err = client.Invoke("UploadServerCertificate", args, response)
25	if err != nil {
26		return nil, err
27	}
28	return response, err
29}
30
31type DeleteServerCertificateArgs struct {
32	RegionId            common.Region
33	ServerCertificateId string
34}
35
36type DeleteServerCertificateResponse struct {
37	common.Response
38}
39
40// DeleteServerCertificate Delete server certificate
41//
42// You can read doc at http://docs.aliyun.com/#pub/slb/api-reference/api-servercertificate&DeleteServerCertificate
43func (client *Client) DeleteServerCertificate(regionId common.Region, serverCertificateId string) (err error) {
44	args := &DeleteServerCertificateArgs{
45		RegionId:            regionId,
46		ServerCertificateId: serverCertificateId,
47	}
48	response := &DeleteServerCertificateResponse{}
49	return client.Invoke("DeleteServerCertificate", args, response)
50}
51
52type SetServerCertificateNameArgs struct {
53	RegionId              common.Region
54	ServerCertificateId   string
55	ServerCertificateName string
56}
57
58type SetServerCertificateNameResponse struct {
59	common.Response
60}
61
62// SetServerCertificateName Set name of server certificate
63//
64// You can read doc at http://docs.aliyun.com/#pub/slb/api-reference/api-servercertificate&SetServerCertificateName
65func (client *Client) SetServerCertificateName(regionId common.Region, serverCertificateId string, name string) (err error) {
66	args := &SetServerCertificateNameArgs{
67		RegionId:              regionId,
68		ServerCertificateId:   serverCertificateId,
69		ServerCertificateName: name,
70	}
71	response := &SetServerCertificateNameResponse{}
72	return client.Invoke("SetServerCertificateName", args, response)
73}
74
75type DescribeServerCertificatesArgs struct {
76	RegionId            common.Region
77	ServerCertificateId string
78}
79
80type ServerCertificateType struct {
81	RegionId              common.Region
82	ServerCertificateId   string
83	ServerCertificateName string
84	Fingerprint           string
85}
86
87type DescribeServerCertificatesResponse struct {
88	common.Response
89	ServerCertificates struct {
90		ServerCertificate []ServerCertificateType
91	}
92}
93
94// DescribeServerCertificates Describe server certificates
95//
96// You can read doc at http://docs.aliyun.com/#pub/slb/api-reference/api-servercertificate&DescribeServerCertificates
97func (client *Client) DescribeServerCertificatesArgs(regionId common.Region, serverCertificateId string) (serverCertificates []ServerCertificateType, err error) {
98	args := &DescribeServerCertificatesArgs{
99		RegionId:            regionId,
100		ServerCertificateId: serverCertificateId,
101	}
102	response := &DescribeServerCertificatesResponse{}
103	err = client.Invoke("DescribeServerCertificates", args, response)
104	if err != nil {
105		return nil, err
106	}
107	return response.ServerCertificates.ServerCertificate, err
108}
109