service

package
v0.42.0 Latest Latest
Warning

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

Go to latest
Published: Apr 5, 2022 License: MIT Imports: 31 Imported by: 0

Documentation

Overview

Package service orchestrates components between handlers and other packages (datastore, gateway, domain, etc.)

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APIKeyResponse added in v0.39.0

type APIKeyResponse struct {
	Key              string `json:"key"`
	DeactivationDate string `json:"deactivation_date"`
}

APIKeyResponse is the response fields for an API key

type AppResponse added in v0.39.0

type AppResponse struct {
	ExternalID          string           `json:"external_id"`
	Name                string           `json:"name"`
	Description         string           `json:"description"`
	CreateAppExtlID     string           `json:"create_app_extl_id"`
	CreateUsername      string           `json:"create_username"`
	CreateUserFirstName string           `json:"create_user_first_name"`
	CreateUserLastName  string           `json:"create_user_last_name"`
	CreateDateTime      string           `json:"create_date_time"`
	UpdateAppExtlID     string           `json:"update_app_extl_id"`
	UpdateUsername      string           `json:"update_username"`
	UpdateUserFirstName string           `json:"update_user_first_name"`
	UpdateUserLastName  string           `json:"update_user_last_name"`
	UpdateDateTime      string           `json:"update_date_time"`
	APIKeys             []APIKeyResponse `json:"api_keys"`
}

AppResponse is the response struct for an App

type AppService added in v0.41.0

type AppService struct {
	Datastorer            Datastorer
	RandomStringGenerator CryptoRandomGenerator
	EncryptionKey         *[32]byte
}

AppService is a service for creating an App

func (AppService) Create added in v0.41.0

Create is used to create an App

func (AppService) Delete added in v0.41.0

func (s AppService) Delete(ctx context.Context, extlID string) (DeleteResponse, error)

Delete is used to delete an App

func (AppService) FindAll added in v0.42.0

func (s AppService) FindAll(ctx context.Context) ([]AppResponse, error)

FindAll is used to list all apps in the datastore

func (AppService) FindByExternalID added in v0.42.0

func (s AppService) FindByExternalID(ctx context.Context, extlID string) (AppResponse, error)

FindByExternalID is used to find an App by its External ID

func (AppService) Update added in v0.41.0

Update is used to update an App. API Keys for an App cannot be updated.

type Authorizer added in v0.39.0

type Authorizer interface {
	Authorize(lgr zerolog.Logger, r *http.Request, sub audit.Audit) error
}

Authorizer determines if an app/user (as part of an Audit) is authorized for the route in the request

type CreateAppRequest added in v0.39.0

type CreateAppRequest struct {
	Name        string `json:"name"`
	Description string `json:"description"`
}

CreateAppRequest is the request struct for Creating an App

type CreateMovieRequest

type CreateMovieRequest struct {
	Title    string `json:"title"`
	Rated    string `json:"rated"`
	Released string `json:"release_date"`
	RunTime  int    `json:"run_time"`
	Director string `json:"director"`
	Writer   string `json:"writer"`
}

CreateMovieRequest is the request struct for Creating a Movie

type CreateMovieService

type CreateMovieService struct {
	Datastorer Datastorer
}

CreateMovieService is a service for creating a Movie

func (CreateMovieService) Create

Create is used to create an Movie

type CreateOrgRequest added in v0.39.0

type CreateOrgRequest struct {
	Name        string `json:"name"`
	Description string `json:"description"`
	Kind        string `json:"kind"`
}

CreateOrgRequest is the request struct for Creating an Org

type CryptoRandomGenerator added in v0.39.0

type CryptoRandomGenerator interface {
	RandomBytes(n int) ([]byte, error)
	RandomString(n int) (string, error)
}

CryptoRandomGenerator is the interface that generates random data

type DBTX added in v0.39.0

type DBTX interface {
	Exec(context.Context, string, ...interface{}) (pgconn.CommandTag, error)
	Query(context.Context, string, ...interface{}) (pgx.Rows, error)
	QueryRow(context.Context, string, ...interface{}) pgx.Row
}

DBTX interface mirrors the interface generated by https://github.com/kyleconroy/sqlc to allow passing a Pool or a Tx

type Datastorer added in v0.39.0

type Datastorer interface {
	// Pool returns *pgxpool.Pool
	Pool() *pgxpool.Pool
	// BeginTx starts a pgx.Tx using the input context
	BeginTx(ctx context.Context) (pgx.Tx, error)
	// RollbackTx rolls back the input pgx.Tx
	RollbackTx(ctx context.Context, tx pgx.Tx, err error) error
	// CommitTx commits the Tx
	CommitTx(ctx context.Context, tx pgx.Tx) error
}

