12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package redriver
- import (
- "fmt"
- "net/url"
- "strings"
- "github.com/aws/aws-sdk-go-v2/aws/arn"
- )
- func NameFromURL(qURL string) (name string, err error) {
- u, err := url.Parse(qURL)
- if err != nil {
- return "", fmt.Errorf("queue URL %q is not a valid URL: %w", qURL, err)
- }
- path := u.EscapedPath()
- parts := strings.Split(strings.Trim(path, "/"), "/")
- if len(parts) != 2 {
- return "", fmt.Errorf("queue path %q does not have exactly 2 parts", path)
- }
- return parts[1], nil
- }
- func NameFromARN(qARN arn.ARN) string {
- return qARN.Resource
- }
- func NameFromARNString(qARN string) (name string, err error) {
- a, err := arn.Parse(qARN)
- if err != nil {
- return "", fmt.Errorf("queue \"ARN\" %q is not an valid ARN", qARN)
- }
- return NameFromARN(a), nil
- }
- func URLFromARNString(qARN string) (name string, err error) {
- a, err := arn.Parse(qARN)
- if err != nil {
- return "", fmt.Errorf("queue \"ARN\" %q is not an valid ARN", qARN)
- }
- return URLFromARN(a)
- }
- func URLFromARN(qARN arn.ARN) (name string, err error) {
- path, err := url.JoinPath("/", qARN.AccountID, qARN.Resource)
- if err != nil {
- return "", fmt.Errorf("incorrect queue ARN: %w", err)
- }
- u := url.URL{
- Scheme: "https",
- Host: fmt.Sprintf("%s.%s.%s", qARN.Service, qARN.Region, "amazonws.com"),
- Path: path,
- }
- return u.String(), nil
- }
|