blob: dcd6bfcb66248e70d7f26231115dd00e05492b05 [file] [log] [blame]
package client
/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import (
"fmt"
"net/url"
"github.com/apache/trafficcontrol/lib/go-tc"
"github.com/apache/trafficcontrol/traffic_ops/toclientlib"
)
/* Internally, the CDNName is only used in the GET method. The CDNName
* seems to primarily be used to differentiate between `/federations` and
* `/cdns/:name/federations`. Although the behavior is odd, it is kept to
* keep the same behavior from perl. */
// CreateCDNFederation creates the given Federation in the CDN with the given
// name.
func (to *Session) CreateCDNFederation(f tc.CDNFederation, cdnName string, opts RequestOptions) (tc.CreateCDNFederationResponse, toclientlib.ReqInf, error) {
var data tc.CreateCDNFederationResponse
route := "/cdns/" + url.PathEscape(cdnName) + "/federations"
inf, err := to.post(route, opts, f, &data)
return data, inf, err
}
// GetCDNFederationsByName retrieves all Federations in the CDN with the given
// name.
func (to *Session) GetCDNFederationsByName(cdnName string, opts RequestOptions) (tc.CDNFederationResponse, toclientlib.ReqInf, error) {
var data tc.CDNFederationResponse
route := "/cdns/" + url.PathEscape(cdnName) + "/federations"
inf, err := to.get(route, opts, &data)
return data, inf, err
}
// UpdateCDNFederation replaces the Federation with the given ID in the CDN
// with the given name with the provided Federation.
func (to *Session) UpdateCDNFederation(f tc.CDNFederation, cdnName string, id int, opts RequestOptions) (tc.UpdateCDNFederationResponse, toclientlib.ReqInf, error) {
var data tc.UpdateCDNFederationResponse
route := fmt.Sprintf("/cdns/%s/federations/%d", url.PathEscape(cdnName), id)
inf, err := to.put(route, opts, f, &data)
return data, inf, err
}
// DeleteCDNFederation deletes the Federation with the given ID in the CDN
// with the given name.
func (to *Session) DeleteCDNFederation(cdnName string, id int, opts RequestOptions) (tc.DeleteCDNFederationResponse, toclientlib.ReqInf, error) {
var data tc.DeleteCDNFederationResponse
route := fmt.Sprintf("/cdns/%s/federations/%d", url.PathEscape(cdnName), id)
inf, err := to.del(route, opts, &data)
return data, inf, err
}