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