func delete(client *pubsub.Client, topic string) error { ctx := context.Background() // [START delete_topic] t := client.Topic(topic) if err := t.Delete(ctx); err != nil { return err } fmt.Printf("Deleted topic: %v\n", t) // [END delete_topic] return nil }
func getPolicy(c *pubsub.Client, topicName string) *iam.Policy { ctx := context.Background() // [START pubsub_get_topic_policy] policy, err := c.Topic(topicName).IAM().Policy(ctx) if err != nil { log.Fatal(err) } for _, role := range policy.Roles() { log.Print(policy.Members(role)) } // [END pubsub_get_topic_policy] return policy }
func publish(client *pubsub.Client, topic, msg string) error { ctx := context.Background() // [START publish] t := client.Topic(topic) msgIDs, err := t.Publish(ctx, &pubsub.Message{ Data: []byte(msg), }) if err != nil { return err } for _, id := range msgIDs { fmt.Printf("Published a message; msg ID: %v\n", id) } // [END publish] return nil }
func testPermissions(c *pubsub.Client, topicName string) []string { ctx := context.Background() // [START pubsub_test_topic_permissions] topic := c.Topic(topicName) perms, err := topic.IAM().TestPermissions(ctx, []string{ "pubsub.topics.publish", "pubsub.topics.update", }) if err != nil { log.Fatal(err) } for _, perm := range perms { log.Printf("Allowed: %v", perm) } // [END pubsub_test_topic_permissions] return perms }
func createTopicIfNotExists(c *pubsub.Client) *pubsub.Topic { ctx := context.Background() const topic = "example-topic" // Create a topic to subscribe to. t := c.Topic(topic) ok, err := t.Exists(ctx) if err != nil { log.Fatal(err) } if ok { return t } t, err = c.CreateTopic(ctx, topic) if err != nil { log.Fatalf("Failed to create the topic: %v", err) } return t }
func addUsers(c *pubsub.Client, topicName string) { ctx := context.Background() // [START pubsub_set_topic_policy] topic := c.Topic(topicName) policy, err := topic.IAM().Policy(ctx) if err != nil { log.Fatalf("GetPolicy: %v", err) } // Other valid prefixes are "serviceAccount:", "user:"******"group:[email protected]", iam.Editor) if err := topic.IAM().SetPolicy(ctx, policy); err != nil { log.Fatalf("SetPolicy: %v", err) } // NOTE: It may be necessary to retry this operation if IAM policies are // being modified concurrently. SetPolicy will return an error if the policy // was modified since it was retrieved. // [END pubsub_set_topic_policy] }