// authorizeCharmStoreEntity acquires and return the charm store delegatable macaroon to be // used to add the charm corresponding to the given URL. // The macaroon is properly attenuated so that it can only be used to deploy // the given charm URL. func authorizeCharmStoreEntity(csClient *csclient.Client, curl *charm.URL) (*macaroon.Macaroon, error) { endpoint := "/delegatable-macaroon?id=" + url.QueryEscape(curl.String()) var m *macaroon.Macaroon if err := csClient.Get(endpoint, &m); err != nil { return nil, errors.Trace(err) } return m, nil }