Datastorer is an interface for working with the Database

type DeleteMovieResponse

type DeleteMovieResponse struct {
	ExternalID string `json:"extl_id"`
	Deleted    bool   `json:"deleted"`
}

DeleteMovieResponse is the response struct for deleted Movies

type DeleteMovieService

type DeleteMovieService struct {
	Datastorer Datastorer
}

DeleteMovieService is a service for deleting a Movie

func (DeleteMovieService) Delete

Delete is used to delete a movie

type DeleteResponse added in v0.41.0

type DeleteResponse struct {
	ExternalID string `json:"extl_id"`
	Deleted    bool   `json:"deleted"`
}

DeleteResponse is the response struct for things that have been deleted

type FindMovieService

type FindMovieService struct {
	Datastorer Datastorer
}

FindMovieService is a service for reading Movies from the DB

func (FindMovieService) FindAllMovies

func (s FindMovieService) FindAllMovies(ctx context.Context) ([]MovieResponse, error)

FindAllMovies is used to list all movies in the db

func (FindMovieService) FindMovieByID

func (s FindMovieService) FindMovieByID(ctx context.Context, extlID string) (MovieResponse, error)

FindMovieByID is used to find an individual movie

type FindUserParams added in v0.39.0

type FindUserParams struct {
	Realm          string
	App            app.App
	Provider       auth.Provider
	Token          oauth2.Token
	RetrieveFromDB bool
}

FindUserParams is parameters for finding a User

type FullGenesisResponse added in v0.40.0

type FullGenesisResponse struct {
	GenesisResponse GenesisResponse `json:"genesis"`
	TestResponse    TestResponse    `json:"test"`
}

FullGenesisResponse contains both the Genesis response and the Test response

type GenesisResponse added in v0.40.0

type GenesisResponse struct {
	OrgResponse OrgResponse `json:"org"`
	AppResponse AppResponse `json:"app"`
}

GenesisResponse is the response struct for the genesis org and app

type GenesisService added in v0.40.0

type GenesisService struct {
	Datastorer            Datastorer
	RandomStringGenerator CryptoRandomGenerator
	EncryptionKey         *[32]byte
}

GenesisService seeds the database. It should be run only once on initial database setup.

func (GenesisService) Seed added in v0.40.0

Seed method seeds the database

type GoogleOauth2TokenConverter added in v0.39.0

type GoogleOauth2TokenConverter interface {
	Convert(ctx context.Context, realm string, token oauth2.Token) (authgateway.ProviderUserInfo, error)
}

GoogleOauth2TokenConverter converts an oauth2.Token to an authgateway.Userinfo struct

type LoggerRequest

type LoggerRequest struct {
	GlobalLogLevel string `json:"global_log_level"`
	LogErrorStack  string `json:"log_error_stack"`
}

LoggerRequest is the request struct for the app logger

type LoggerResponse

type LoggerResponse struct {
	LoggerMinimumLevel string `json:"logger_minimum_level"`
	GlobalLogLevel     string `json:"global_log_level"`
	LogErrorStack      bool   `json:"log_error_stack"`
}

LoggerResponse is the response struct for the current state of the app logger

type LoggerService

type LoggerService struct {
	Logger zerolog.Logger
}

LoggerService reads and updates the logger state

func (LoggerService) Read

func (ls LoggerService) Read() LoggerResponse

ReadLogger handles GET requests for the /logger endpoint

func (LoggerService) Update

Update handles PUT requests for the /logger endpoint and updates the logger globals

type MiddlewareService added in v0.41.0

type MiddlewareService struct {
	Datastorer                 Datastorer
	GoogleOauth2TokenConverter GoogleOauth2TokenConverter
	Authorizer                 Authorizer
	EncryptionKey              *[32]byte
}

MiddlewareService holds methods used by server middleware handlers

func (MiddlewareService) Authorize added in v0.41.0

func (s MiddlewareService) Authorize(lgr zerolog.Logger, r *http.Request, sub audit.Audit) error

Authorize determines if an app/user (as part of an Audit) is authorized for the route in the request

func (MiddlewareService) FindAppByAPIKey added in v0.41.0

func (s MiddlewareService) FindAppByAPIKey(ctx context.Context, realm, appExtlID, key string) (app.App, error)

FindAppByAPIKey finds an app given its External ID and determines if the given API key is a valid key for it. It is used as part of app authentication

func (MiddlewareService) FindUserByOauth2Token added in v0.41.0

func (s MiddlewareService) FindUserByOauth2Token(ctx context.Context, params FindUserParams) (user.User, error)

FindUserByOauth2Token retrieves a users' identity from a Provider and then retrieves the associated registered user from the datastore

