Documentation ¶
Index ¶
- Constants
- func ClearManager()
- func FormatParentID(parent string) string
- func PolicyValidate(action, path string, auth Authorization, policies []*Policy) (*Policy, *Role)
- type Action
- type Authorization
- type BaseAuthorization
- type Catalog
- type Endpoint
- type Extension
- type Link
- type Manager
- func (manager *Manager) ClearExtensions()
- func (manager *Manager) LoadExtensions(extensions []*Resource) error
- func (manager *Manager) LoadNamespaces(namespaces []*Resource) error
- func (manager *Manager) LoadPolicies(policies []*Resource) error
- func (manager *Manager) LoadResource(schemaID string, dataMap map[string]interface{}) (*Resource, error)
- func (manager *Manager) LoadResourceFromJSONString(schemaID string, jsonData string) (*Resource, error)
- func (manager *Manager) LoadSchemaFromFile(filePath string) error
- func (manager *Manager) LoadSchemasFromFiles(filePaths ...string) error
- func (manager *Manager) Namespace(name string) (namespace *Namespace, ok bool)
- func (manager *Manager) Namespaces() map[string]*Namespace
- func (manager *Manager) OrderedSchemas() []*Schema
- func (manager *Manager) Policies() []*Policy
- func (manager *Manager) PolicyValidate(action, path string, auth Authorization) (*Policy, *Role)
- func (manager *Manager) RegisterNamespace(namespace *Namespace) error
- func (manager *Manager) RegisterSchema(schema *Schema) error
- func (manager *Manager) Schema(id string) (schema *Schema, ok bool)
- func (manager *Manager) Schemas() Map
- func (manager *Manager) String() string
- func (manager *Manager) UnRegisterSchema(schema *Schema) error
- func (manager *Manager) ValidateSchema(schemaPath, filePath string) error
- type Map
- type Namespace
- type NamespaceResource
- type Policy
- func (p *Policy) AddTenantToFilter(action string, tenant Tenant)
- func (p *Policy) Check(action string, authorization Authorization, data map[string]interface{}) error
- func (p *Policy) Filter(data map[string]interface{}) map[string]interface{}
- func (p *Policy) GetTenantFilter(action string, tenant Tenant) []Tenant
- func (p *Policy) GetTenantIDFilter(action string, tenantID string) []string
- func (p *Policy) MetaFilter(properties map[string]interface{}, propertiesOrder, required []interface{}) (map[string]interface{}, []interface{}, []interface{})
- func (p *Policy) RequireOwner() bool
- type Property
- type PropertyMap
- type Resource
- func (resource *Resource) Data() map[string]interface{}
- func (resource *Resource) Get(key string) interface{}
- func (resource *Resource) ID() string
- func (resource *Resource) JSONString() (string, error)
- func (resource *Resource) ParentID() string
- func (resource *Resource) Path() string
- func (resource *Resource) PopulateDefaults() error
- func (resource *Resource) Schema() *Schema
- func (resource *Resource) SetParentID(id string)
- func (resource *Resource) String() string
- func (resource *Resource) Update(updateData map[string]interface{}) error
- func (resource *Resource) Values() []interface{}
- type ResourcePolicy
- type Role
- type Schema
- func (schema *Schema) GetActionURL(path string) string
- func (schema *Schema) GetDbTableName() string
- func (schema *Schema) GetParentURL() string
- func (schema *Schema) GetPluralURL() string
- func (schema *Schema) GetPluralURLWithParents() string
- func (schema *Schema) GetPropertyByID(id string) (*Property, error)
- func (schema *Schema) GetSingleURL() string
- func (schema *Schema) GetSingleURLWithParents() string
- func (schema *Schema) ParentID() string
- func (schema *Schema) ParentSchemaPropertyID() string
- func (schema *Schema) SetNamespace(namespace *Namespace)
- func (schema *Schema) SetParentSchema(parentSchema *Schema)
- func (schema *Schema) StateVersioning() bool
- func (schema *Schema) Validate(jsonSchema interface{}, object interface{}) error
- func (schema *Schema) ValidateOnCreate(object interface{}) error
- func (schema *Schema) ValidateOnUpdate(object interface{}) error
- type Schemas
- type Tags
- type Tenant
- type Version
Constants ¶
const ( // ActionGlob allows to perform all actions ActionGlob = "*" // ActionCreate allows to create a resource ActionCreate = "create" // ActionRead allows to list resources and show details ActionRead = "read" // ActionUpdate allows to update a resource ActionUpdate = "update" // ActionDelete allows to delete a resource ActionDelete = "delete" )
Variables ¶
This section is empty.
Functions ¶
func PolicyValidate ¶
func PolicyValidate(action, path string, auth Authorization, policies []*Policy) (*Policy, *Role)
PolicyValidate validates api request using policy validation
Types ¶
type Action ¶
Action struct
func NewActionFromObject ¶
NewActionFromObject create Action object from json
type Authorization ¶
type Authorization interface { TenantID() string TenantName() string AuthToken() string Roles() []*Role Catalog() []*Catalog }
Authorization interface
func NewAuthorization ¶
func NewAuthorization(tenantID, tenantName, authToken string, roleIDs []string, catalog []*Catalog) Authorization
NewAuthorization is a constructor for auth info
type BaseAuthorization ¶
type BaseAuthorization struct {
// contains filtered or unexported fields
}
BaseAuthorization is base struct for Authorization
func (*BaseAuthorization) AuthToken ¶
func (auth *BaseAuthorization) AuthToken() string
AuthToken returns X_AUTH_TOKEN
func (*BaseAuthorization) Catalog ¶
func (auth *BaseAuthorization) Catalog() []*Catalog
Catalog returns service catalog
func (*BaseAuthorization) Roles ¶
func (auth *BaseAuthorization) Roles() []*Role
Roles returns authorized roles
func (*BaseAuthorization) TenantID ¶
func (auth *BaseAuthorization) TenantID() string
TenantID returns authorized tenant
func (*BaseAuthorization) TenantName ¶
func (auth *BaseAuthorization) TenantName() string
TenantName returns authorized tenant name
type Catalog ¶
Catalog represents service catalog info
func NewCatalog ¶
NewCatalog initializes Catalog
type Endpoint ¶
Endpoint represents Endpoint information
func NewEndpoint ¶
NewEndpoint initializes Endpoint
type Extension ¶
Extension is a small plugin for gohan
func NewExtension ¶
NewExtension returns new extension from object
type Manager ¶
type Manager struct { Extensions []*Extension // contains filtered or unexported fields }
Manager manages handling of schemas Manager manages routing with external data and gohan resource representation This is a singleton class
func (*Manager) ClearExtensions ¶
func (manager *Manager) ClearExtensions()
ClearExtensions clears extensions
func (*Manager) LoadExtensions ¶
LoadExtensions register extension by db object
func (*Manager) LoadNamespaces ¶
LoadNamespaces register namespaces by db object
func (*Manager) LoadPolicies ¶
LoadPolicies register policy by db object
func (*Manager) LoadResource ¶
func (manager *Manager) LoadResource(schemaID string, dataMap map[string]interface{}) (*Resource, error)
LoadResource makes resource from datamap
func (*Manager) LoadResourceFromJSONString ¶
func (manager *Manager) LoadResourceFromJSONString(schemaID string, jsonData string) (*Resource, error)
LoadResourceFromJSONString makes resource from jsonString
func (*Manager) LoadSchemaFromFile ¶
LoadSchemaFromFile loads schema from json file
func (*Manager) LoadSchemasFromFiles ¶
LoadSchemasFromFiles calls LoadSchemaFromFile for each of provided filePaths
func (*Manager) Namespaces ¶
Namespaces gets namespaces from manager
func (*Manager) OrderedSchemas ¶
OrderedSchemas gets schema from manager ordered
func (*Manager) PolicyValidate ¶
func (manager *Manager) PolicyValidate(action, path string, auth Authorization) (*Policy, *Role)
PolicyValidate API request using policy statements
func (*Manager) RegisterNamespace ¶
RegisterNamespace registers a new namespace for schema manager
func (*Manager) RegisterSchema ¶
RegisterSchema registers new schema for schema manager
func (*Manager) UnRegisterSchema ¶
UnRegisterSchema unregister schema
func (*Manager) ValidateSchema ¶
ValidateSchema validates json schema
type Namespace ¶
Namespace describes a group of schemas that form a common endpoint
func NewNamespace ¶
NewNamespace is a constructor for a namespace
func (*Namespace) GetFullPrefix ¶
GetFullPrefix returns a full prefix of a namespace
func (*Namespace) IsTopLevel ¶
IsTopLevel checks whether namespace is a top-level namespace
func (*Namespace) SetParentNamespace ¶
SetParentNamespace sets a parent of a namespace to the provided one
type NamespaceResource ¶
type NamespaceResource struct { Links []Link `json:"links"` Name string `json:"name"` Collection string `json:"collection"` }
NamespaceResource ...
type Policy ¶
type Policy struct {
ID, Description, Principal, Action, Effect string
Condition []interface{}
Resource *ResourcePolicy
RawData interface{}
TenantID *regexp.Regexp
TenantName *regexp.Regexp
// contains filtered or unexported fields
}
Policy describes policy configuraion for APIs
func NewEmptyPolicy ¶
func NewEmptyPolicy() *Policy
NewEmptyPolicy Return Empty policy which match everything
func (*Policy) AddTenantToFilter ¶
AddTenantToFilter adds tenant to filter for given action
func (*Policy) Check ¶
func (p *Policy) Check(action string, authorization Authorization, data map[string]interface{}) error
Check ...
func (*Policy) GetTenantFilter ¶
GetTenantFilter returns tenants filter for the action performed by the tenant
func (*Policy) GetTenantIDFilter ¶
GetTenantIDFilter returns tenants filter for the action performed by the tenant
func (*Policy) MetaFilter ¶
func (p *Policy) MetaFilter(properties map[string]interface{}, propertiesOrder, required []interface{}) (map[string]interface{}, []interface{}, []interface{})
MetaFilter filters properties in the schema itself
type Property ¶
type Property struct {
ID, Title, Description string
Type, Format string
Properties map[string]interface{}
Relation string
RelationProperty string
Unique bool
Nullable bool
SQLType string
Default interface{}
}
Property is a definition of each Property
type Resource ¶
type Resource struct {
// contains filtered or unexported fields
}
Resource is a instance of resource
func GetSchema ¶
func GetSchema(s *Schema, authorization Authorization) (result *Resource, err error)
GetSchema returns the schema filtered and trimmed for a specific user or nil when the user shouldn't see it at all
func NewResource ¶
NewResource is a constructor for a resource
func (*Resource) JSONString ¶
JSONString returns json string of the resource
func (*Resource) PopulateDefaults ¶
PopulateDefaults Populates not provided data with defaults
func (*Resource) SetParentID ¶
SetParentID set parent id of the resource
type ResourcePolicy ¶
ResourcePolicy describes targe resources
type Schema ¶
type Schema struct {
ID, Plural, Title, Description string
ParentSchema *Schema
Parent string
NamespaceID string
Namespace *Namespace
Tags Tags
Metadata map[string]interface{}
Policy []interface{}
Prefix string
Properties []Property
Required []string
JSONSchema map[string]interface{}
JSONSchemaOnCreate map[string]interface{}
JSONSchemaOnUpdate map[string]interface{}
Actions []Action
Singular string
URL string
URLWithParents string
RawData interface{}
}
Schema type for defining data type
func NewSchemaFromObj ¶
NewSchemaFromObj is a constructor for a schema by obj
func (*Schema) GetActionURL ¶
GetActionURL returns a URL for access to resources actions
func (*Schema) GetDbTableName ¶
GetDbTableName returns a name of DB table used for storing schema instances
func (*Schema) GetParentURL ¶
GetParentURL returns Parent URL
func (*Schema) GetPluralURL ¶
GetPluralURL returns a URL for access to all schema objects
func (*Schema) GetPluralURLWithParents ¶
GetPluralURLWithParents returns a URL for access to all schema objects
func (*Schema) GetPropertyByID ¶
GetPropertyByID get a property object using ID
func (*Schema) GetSingleURL ¶
GetSingleURL returns a URL for access to a single schema object
func (*Schema) GetSingleURLWithParents ¶
GetSingleURLWithParents returns a URL for access to a single schema object
func (*Schema) ParentSchemaPropertyID ¶
ParentSchemaPropertyID get property id for parent relation
func (*Schema) SetNamespace ¶
SetNamespace sets namespace
func (*Schema) SetParentSchema ¶
SetParentSchema sets parent schema
func (*Schema) StateVersioning ¶
StateVersioning whether resources created from this schema should track state and config versions
func (*Schema) ValidateOnCreate ¶
ValidateOnCreate validates json object using jsoncschema on object creation
func (*Schema) ValidateOnUpdate ¶
ValidateOnUpdate validates json object using jsoncschema on object update
type Schemas ¶
type Schemas struct {
Schemas []*Schema
}
Schemas is a list of schema This struct is needed for json decode