metabase

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Aug 12, 2019 License: MIT Imports: 16 Imported by: 0

README

Metabase

Authentication

To query the Metabase API you need to retrieve a bearer token. You can do this with the following cURL command which is also implemented in the AuthRequest function:

curl -v -H "Content-Type: application/json" \
  -d '{"username":"myusername","password":"mypassword"}' \
  -XPOST 'http://example.com/api/session'

You will receive a response like:

{"id":"11112222-3333-4444-5555-666677778888"}

You can then use the id in the X-Metabase-Session header for subsequent API calls.

curl -XGET 'https://data.corp.ringcentral.com/pla-prod/api/database' -H 'X-Metabase-Session: 05e8a15d-ff4f-4179-80c8-35fb4ba83716'

curl -v -H "Content-Type: application/json" -d '{"username":"john.wang@ringcentral.com","password":"Yah00ligan5@@"}' -XPOST 'https://data.corp.ringcentral.com/pla-prod/api/session'

Documentation

Index

Constants

View Source
const (
	MetabaseSessionHeader = "X-Metabase-Session"
	RelPathApiDatabase    = "api/database"
	RelPathApiSession     = "api/session"
	RelPathApiUserCurrent = "api/user/current"

	// Example environment variables
	EnvBaseURL   = "METABASE_BASE_URL"
	EnvSessionId = "METABASE_SESSION_ID"
	EnvUsername  = "METABASE_USERNAME"
	EnvPassword  = "METABASE_PASSWORD"
)

Variables

View Source
var (
	TLSInsecureSkipVerify = false
)

Functions

func AuthRequest

func AuthRequest(authUrl, username, password string, tlsSkipVerify bool) (*http.Response, error)

AuthRequest creates an authentiation request that returns a id that is used in Metabase API requests. It follows the following curl command: curl -v -H "Content-Type: application/json" -d '{"username":"myusername","password":"mypassword"}' -XPOST 'http://example.com/api/session'

func NewClientSessionId

func NewClientSessionId(sessionId string, tlsSkipVerify bool) *http.Client

func RetrieveQuestions

func RetrieveQuestions(cu ClientUtil, q2s QuestionsToSlug, dir string) (map[string][]byte, error)

Types

type AuthResponse

type AuthResponse struct {
	Id string `json:"id,omitempty"`
}

func NewClientEnv

func NewClientEnv(cfg InitConfig) (*http.Client, *AuthResponse, error)

func NewClientPassword

func NewClientPassword(baseUrl, username, password string, tlsSkipVerify bool) (*http.Client, *AuthResponse, error)

NewClient returns a *http.Client that will add the Metabase Session header to each request.

func NewClientPasswordWithSessionId

func NewClientPasswordWithSessionId(baseUrl, username, password, sessionId string, tlsSkipVerify bool) (*http.Client, *AuthResponse, error)

NewClientPasswordWithSessionId returns a *http.Client first attempting to use the supplied `sessionId` with a fallback to `username` and `password`.

type ClientUtil

type ClientUtil struct {
	HTTPClient *http.Client
	BaseURL    string
}

func NewClientUtil

func NewClientUtil(baseUrl, username, password string, tlsSkipVerify bool) (*ClientUtil, error)

func (*ClientUtil) BuildMetabaseCardAPI

func (cu *ClientUtil) BuildMetabaseCardAPI(cardId int, format string) string

func (*ClientUtil) GetQuestionData

func (cu *ClientUtil) GetQuestionData(cardId int) ([]byte, error)

func (*ClientUtil) GetStoreQuestionData

func (cu *ClientUtil) GetStoreQuestionData(cardId int, filename string, perm os.FileMode) ([]byte, error)

type InitConfig added in v0.3.0

type InitConfig struct {
	LoadEnv              bool
	EnvPath              string
	EnvMetabaseBaseUrl   string
	EnvMetabaseSessionId string
	EnvMetabaseUsername  string
	EnvMetabasePassword  string
	TlsSkipVerify        bool
}

type QuestionsToSlug

type QuestionsToSlug struct {
	QuestionMap map[string]int
}

Directories

Path Synopsis
examples

Jump to

Keyboard shortcuts

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