goperset

package module
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 3, 2023 License: Apache-2.0 Imports: 7 Imported by: 0

README

goperset

Golang Apache Superset API Package

This project is mentioned in the Apache Superset official wiki as a Golang API Package.

This project structure is based on: gocloak

For Questions either raise an issue, or come to the gopher-slack into the channel #goperset

SOON: Benchmarks can be found here

Contribution

(WIP) https://github.com/justmike1/goperset/wiki/Contribute

Changelog

For release notes please consult the specific releases here

Usage

Installation
go get github.com/justmike1/goperset@v0.1.0
Importing
 import "github.com/justmike1/goperset@v0.1.0"
Connecting to Superset Client
func main() {
    ctx := context.Background()
    client := goperset.NewClient(ctx, "https://superset.domain.net/")
    tokens, err := goperset.GetAccessTokens(client, "admin", "admin")
    if err != nil {
        t.Errorf("Error getting access tokens: %v", err)
        return
    }
}
Example of Creating a new database connection
func createDatabase(client, tokens string) error {
    databaseUri := fmt.Sprintf("postgresql+psycopg2://%s:%s@%s:%s/database", "username", "password", "postgresql", "5432")
    payload := goperset.DatabasePayload{
        ConfigurationMethod: goperset.StringP("sqlalchemy_form"),
        Engine:              goperset.StringP("postgresql+psycopg2"),
        DatabaseName:        goperset.StringP("postgresql"),
        SQLAlchemyURI:       goperset.StringP(databaseUri),
    }
    _, err := goperset.CreateDatabase(client, tokens, payload)
    if err != nil {
        return fmt.Errorf("error sending request: %v", err)
    }
    return nil
}

Features

// GoPerset holds all methods a client should fulfill
type GoPerset interface {
	
 // Client
 NewClient(basePath string) &Goperset
 GetAccessTokens(client *Goperset, username string, password string) (ClientToken, error)
 ClientResty(client *Goperset, token string, csrfToken string, contentType string, method string, endpoint string, payload interface{}) ([]byte, error)
 
 // Database
 CreateDatabase(client *Goperset, tokens ClientToken, payload DatabasePayload) ([]byte, error)
 
 // Dataset
 CreateDataset(client *Goperset, tokens ClientToken, payload DatasetPayload) ([]byte, error)
 
 // Chart
 CreateChart(client *Goperset, tokens ClientToken, payload DatasetPayload) ([]byte, error)
}
Unit Testing
SUPERSET_BASE_PATH=https://superset.domain.net go test client_test.go -v

Documentation

Index

Constants

View Source
const (
	DatabaseController         = "/api/v1/database/"
	DatasetController          = "/api/v1/dataset/"
	DashboardController        = "/api/v1/dashboard/"
	AdvancedDataTypeController = "/api/v1/advanced_data_type/"
	AnnotationLayerController  = "/api/v1/annotation_layer/"
	AssetsController           = "/api/v1/assets/"
	AsyncEventsController      = "/api/v1/async_event/"
	AvaliableDomainsController = "/api/v1/available_domains/"
	CacheKeysController        = "/api/v1/cache_keys/"
	ChartController            = "/api/v1/chart/"
	CssTemplateController      = "/api/v1/css_template/"
)
View Source
const (
	RolesEndpoint                     = SecurityController + "roles/"
	ConvertAdvancedDataTypeEndpoint   = AdvancedDataTypeController + "convert"
	AdvancedDataTypesEndpoint         = AdvancedDataTypeController + "types"
	AnnotationLayerInfoEndpoint       = AnnotationLayerController + "_info"
	RelatedAnnotationLayerEndpoint    = AnnotationLayerController + "related/"
	AnnotationLayerAnnotationEndpoint = AnnotationLayerController + "annotation/"
	ImportAssetsEndpoint              = AssetsController + "import/"
	ExportAssetsEndpoint              = AssetsController + "export/"
	InvalidateCacheKeyEndpoint        = CacheKeysController + "invalidate"
	ChartInfoEndpoint                 = ChartController + "_info"
	ChartDataEndpoint                 = ChartController + "data"
	ExportChartEndpoint               = ChartController + "export/"
	CHartFavoriteStatusEndpoint       = ChartController + "favorite_status/"
	ImportChartEndpoint               = ChartController + "import/"
	RelatedChartEndpoint              = ChartController + "related/"
	CssTemplateInfoEndpoint           = CssTemplateController + "_info"
	CssTemplateRelatedEndpoint        = CssTemplateController + "related/"
)

