github.com/grokify/go-ringcentral-client@v0.3.31/engagedigital/v1/examples/source_update/main.go (about)

     1  package main
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"log"
     7  
     8  	"github.com/antihax/optional"
     9  	"github.com/grokify/mogo/errors/errorsutil"
    10  	"github.com/grokify/mogo/fmt/fmtutil"
    11  	"github.com/jessevdk/go-flags"
    12  
    13  	engagedigital "github.com/grokify/go-ringcentral-client/engagedigital/v1/client"
    14  	utils "github.com/grokify/go-ringcentral-client/engagedigital/v1/util"
    15  )
    16  
    17  type options struct {
    18  	Site  string `short:"s" long:"site" description:"A site" required:"true"`
    19  	Token string `short:"t" long:"token" description:"A token" required:"true"`
    20  }
    21  
    22  func main() {
    23  	opts := options{}
    24  	_, err := flags.Parse(&opts)
    25  	if err != nil {
    26  		log.Fatal(err)
    27  	}
    28  
    29  	client := utils.NewApiClient(opts.Site, opts.Token)
    30  
    31  	info, resp, err := client.SourcesApi.GetAllSources(context.Background(), nil)
    32  	if err != nil {
    33  		err = errorsutil.Wrap(err, "E_GET_ALL_SOURCES")
    34  		log.Fatal(err)
    35  	} else if resp.StatusCode != 200 {
    36  		log.Fatal(resp.StatusCode)
    37  	}
    38  	fmtutil.PrintJSON(info)
    39  
    40  	for _, source := range info.Records {
    41  		fmt.Println(">>> INITIAL <<<")
    42  		fmtutil.PrintJSON(source)
    43  		newActive := false
    44  		if !source.Active {
    45  			newActive = true
    46  		}
    47  		opts := &engagedigital.UpdateSourceOpts{
    48  			Active: optional.NewBool(newActive),
    49  		}
    50  		info, resp, err := client.SourcesApi.UpdateSource(
    51  			context.Background(), source.Id, opts)
    52  		if err != nil {
    53  			err = errorsutil.Wrap(err, "E_UPDATE_SOURCE")
    54  			log.Fatal(err)
    55  		} else if resp.StatusCode != 200 {
    56  			log.Fatal(resp.StatusCode)
    57  		}
    58  		fmt.Println(">>> UPDATED <<<")
    59  		fmtutil.PrintJSON(info)
    60  		break
    61  	}
    62  
    63  	fmt.Println("DONE")
    64  }