OpenTopicURL opens a pubsub.Topic based on u.
(ctx context.Context, u *url.URL)
| 112 | |
| 113 | // OpenTopicURL opens a pubsub.Topic based on u. |
| 114 | func (o *URLOpener) OpenTopicURL(ctx context.Context, u *url.URL) (*pubsub.Topic, error) { |
| 115 | opts := o.TopicOptions |
| 116 | for param, value := range u.Query() { |
| 117 | switch param { |
| 118 | case "key_name": |
| 119 | if len(value) != 1 || len(value[0]) == 0 { |
| 120 | return nil, fmt.Errorf("open topic %v: invalid query parameter %q", u, param) |
| 121 | } |
| 122 | |
| 123 | opts.KeyName = value[0] |
| 124 | default: |
| 125 | return nil, fmt.Errorf("open topic %v: invalid query parameter %q", u, param) |
| 126 | } |
| 127 | } |
| 128 | |
| 129 | exchangeName := path.Join(u.Host, u.Path) |
| 130 | return OpenTopic(o.Connection, exchangeName, &opts), nil |
| 131 | } |
| 132 | |
| 133 | // OpenSubscriptionURL opens a pubsub.Subscription based on u. |
| 134 | func (o *URLOpener) OpenSubscriptionURL(ctx context.Context, u *url.URL) (*pubsub.Subscription, error) { |