API Endpoint constants

View Source
const (
	SecurityController = "/api/v1/security/"
)

Secure Endpoint

Variables

This section is empty.

Functions

func BoolP

func BoolP(value bool) *bool

BoolP returns a pointer of a boolean variable

func ClientResty

func ClientResty(client *Goperset, tokens ClientToken, contentType string, method string, endpoint string, payload interface{}) ([]byte, error)

func CreateChart added in v0.1.2

func CreateChart(client *Goperset, tokens ClientToken, payload DatasetPayload) ([]byte, error)

func CreateDatabase added in v0.1.1

func CreateDatabase(client *Goperset, tokens ClientToken, payload DatabasePayload) ([]byte, error)

func CreateDataset added in v0.1.2

func CreateDataset(client *Goperset, tokens ClientToken, payload DatasetPayload) ([]byte, error)

func Float32P

func Float32P(value float32) *float32

Float32P returns a pointer of a float32 variable

func Float64P

func Float64P(value float64) *float64

Float64P returns a pointer of a float64 variable

func Int32P

func Int32P(value int32) *int32

Int32P returns a pointer of an int32 variable

func Int64P

func Int64P(value int64) *int64

Int64P returns a pointer of an int64 variable

func IntP

func IntP(value int) *int

IntP returns a pointer of an integer variable

func NilOrEmpty

func NilOrEmpty(value *string) bool

NilOrEmpty returns true if string is empty or has a nil value

func NilOrEmptyArray

func NilOrEmptyArray(value *[]string) bool

NilOrEmptyArray returns true if string is empty or has a nil value

func NilOrEmptySlice

func NilOrEmptySlice(value *[]string) bool

NilOrEmptySlice returns true if list is empty or has a nil value

func PBool

func PBool(value *bool) bool

PBool returns a boolean value from a pointer

func PFloat32

func PFloat32(value *float32) float32

PFloat32 returns an flaot32 value from a pointer

func PFloat64

func PFloat64(value *float64) float64

PFloat64 returns an flaot64 value from a pointer

func PInt

func PInt(value *int) int

PInt returns an integer value from a pointer

func PInt32

func PInt32(value *int32) int32

PInt32 returns an int32 value from a pointer

func PInt64

func PInt64(value *int64) int64

PInt64 returns an int64 value from a pointer

func PString

func PString(value *string) string

PString returns a string value from a pointer

func PStringSlice

func PStringSlice(value *[]string) []string

PStringSlice converts a pointer to []string or returns ampty slice if nill value

func StringP

func StringP(value string) *string

StringP returns a pointer of a string variable

func WithTracer

func WithTracer(ctx context.Context, tracer opentracing.Tracer) context.Context

WithTracer generates a context that has a tracer attached

Types

type ChartPayload added in v0.1.2

type ChartPayload struct {
	CacheTimeout           *int      `json:"cache_timeout"`
	CertificationDetails   *string   `json:"certification_details"`
	CertifiedBy            *string   `json:"certified_by"`
	Dashboards             *[]int    `json:"dashboards"`
	DatasourceID           *int      `json:"datasource_id"`
	DatasourceName         *string   `json:"datasource_name"`
	DatasourceType         *string   `json:"datasource_type"`
	Description            *string   `json:"description"`
	ExternalURL            *string   `json:"external_url"`
	IsManagedExternally    *bool     `json:"is_managed_externally"`
	Owners                 *[]int    `json:"owners"`
	Params                 *string   `json:"params"`
	QueryContext           *string   `json:"query_context"`
	QueryContextGeneration *bool     `json:"query_context_generation"`
	SliceName              *string   `json:"slice_name"`
	VizType                *[]string `json:"viz_type"`
}

