...

Source file src/github.com/Azure/azure-sdk-for-go/services/classic/management/hostedservice/client.go

Documentation: github.com/Azure/azure-sdk-for-go/services/classic/management/hostedservice

     1  // +build go1.7
     2  
     3  // Package hostedservice provides a client for Hosted Services.
     4  package hostedservice
     5  
     6  // Copyright (c) Microsoft Corporation. All rights reserved.
     7  // Licensed under the MIT License. See License.txt in the project root for license information.
     8  
     9  import (
    10  	"encoding/base64"
    11  	"encoding/xml"
    12  	"fmt"
    13  
    14  	"github.com/Azure/azure-sdk-for-go/services/classic/management"
    15  )
    16  
    17  const (
    18  	azureXmlns                        = "http://schemas.microsoft.com/windowsazure"
    19  	azureDeploymentListURL            = "services/hostedservices/%s/deployments"
    20  	azureHostedServiceListURL         = "services/hostedservices"
    21  	azureHostedServiceAvailabilityURL = "services/hostedservices/operations/isavailable/%s"
    22  	azureDeploymentURL                = "services/hostedservices/%s/deployments/%s"
    23  	deleteAzureDeploymentURL          = "services/hostedservices/%s/deployments/%s"
    24  	getHostedServicePropertiesURL     = "services/hostedservices/%s"
    25  	azureServiceCertificateURL        = "services/hostedservices/%s/certificates"
    26  
    27  	errParamNotSpecified = "Parameter %s is not specified."
    28  )
    29  
    30  //NewClient is used to return a handle to the HostedService API
    31  func NewClient(client management.Client) HostedServiceClient {
    32  	return HostedServiceClient{client: client}
    33  }
    34  
    35  func (h HostedServiceClient) CreateHostedService(params CreateHostedServiceParameters) error {
    36  	req, err := xml.Marshal(params)
    37  	if err != nil {
    38  		return err
    39  	}
    40  
    41  	_, err = h.client.SendAzurePostRequest(azureHostedServiceListURL, req) // not a long running operation
    42  	return err
    43  }
    44  
    45  func (h HostedServiceClient) CheckHostedServiceNameAvailability(dnsName string) (AvailabilityResponse, error) {
    46  	var r AvailabilityResponse
    47  	if dnsName == "" {
    48  		return r, fmt.Errorf(errParamNotSpecified, "dnsName")
    49  	}
    50  
    51  	requestURL := fmt.Sprintf(azureHostedServiceAvailabilityURL, dnsName)
    52  	response, err := h.client.SendAzureGetRequest(requestURL)
    53  	if err != nil {
    54  		return r, err
    55  	}
    56  
    57  	err = xml.Unmarshal(response, &r)
    58  	return r, err
    59  }
    60  
    61  func (h HostedServiceClient) DeleteHostedService(dnsName string, deleteDisksAndBlobs bool) (management.OperationID, error) {
    62  	if dnsName == "" {
    63  		return "", fmt.Errorf(errParamNotSpecified, "dnsName")
    64  	}
    65  
    66  	requestURL := fmt.Sprintf(getHostedServicePropertiesURL, dnsName)
    67  	if deleteDisksAndBlobs {
    68  		requestURL += "?comp=media"
    69  	}
    70  	return h.client.SendAzureDeleteRequest(requestURL)
    71  }
    72  
    73  func (h HostedServiceClient) GetHostedService(name string) (HostedService, error) {
    74  	hostedService := HostedService{}
    75  	if name == "" {
    76  		return hostedService, fmt.Errorf(errParamNotSpecified, "name")
    77  	}
    78  
    79  	requestURL := fmt.Sprintf(getHostedServicePropertiesURL, name)
    80  	response, err := h.client.SendAzureGetRequest(requestURL)
    81  	if err != nil {
    82  		return hostedService, err
    83  	}
    84  
    85  	err = xml.Unmarshal(response, &hostedService)
    86  	if err != nil {
    87  		return hostedService, err
    88  	}
    89  
    90  	decodedLabel, err := base64.StdEncoding.DecodeString(hostedService.LabelBase64)
    91  	if err != nil {
    92  		return hostedService, err
    93  	}
    94  	hostedService.Label = string(decodedLabel)
    95  	return hostedService, nil
    96  }
    97  
    98  func (h HostedServiceClient) ListHostedServices() (ListHostedServicesResponse, error) {
    99  	var response ListHostedServicesResponse
   100  
   101  	data, err := h.client.SendAzureGetRequest(azureHostedServiceListURL)
   102  	if err != nil {
   103  		return response, err
   104  	}
   105  
   106  	err = xml.Unmarshal(data, &response)
   107  	return response, err
   108  }
   109  
   110  func (h HostedServiceClient) AddCertificate(dnsName string, certData []byte, certificateFormat CertificateFormat, password string) (management.OperationID, error) {
   111  	if dnsName == "" {
   112  		return "", fmt.Errorf(errParamNotSpecified, "dnsName")
   113  	}
   114  
   115  	certBase64 := base64.StdEncoding.EncodeToString(certData)
   116  
   117  	addCertificate := CertificateFile{
   118  		Data:              certBase64,
   119  		CertificateFormat: certificateFormat,
   120  		Password:          password,
   121  		Xmlns:             azureXmlns,
   122  	}
   123  	buffer, err := xml.Marshal(addCertificate)
   124  	if err != nil {
   125  		return "", err
   126  	}
   127  
   128  	requestURL := fmt.Sprintf(azureServiceCertificateURL, dnsName)
   129  	return h.client.SendAzurePostRequest(requestURL, buffer)
   130  }
   131  

View as plain text