package rudder import ( "context" "encoding/json" "net/http" "net/url" "strconv" "hub.rudder.build/rudder/rudder-go-sdk/models" ) type UgcService struct { transport *transport } type ListUgcParameters struct { Status string Limit int Cursor string } func (s *UgcService) List(ctx context.Context, parameters ListUgcParameters) (*models.ListUgcResponse, error) { query := url.Values{} if parameters.Status != "" { query.Set("status", parameters.Status) } if parameters.Limit > 0 { query.Set("limit", strconv.Itoa(parameters.Limit)) } if parameters.Cursor != "" { query.Set("cursor", parameters.Cursor) } var response models.ListUgcResponse if err := s.transport.do(ctx, http.MethodGet, "/ugc", query, nil, &response); err != nil { return nil, err } return &response, nil } func (s *UgcService) UpdateMetadata(ctx context.Context, id string, metadata json.RawMessage) (*models.UgcSubmission, error) { body := models.UpdateUgcMetadataRequest{ ID: id, Metadata: metadata, } var response models.UgcSubmission if err := s.transport.do(ctx, http.MethodPatch, "/ugc/"+url.PathEscape(id)+"/metadata", nil, body, &response); err != nil { return nil, err } return &response, nil } type ReviewUgcParameters struct { Status string ReviewedBy string } func (s *UgcService) Review(ctx context.Context, id string, parameters ReviewUgcParameters) (*models.UgcSubmission, error) { body := models.ReviewUgcRequest{ ID: id, Status: parameters.Status, ReviewedBy: parameters.ReviewedBy, } var response models.UgcSubmission if err := s.transport.do(ctx, http.MethodPost, "/ugc/"+url.PathEscape(id)+"/review", nil, body, &response); err != nil { return nil, err } return &response, nil }