type ClientToken added in v0.1.1

type ClientToken struct {
	AccessToken string
	CsrfToken   string
}

func GetAccessTokens

func GetAccessTokens(client *Goperset, username string, password string) (ClientToken, error)

type CsrfResponse

type CsrfResponse struct {
	AccessToken string `json:"result"`
}

type DashboardRolesPayload

type DashboardRolesPayload struct {
	Published      bool  `json:"published"`
	DashboardRoles []int `json:"roles"`
}

type DatabasePayload

type DatabasePayload struct {
	Engine               *string            `json:"engine"`
	ConfigurationMethod  *string            `json:"configuration_method"`
	DatabaseName         *string            `json:"database_name"`
	SQLAlchemyURI        *string            `json:"sqlalchemy_uri"`
	AllowCTAS            *bool              `json:"allow_ctas"`
	AllowCVAS            *bool              `json:"allow_cvas"`
	AllowDML             *bool              `json:"allow_dml"`
	AllowFileUpload      *bool              `json:"allow_file_upload"`
	AllowRunAsync        *bool              `json:"allow_run_async"`
	CacheTimeout         *int               `json:"cache_timeout"`
	Driver               *string            `json:"driver"`
	ExposeInSqlLab       *bool              `json:"expose_in_sqllab"`
	ExternalURL          *string            `json:"external_url"`
	Extra                *string            `json:"extra"`
	ForceCTASSchema      *string            `json:"force_ctas_schema"`
	ImpersonateUser      *bool              `json:"impersonate_user"`
	IsManagedExternally  *bool              `json:"is_managed_externally"`
	MaskedEncryptedExtra *string            `json:"masked_encrypted_extra"`
	Parameters           *map[string]string `json:"parameters"`
	ServerCert           *string            `json:"server_cert"`
	SSHTunnel            *SSHTunnelDetails  `json:"ssh_tunnel"`
	UUID                 *string            `json:"uuid"`
}

type DatasetPayload added in v0.1.2

type DatasetPayload struct {
	Database            *int    `json:"database"`
	ExternalURL         *string `json:"external_url"`
	IsManagedExternally *bool   `json:"is_managed_externally"`
	Owners              *[]int  `json:"owners"`
	Schema              *string `json:"schema"`
	SQL                 *string `json:"sql"`
	TableName           *string `json:"table_name"`
}

type EmbedPayload

type EmbedPayload struct {
	AllowedDomains *[]string `json:"allowed_domains"`
}

type EmbedResponse

type EmbedResponse struct {
	Result struct {
		UUID        string `json:"uuid"`
		DashboardID string `json:"dashboard_id"`
	} `json:"result"`
}

type Goperset

type Goperset struct {
	BasePath string
	Client   *http.Client
	Context  context.Context
}

func NewClient

func NewClient(ctx context.Context, basePath string) *Goperset

type LoginPayload

type LoginPayload struct {
	Password string `json:"password"`
	Provider string `json:"provider"`
	Refresh  bool   `json:"refresh"`
	Username string `json:"username"`
}

type LoginResponse

type LoginResponse struct {
	AccessToken string `json:"access_token"`
}

type RolePayload

type RolePayload struct {
	RoleName string `json:"name"`
}

type RoleResponse

type RoleResponse struct {
	ID     int `json:"id"`
	Result struct {
		Name string `json:"name"`
	} `json:"result"`
}

type RolesResponse

type RolesResponse struct {
	Result []struct {
		ID   int    `json:"id"`
		Name string `json:"name"`
	} `json:"result"`
}

type SSHTunnelDetails added in v0.1.1

type SSHTunnelDetails struct {
	ID                 *int    `json:"id"`
	Password           *string `json:"password"`
	PrivateKey         *string `json:"private_key"`
	PrivateKeyPassword *string `json:"private_key_password"`
	ServerAddress      *string `json:"server_address"`
	ServerPort         *int    `json:"server_port"`
	Username           *string `json:"username"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL