func delete(client *pubsub.Client, name string) error { ctx := context.Background() // [START delete_subscription] sub := client.Subscription(name) if err := sub.Delete(ctx); err != nil { return err } fmt.Println("Subscription deleted.") // [END delete_subscription] return nil }
func getPolicy(c *pubsub.Client, subName string) *iam.Policy { ctx := context.Background() // [START pubsub_get_subscription_policy] policy, err := c.Subscription(subName).IAM().Policy(ctx) if err != nil { log.Fatal(err) } for _, role := range policy.Roles() { log.Printf("%q: %q", role, policy.Members(role)) } // [END pubsub_get_subscription_policy] return policy }
func testPermissions(c *pubsub.Client, subName string) []string { ctx := context.Background() // [START pubsub_test_subscription_permissions] sub := c.Subscription(subName) perms, err := sub.IAM().TestPermissions(ctx, []string{ "pubsub.subscriptions.consume", "pubsub.subscriptions.update", }) if err != nil { log.Fatal(err) } for _, perm := range perms { log.Printf("Allowed: %v", perm) } // [END pubsub_test_subscription_permissions] return perms }
func addUsers(c *pubsub.Client, subName string) { ctx := context.Background() // [START pubsub_set_subscription_policy] sub := c.Subscription(subName) policy, err := sub.IAM().Policy(ctx) if err != nil { log.Fatalf("GetPolicy: %v", err) } // Other valid prefixes are "serviceAccount:", "user:"******"group:[email protected]", iam.Editor) if err := sub.IAM().SetPolicy(ctx, policy); err != nil { log.Fatalf("SetUser: %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_subscription_policy] }
func pullMsgs(client *pubsub.Client, name string, topic *pubsub.Topic) error { ctx := context.Background() // publish 10 messages on the topic. for i := 0; i < 10; i++ { _, err := topic.Publish(ctx, &pubsub.Message{ Data: []byte(fmt.Sprintf("hello world #%d", i)), }) if err != nil { return err } } // [START pull_messages] sub := client.Subscription(name) it, err := sub.Pull(ctx) if err != nil { return err } defer it.Stop() // Consume 10 messages. for i := 0; i < 10; i++ { msg, err := it.Next() if err == iterator.Done { break } if err != nil { return err } fmt.Printf("Got message: %q\n", string(msg.Data)) msg.Done(true) } // [END pull_messages] return nil }