func createMarkerPaged(t *testing.T) pagination.Pager { testhelper.SetupHTTP() testhelper.Mux.HandleFunc("/page", func(w http.ResponseWriter, r *http.Request) { r.ParseForm() ms := r.Form["marker"] switch { case len(ms) == 0: fmt.Fprintf(w, "aaa\nbbb\nccc") case len(ms) == 1 && ms[0] == "ccc": fmt.Fprintf(w, "ddd\neee\nfff") case len(ms) == 1 && ms[0] == "fff": fmt.Fprintf(w, "ggg\nhhh\niii") case len(ms) == 1 && ms[0] == "iii": w.WriteHeader(http.StatusNoContent) default: t.Errorf("Request with unexpected marker: [%v]", ms) } }) client := createClient() createPage := func(r pagination.PageResult) pagination.Page { p := MarkerPageResult{pagination.MarkerPageBase{PageResult: r}} p.MarkerPageBase.Owner = p return p } return pagination.NewPager(client, testhelper.Server.URL+"/page", createPage) }
func createLinked(t *testing.T) pagination.Pager { testhelper.SetupHTTP() testhelper.Mux.HandleFunc("/page1", func(w http.ResponseWriter, r *http.Request) { w.Header().Add("Content-Type", "application/json") fmt.Fprintf(w, `{ "ints": [1, 2, 3], "links": { "next": "%s/page2" } }`, testhelper.Server.URL) }) testhelper.Mux.HandleFunc("/page2", func(w http.ResponseWriter, r *http.Request) { w.Header().Add("Content-Type", "application/json") fmt.Fprintf(w, `{ "ints": [4, 5, 6], "links": { "next": "%s/page3" } }`, testhelper.Server.URL) }) testhelper.Mux.HandleFunc("/page3", func(w http.ResponseWriter, r *http.Request) { w.Header().Add("Content-Type", "application/json") fmt.Fprintf(w, `{ "ints": [7, 8, 9], "links": { "next": null } }`) }) client := createClient() createPage := func(r pagination.PageResult) pagination.Page { return LinkedPageResult{pagination.LinkedPageBase{PageResult: r}} } return pagination.NewPager(client, testhelper.Server.URL+"/page1", createPage) }
// List returns a Pager which allows you to iterate over a collection of // floating IP resources. It accepts a ListOpts struct, which allows you to // filter and sort the returned collection for greater efficiency. func List(c *gophercloud.ServiceClient, opts ListOpts) pagination.Pager { q, err := gophercloud.BuildQueryString(&opts) if err != nil { return pagination.Pager{Err: err} } u := rootURL(c) + q.String() return pagination.NewPager(c, u, func(r pagination.PageResult) pagination.Page { return FloatingIPPage{pagination.LinkedPageBase{PageResult: r}} }) }
// List makes a request against the API to list resources for the given stack. func List(client *gophercloud.ServiceClient, stackName, stackID string, opts ListOptsBuilder) pagination.Pager { url := listURL(client, stackName, stackID) if opts != nil { query, err := opts.ToStackResourceListQuery() if err != nil { return pagination.Pager{Err: err} } url += query } return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page { return ResourcePage{pagination.SinglePageBase(r)} }) }
// List returns Snapshots optionally limited by the conditions provided in // ListOpts. func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { url := listURL(client) if opts != nil { query, err := opts.ToSnapshotListQuery() if err != nil { return pagination.Pager{Err: err} } url += query } return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page { return SnapshotPage{pagination.SinglePageBase(r)} }) }
// ListMembers returns a Pager which allows you to iterate over a collection of // members. It accepts a ListMembersOptsBuilder, which allows you to filter and sort // the returned collection for greater efficiency. // // Default policy settings return only those members that are owned by the // tenant who submits the request, unless an admin user submits the request. func ListMembers(c *gophercloud.ServiceClient, poolID string, opts ListMembersOptsBuilder) pagination.Pager { url := memberRootURL(c, poolID) if opts != nil { query, err := opts.ToMembersListQuery() if err != nil { return pagination.Pager{Err: err} } url += query } return pagination.NewPager(c, url, func(r pagination.PageResult) pagination.Page { return MemberPage{pagination.LinkedPageBase{PageResult: r}} }) }
// List enumerates the services available to a specific user. func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { u := listURL(client) if opts != nil { q, err := opts.ToServiceListMap() if err != nil { return pagination.Pager{Err: err} } u += q } return pagination.NewPager(client, u, func(r pagination.PageResult) pagination.Page { return ServicePage{pagination.LinkedPageBase{PageResult: r}} }) }
// List implements image list request func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { url := listURL(c) if opts != nil { query, err := opts.ToImageListQuery() if err != nil { return pagination.Pager{Err: err} } url += query } return pagination.NewPager(c, url, func(r pagination.PageResult) pagination.Page { return ImagePage{pagination.LinkedPageBase{PageResult: r}} }) }
// List enumerates endpoints in a paginated collection, optionally filtered by ListOpts criteria. func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { u := listURL(client) if opts != nil { q, err := gophercloud.BuildQueryString(opts) if err != nil { return pagination.Pager{Err: err} } u += q.String() } return pagination.NewPager(client, u, func(r pagination.PageResult) pagination.Page { return EndpointPage{pagination.LinkedPageBase{PageResult: r}} }) }
// ListAssignments enumerates the roles assigned to a specified resource. func ListAssignments(client *gophercloud.ServiceClient, opts ListAssignmentsOptsBuilder) pagination.Pager { url := listAssignmentsURL(client) if opts != nil { query, err := opts.ToRolesListAssignmentsQuery() if err != nil { return pagination.Pager{Err: err} } url += query } return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page { return RoleAssignmentPage{pagination.LinkedPageBase{PageResult: r}} }) }
// List returns a Pager which allows you to iterate over a collection of // stacks. It accepts a ListOpts struct, which allows you to filter and sort // the returned collection for greater efficiency. func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { url := listURL(c) if opts != nil { query, err := opts.ToStackListQuery() if err != nil { return pagination.Pager{Err: err} } url += query } createPage := func(r pagination.PageResult) pagination.Page { return StackPage{pagination.SinglePageBase(r)} } return pagination.NewPager(c, url, createPage) }
// ListResourceEvents makes a request against the API to list resources for the given stack. func ListResourceEvents(client *gophercloud.ServiceClient, stackName, stackID, resourceName string, opts ListResourceEventsOptsBuilder) pagination.Pager { url := listResourceEventsURL(client, stackName, stackID, resourceName) if opts != nil { query, err := opts.ToResourceEventListQuery() if err != nil { return pagination.Pager{Err: err} } url += query } return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page { p := EventPage{pagination.MarkerPageBase{PageResult: r}} p.MarkerPageBase.Owner = p return p }) }
func setupSinglePaged() pagination.Pager { testhelper.SetupHTTP() client := createClient() testhelper.Mux.HandleFunc("/only", func(w http.ResponseWriter, r *http.Request) { w.Header().Add("Content-Type", "application/json") fmt.Fprintf(w, `{ "ints": [1, 2, 3] }`) }) createPage := func(r pagination.PageResult) pagination.Page { return SinglePageResult{pagination.SinglePageBase(r)} } return pagination.NewPager(client, testhelper.Server.URL+"/only", createPage) }
// List returns a Pager which allows you to iterate over a collection of // CDN services. It accepts a ListOpts struct, which allows for pagination via // marker and limit. func List(c *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { url := listURL(c) if opts != nil { query, err := opts.ToCDNServiceListQuery() if err != nil { return pagination.Pager{Err: err} } url += query } return pagination.NewPager(c, url, func(r pagination.PageResult) pagination.Page { p := ServicePage{pagination.MarkerPageBase{PageResult: r}} p.MarkerPageBase.Owner = p return p }) }
// ListDetail returns ShareNetworks optionally limited by the conditions provided in ListOpts. func ListDetail(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pager { url := listDetailURL(client) if opts != nil { query, err := opts.ToShareNetworkListQuery() if err != nil { return pagination.Pager{Err: err} } url += query } return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page { p := ShareNetworkPage{pagination.MarkerPageBase{PageResult: r}} p.MarkerPageBase.Owner = p return p }) }
// List is a function that retrieves all objects in a container. It also returns the details // for the container. To extract only the object information or names, pass the ListResult // response to the ExtractInfo or ExtractNames function, respectively. func List(c *gophercloud.ServiceClient, containerName string, opts ListOptsBuilder) pagination.Pager { headers := map[string]string{"Accept": "text/plain", "Content-Type": "text/plain"} url := listURL(c, containerName) if opts != nil { full, query, err := opts.ToObjectListParams() if err != nil { return pagination.Pager{Err: err} } url += query if full { headers = map[string]string{"Accept": "application/json", "Content-Type": "application/json"} } } pager := pagination.NewPager(c, url, func(r pagination.PageResult) pagination.Page { p := ObjectPage{pagination.MarkerPageBase{PageResult: r}} p.MarkerPageBase.Owner = p return p }) pager.Headers = headers return pager }
// ListAddressesByNetwork makes a request against the API to list the servers IP addresses // for the given network. func ListAddressesByNetwork(client *gophercloud.ServiceClient, id, network string) pagination.Pager { return pagination.NewPager(client, listAddressesByNetworkURL(client, id, network), func(r pagination.PageResult) pagination.Page { return NetworkAddressPage{pagination.SinglePageBase(r)} }) }
// ListAddresses makes a request against the API to list the servers IP addresses. func ListAddresses(client *gophercloud.ServiceClient, id string) pagination.Pager { return pagination.NewPager(client, listAddressesURL(client, id), func(r pagination.PageResult) pagination.Page { return AddressPage{pagination.SinglePageBase(r)} }) }
// ListInstances will list all the instances associated with a particular // configuration group. func ListInstances(client *gophercloud.ServiceClient, configID string) pagination.Pager { return pagination.NewPager(client, instancesURL(client, configID), func(r pagination.PageResult) pagination.Page { return instances.InstancePage{pagination.LinkedPageBase{PageResult: r}} }) }
// ListGlobalParams is similar to ListDatastoreParams but does not require a // DatastoreID. func ListGlobalParams(client *gophercloud.ServiceClient, versionID string) pagination.Pager { return pagination.NewPager(client, listGlobalParamsURL(client, versionID), func(r pagination.PageResult) pagination.Page { return ParamPage{pagination.SinglePageBase(r)} }) }
// ListVersions lists all the Neutron API versions available to end-users func ListVersions(c *gophercloud.ServiceClient) pagination.Pager { return pagination.NewPager(c, apiVersionsURL(c), func(r pagination.PageResult) pagination.Page { return APIVersionPage{pagination.SinglePageBase(r)} }) }
// List will return a collection of default rules. func List(client *gophercloud.ServiceClient) pagination.Pager { return pagination.NewPager(client, rootURL(client), func(r pagination.PageResult) pagination.Page { return DefaultRulePage{pagination.SinglePageBase(r)} }) }
// List will list all available datastore types that instances can use. func List(client *gophercloud.ServiceClient) pagination.Pager { return pagination.NewPager(client, baseURL(client), func(r pagination.PageResult) pagination.Page { return DatastorePage{pagination.SinglePageBase(r)} }) }
// ListVersions will list all of the available versions for a specified // datastore type. func ListVersions(client *gophercloud.ServiceClient, datastoreID string) pagination.Pager { return pagination.NewPager(client, versionsURL(client, datastoreID), func(r pagination.PageResult) pagination.Page { return VersionPage{pagination.SinglePageBase(r)} }) }
// List returns a Pager which allows you to iterate over the full collection of extensions. // It does not accept query parameters. func List(c *gophercloud.ServiceClient) pagination.Pager { return pagination.NewPager(c, ListExtensionURL(c), func(r pagination.PageResult) pagination.Page { return ExtensionPage{pagination.SinglePageBase(r)} }) }
// List will list all the users associated with a specified database instance, // along with their associated databases. This operation will not return any // system users or administrators for a database. func List(client *gophercloud.ServiceClient, instanceID string) pagination.Pager { return pagination.NewPager(client, baseURL(client, instanceID), func(r pagination.PageResult) pagination.Page { return UserPage{pagination.LinkedPageBase{PageResult: r}} }) }
// List will list all available hardware flavors that an instance can use. The // operation is identical to the one supported by the Nova API, but without the // "disk" property. func List(client *gophercloud.ServiceClient) pagination.Pager { return pagination.NewPager(client, listURL(client), func(r pagination.PageResult) pagination.Page { return FlavorPage{pagination.LinkedPageBase{PageResult: r}} }) }
// ListVersionResources lists all of the different API resources for a particular // API versions. Typical resources for Neutron might be: networks, subnets, etc. func ListVersionResources(c *gophercloud.ServiceClient, v string) pagination.Pager { return pagination.NewPager(c, apiInfoURL(c, v), func(r pagination.PageResult) pagination.Page { return APIVersionResourcePage{pagination.SinglePageBase(r)} }) }
// List returns a Pager that allows you to iterate over a collection of FloatingIPs. func List(client *gophercloud.ServiceClient) pagination.Pager { return pagination.NewPager(client, listURL(client), func(r pagination.PageResult) pagination.Page { return FloatingIPPage{pagination.SinglePageBase(r)} }) }
func commonList(client *gophercloud.ServiceClient, url string) pagination.Pager { return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page { return SecurityGroupPage{pagination.SinglePageBase(r)} }) }