type MovieResponse

type MovieResponse struct {
	ExternalID          string `json:"external_id"`
	Title               string `json:"title"`
	Rated               string `json:"rated"`
	Released            string `json:"release_date"`
	RunTime             int    `json:"run_time"`
	Director            string `json:"director"`
	Writer              string `json:"writer"`
	CreateAppExtlID     string `json:"create_app_extl_id"`
	CreateUsername      string `json:"create_username"`
	CreateUserFirstName string `json:"create_user_first_name"`
	CreateUserLastName  string `json:"create_user_last_name"`
	CreateDateTime      string `json:"create_date_time"`
	UpdateAppExtlID     string `json:"update_app_extl_id"`
	UpdateUsername      string `json:"update_username"`
	UpdateUserFirstName string `json:"update_user_first_name"`
	UpdateUserLastName  string `json:"update_user_last_name"`
	UpdateDateTime      string `json:"update_date_time"`
}

MovieResponse is the response struct for a Movie

type OrgResponse added in v0.39.0

type OrgResponse struct {
	ExternalID          string `json:"external_id"`
	Name                string `json:"name"`
	KindExternalID      string `json:"kind_description"`
	Description         string `json:"description"`
	CreateAppExtlID     string `json:"create_app_extl_id"`
	CreateUsername      string `json:"create_username"`
	CreateUserFirstName string `json:"create_user_first_name"`
	CreateUserLastName  string `json:"create_user_last_name"`
	CreateDateTime      string `json:"create_date_time"`
	UpdateAppExtlID     string `json:"update_app_extl_id"`
	UpdateUsername      string `json:"update_username"`
	UpdateUserFirstName string `json:"update_user_first_name"`
	UpdateUserLastName  string `json:"update_user_last_name"`
	UpdateDateTime      string `json:"update_date_time"`
}

OrgResponse is the response struct for an Org

type OrgService added in v0.41.0

type OrgService struct {
	Datastorer Datastorer
}

OrgService is a service for creating, reading, updating and deleting an Org

func (OrgService) Create added in v0.41.0

Create is used to create an Org

func (OrgService) Delete added in v0.41.0

func (s OrgService) Delete(ctx context.Context, extlID string) (DeleteResponse, error)

Delete is used to delete an Org

func (OrgService) FindAll added in v0.41.0

func (s OrgService) FindAll(ctx context.Context) ([]OrgResponse, error)

FindAll is used to list all orgs in the datastore

func (OrgService) FindByExternalID added in v0.41.0

func (s OrgService) FindByExternalID(ctx context.Context, extlID string) (OrgResponse, error)

FindByExternalID is used to find an Org by its External ID

func (OrgService) Update added in v0.41.0

Update is used to update an Org

type PingResponse

type PingResponse struct {
	DBUp bool `json:"db_up"`
}

PingResponse is the response struct for the PingService

type PingService

type PingService struct {
	Datastorer Datastorer
}

PingService pings the database.

func (PingService) Ping

Ping method pings the database

type RegisterUserService added in v0.40.0

type RegisterUserService struct {
	Datastorer Datastorer
}

RegisterUserService represents a service for managing new User registration.

func (RegisterUserService) SelfRegister added in v0.40.0

func (s RegisterUserService) SelfRegister(ctx context.Context, adt audit.Audit) error

SelfRegister is used to register a User with an Organization. This is "self registration" as opposed to one user registering another user.

type TestResponse added in v0.40.0

type TestResponse struct {
	OrgResponse OrgResponse `json:"org"`
	AppResponse AppResponse `json:"app"`
}

TestResponse is the response struct for the test org and app

type UpdateAppRequest added in v0.41.0

type UpdateAppRequest struct {
	ExternalID  string
	Name        string `json:"name"`
	Description string `json:"description"`
}

UpdateAppRequest is the request struct for Updating an App

type UpdateMovieRequest

type UpdateMovieRequest struct {
	ExternalID string
	Title      string `json:"title"`
	Rated      string `json:"rated"`
	Released   string `json:"release_date"`
	RunTime    int    `json:"run_time"`
	Director   string `json:"director"`
	Writer     string `json:"writer"`
}

UpdateMovieRequest is the request struct for updating a Movie

type UpdateMovieService

type UpdateMovieService struct {
	Datastorer Datastorer
}

UpdateMovieService is a service for updating a Movie

func (UpdateMovieService) Update

Update is used to update a movie

type UpdateOrgRequest added in v0.39.0

type UpdateOrgRequest struct {
	ExternalID  string
	Name        string `json:"name"`
	Description string `json:"description"`
}

UpdateOrgRequest is the request struct for Updating an Org

Jump to

Keyboard shortcuts

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