github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/ims/v2/cloudimages/urls.go (about) 1 package cloudimages 2 3 import ( 4 "net/url" 5 "strings" 6 7 "github.com/chnsz/golangsdk" 8 "github.com/chnsz/golangsdk/openstack/utils" 9 ) 10 11 // query images using search criteria and to display the images in a list 12 func listURL(c *golangsdk.ServiceClient) string { 13 return c.ServiceURL("cloudimages") 14 } 15 16 func createURL(c *golangsdk.ServiceClient) string { 17 return c.ServiceURL("cloudimages/action") 18 } 19 20 func createDataImageURL(c *golangsdk.ServiceClient) string { 21 return c.ServiceURL("cloudimages/dataimages/action") 22 } 23 24 func createWholeImageURL(c *golangsdk.ServiceClient) string { 25 return c.ServiceURL("cloudimages/wholeimages/action") 26 } 27 28 func updateURL(c *golangsdk.ServiceClient, imageID string) string { 29 return c.ServiceURL("cloudimages", imageID) 30 } 31 32 // builds next page full url based on current url 33 func 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 = golangsdk.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 return nextURL.String(), nil 54 }