1package tasks
2
3import (
4	"net/url"
5	"strings"
6
7	"github.com/gophercloud/gophercloud"
8	"github.com/gophercloud/gophercloud/openstack/utils"
9)
10
11const resourcePath = "tasks"
12
13func rootURL(c *gophercloud.ServiceClient) string {
14	return c.ServiceURL(resourcePath)
15}
16
17func resourceURL(c *gophercloud.ServiceClient, taskID string) string {
18	return c.ServiceURL(resourcePath, taskID)
19}
20
21func listURL(c *gophercloud.ServiceClient) string {
22	return rootURL(c)
23}
24
25func getURL(c *gophercloud.ServiceClient, taskID string) string {
26	return resourceURL(c, taskID)
27}
28
29func createURL(c *gophercloud.ServiceClient) string {
30	return rootURL(c)
31}
32
33func nextPageURL(serviceURL, requestedNext string) (string, error) {
34	base, err := utils.BaseEndpoint(serviceURL)
35	if err != nil {
36		return "", err
37	}
38
39	requestedNextURL, err := url.Parse(requestedNext)
40	if err != nil {
41		return "", err
42	}
43
44	base = gophercloud.NormalizeURL(base)
45	nextPath := base + strings.TrimPrefix(requestedNextURL.Path, "/")
46
47	nextURL, err := url.Parse(nextPath)
48	if err != nil {
49		return "", err
50	}
51
52	nextURL.RawQuery = requestedNextURL.RawQuery
53
54	return nextURL.String(), nil
55}
56