forked from Harwayne/knative-gcp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
interfaces.go
71 lines (62 loc) · 3 KB
/
interfaces.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
Copyright 2019 Google LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package pubsub
import (
"context"
"cloud.google.com/go/pubsub"
"github.com/google/knative-gcp/pkg/gclient/iam"
)
// Client matches the interface exposed by pubsub.Client
// see https://godoc.org/cloud.google.com/go/pubsub#Client
type Client interface {
// Close see https://godoc.org/cloud.google.com/go/pubsub#Client.Close
Close() error
// Topic see https://godoc.org/cloud.google.com/go/pubsub#Client.Topic
Topic(id string) Topic
// Subscription see https://godoc.org/cloud.google.com/go/pubsub#Client.Subscription
Subscription(id string) Subscription
// CreateSubscription see https://godoc.org/cloud.google.com/go/pubsub#Client.CreateSubscription
CreateSubscription(ctx context.Context, id string, cfg SubscriptionConfig) (Subscription, error)
// CreateTopic see https://godoc.org/cloud.google.com/go/pubsub#Client.CreateTopic
CreateTopic(ctx context.Context, id string) (Topic, error)
// CreateTopicWithConfig see https://godoc.org/cloud.google.com/go/pubsub#Client.CreateTopicWithConfig
CreateTopicWithConfig(ctx context.Context, id string, cfg *pubsub.TopicConfig) (Topic, error)
}
// Subscription matches the interface exposed by pubsub.Subscription
// see https://godoc.org/cloud.google.com/go/pubsub#Subscription
type Subscription interface {
// Exists see https://godoc.org/cloud.google.com/go/pubsub#Subscription.Exists
Exists(ctx context.Context) (bool, error)
// Config see https://godoc.org/cloud.google.com/go/pubsub#Subscription.Config
Config(ctx context.Context) (SubscriptionConfig, error)
// Update see https://godoc.org/cloud.google.com/go/pubsub#Subscription.Update
Update(ctx context.Context, cfg SubscriptionConfig) (SubscriptionConfig, error)
// Delete see https://godoc.org/cloud.google.com/go/pubsub#Subscription.Delete
Delete(ctx context.Context) error
// ID see https://godoc.org/cloud.google.com/go/pubsub#Subscription.ID
ID() string
}
// Topic matches the interface exposed by pubsub.Topic
// see https://godoc.org/cloud.google.com/go/pubsub#Topic
type Topic interface {
// Exists see https://godoc.org/cloud.google.com/go/pubsub#Topic.Exists
Exists(ctx context.Context) (bool, error)
// Delete see https://godoc.org/cloud.google.com/go/pubsub#Topic.Delete
Delete(ctx context.Context) error
// IAM see https://godoc.org/cloud.google.com/go/pubsub#Topic.IAM
IAM() iam.Handle
// ID see https://godoc.org/cloud.google.com/go/pubsub#Topic.ID
ID() string
// String see https://godoc.org/cloud.google.com/go/pubsub#Topic.String
String() string
}