diff options
Diffstat (limited to 'vendor/github.com/goamz/goamz/route53/route53.go')
-rw-r--r-- | vendor/github.com/goamz/goamz/route53/route53.go | 254 |
1 files changed, 0 insertions, 254 deletions
diff --git a/vendor/github.com/goamz/goamz/route53/route53.go b/vendor/github.com/goamz/goamz/route53/route53.go deleted file mode 100644 index 0e26a6f73..000000000 --- a/vendor/github.com/goamz/goamz/route53/route53.go +++ /dev/null @@ -1,254 +0,0 @@ -package route53 - -import ( - "bytes" - "encoding/xml" - "fmt" - "github.com/goamz/goamz/aws" - "io" - "net/http" -) - -type Route53 struct { - Auth aws.Auth - Endpoint string - Signer *aws.Route53Signer - Service *aws.Service -} - -const route53_host = "https://route53.amazonaws.com" - -// Factory for the route53 type -func NewRoute53(auth aws.Auth) (*Route53, error) { - signer := aws.NewRoute53Signer(auth) - - return &Route53{ - Auth: auth, - Signer: signer, - Endpoint: route53_host + "/2013-04-01/hostedzone", - }, nil -} - -// General Structs used in all types of requests -type HostedZone struct { - XMLName xml.Name `xml:"HostedZone"` - Id string - Name string - CallerReference string - Config Config - ResourceRecordSetCount int -} - -type Config struct { - XMLName xml.Name `xml:"Config"` - Comment string -} - -// Structs for getting the existing Hosted Zones -type ListHostedZonesResponse struct { - XMLName xml.Name `xml:"ListHostedZonesResponse"` - HostedZones []HostedZone `xml:"HostedZones>HostedZone"` - Marker string - IsTruncated bool - NextMarker string - MaxItems int -} - -// Structs for Creating a New Host -type CreateHostedZoneRequest struct { - XMLName xml.Name `xml:"CreateHostedZoneRequest"` - Xmlns string `xml:"xmlns,attr"` - Name string - CallerReference string - HostedZoneConfig HostedZoneConfig -} - -type ResourceRecordValue struct { - Value string `xml:"Value"` -} - -type AliasTarget struct { - HostedZoneId string `xml:"HostedZoneId"` - DNSName string `xml:"DNSName"` - EvaluateTargetHealth bool `xml:"EvaluateTargetHealth"` -} - -// Wrapper for all the different resource record sets -type ResourceRecordSet interface{} - -// Basic Change -type Change struct { - Action string `xml:"Action"` - Name string `xml:"ResourceRecordSet>Name"` - Type string `xml:"ResourceRecordSet>Type"` - TTL int `xml:"ResourceRecordSet>TTL,omitempty"` - Values []ResourceRecordValue `xml:"ResourceRecordSet>ResourceRecords>ResourceRecord"` - HealthCheckId string `xml:"ResourceRecordSet>HealthCheckId,omitempty"` -} - -// Basic Resource Recod Set -type BasicResourceRecordSet struct { - Action string `xml:"Action"` - Name string `xml:"ResourceRecordSet>Name"` - Type string `xml:"ResourceRecordSet>Type"` - TTL int `xml:"ResourceRecordSet>TTL,omitempty"` - Values []ResourceRecordValue `xml:"ResourceRecordSet>ResourceRecords>ResourceRecord"` - HealthCheckId string `xml:"ResourceRecordSet>HealthCheckId,omitempty"` -} - -// Alias Resource Record Set -type AliasResourceRecordSet struct { - Action string `xml:"Action"` - Name string `xml:"ResourceRecordSet>Name"` - Type string `xml:"ResourceRecordSet>Type"` - AliasTarget AliasTarget `xml:"ResourceRecordSet>AliasTarget"` - HealthCheckId string `xml:"ResourceRecordSet>HealthCheckId,omitempty"` -} - -type ChangeResourceRecordSetsRequest struct { - XMLName xml.Name `xml:"ChangeResourceRecordSetsRequest"` - Xmlns string `xml:"xmlns,attr"` - Changes []ResourceRecordSet `xml:"ChangeBatch>Changes>Change"` -} - -type HostedZoneConfig struct { - XMLName xml.Name `xml:"HostedZoneConfig"` - Comment string -} - -type CreateHostedZoneResponse struct { - XMLName xml.Name `xml:"CreateHostedZoneResponse"` - HostedZone HostedZone - ChangeInfo ChangeInfo - DelegationSet DelegationSet -} - -type ChangeResourceRecordSetsResponse struct { - XMLName xml.Name `xml:"ChangeResourceRecordSetsResponse"` - Id string `xml:"ChangeInfo>Id"` - Status string `xml:"ChangeInfo>Status"` - SubmittedAt string `xml:"ChangeInfo>SubmittedAt"` -} - -type ChangeInfo struct { - XMLName xml.Name `xml:"ChangeInfo"` - Id string - Status string - SubmittedAt string -} - -type DelegationSet struct { - XMLName xml.Name `xml:"DelegationSet` - NameServers NameServers -} - -type NameServers struct { - XMLName xml.Name `xml:"NameServers` - NameServer []string -} - -type GetHostedZoneResponse struct { - XMLName xml.Name `xml:"GetHostedZoneResponse"` - HostedZone HostedZone - DelegationSet DelegationSet -} - -type DeleteHostedZoneResponse struct { - XMLName xml.Name `xml:"DeleteHostedZoneResponse"` - Xmlns string `xml:"xmlns,attr"` - ChangeInfo ChangeInfo -} - -// query sends the specified HTTP request to the path and signs the request -// with the required authentication and headers based on the Auth. -// -// Automatically decodes the response into the the result interface -func (r *Route53) query(method string, path string, body io.Reader, result interface{}) error { - var err error - - // Create the POST request and sign the headers - req, err := http.NewRequest(method, path, body) - r.Signer.Sign(req) - - // Send the request and capture the response - client := &http.Client{} - res, err := client.Do(req) - if err != nil { - return err - } - - if method == "POST" { - defer req.Body.Close() - } - - if res.StatusCode != 201 && res.StatusCode != 200 { - err = r.Service.BuildError(res) - return err - } - - err = xml.NewDecoder(res.Body).Decode(result) - - return err -} - -// CreateHostedZone send a creation request to the AWS Route53 API -func (r *Route53) CreateHostedZone(hostedZoneReq *CreateHostedZoneRequest) (*CreateHostedZoneResponse, error) { - xmlBytes, err := xml.Marshal(hostedZoneReq) - if err != nil { - return nil, err - } - - result := new(CreateHostedZoneResponse) - err = r.query("POST", r.Endpoint, bytes.NewBuffer(xmlBytes), result) - - return result, err -} - -// ChangeResourceRecordSet send a change resource record request to the AWS Route53 API -func (r *Route53) ChangeResourceRecordSet(req *ChangeResourceRecordSetsRequest, zoneId string) (*ChangeResourceRecordSetsResponse, error) { - xmlBytes, err := xml.Marshal(req) - if err != nil { - return nil, err - } - xmlBytes = []byte(xml.Header + string(xmlBytes)) - - result := new(ChangeResourceRecordSetsResponse) - path := fmt.Sprintf("%s/%s/rrset", r.Endpoint, zoneId) - err = r.query("POST", path, bytes.NewBuffer(xmlBytes), result) - - return result, err -} - -// ListedHostedZones fetches a collection of HostedZones through the AWS Route53 API -func (r *Route53) ListHostedZones(marker string, maxItems int) (result *ListHostedZonesResponse, err error) { - path := "" - - if marker == "" { - path = fmt.Sprintf("%s?maxitems=%d", r.Endpoint, maxItems) - } else { - path = fmt.Sprintf("%s?marker=%v&maxitems=%d", r.Endpoint, marker, maxItems) - } - - result = new(ListHostedZonesResponse) - err = r.query("GET", path, nil, result) - - return -} - -// GetHostedZone fetches a particular hostedzones DelegationSet by id -func (r *Route53) GetHostedZone(id string) (result *GetHostedZoneResponse, err error) { - result = new(GetHostedZoneResponse) - err = r.query("GET", fmt.Sprintf("%s/%v", r.Endpoint, id), nil, result) - - return -} - -// DeleteHostedZone deletes the hosted zone with the given id -func (r *Route53) DeleteHostedZone(id string) (result *DeleteHostedZoneResponse, err error) { - path := fmt.Sprintf("%s/%s", r.Endpoint, id) - - result = new(DeleteHostedZoneResponse) - err = r.query("DELETE", path, nil, result) - - return -} |