schema

package
v0.0.0-...-3f89d33 Latest Latest
Warning

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

Go to latest
Published: Nov 7, 2015 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
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 ClearManager

func ClearManager()

ClearManager clears manager

func FormatParentID

func FormatParentID(parent string) string

FormatParentID ...

func PolicyValidate

func PolicyValidate(action, path string, auth Authorization, policies []*Policy) (*Policy, *Role)

PolicyValidate validates api request using policy validation

Types

type Action

type Action struct {
	ID          string
	Method      string
	Path        string
	InputSchema map[string]interface{}
}

Action struct

func NewAction

func NewAction(id, method, path string, inputSchema map[string]interface{}) Action

NewAction create Action

func NewActionFromObject

func NewActionFromObject(id string, rawData interface{}) (Action, error)

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

type Catalog struct {
	Name      string
	Type      string
	Endpoints []*Endpoint
}

Catalog represents service catalog info

func NewCatalog

func NewCatalog(name, catalogType string, endPoints []*Endpoint) *Catalog

NewCatalog initializes Catalog

type Endpoint

type Endpoint struct {
	URL       string
	Region    string
	Interface string
}

Endpoint represents Endpoint information

func NewEndpoint

func NewEndpoint(url, region, iface string) *Endpoint

NewEndpoint initializes Endpoint

type Extension

type Extension struct {
	ID, CodeType, URL string
	Code              string
	Path              *regexp.Regexp
}

Extension is a small plugin for gohan

func NewExtension

func NewExtension(raw interface{}) (*Extension, error)

NewExtension returns new extension from object

func (*Extension) Match

func (e *Extension) Match(path string) bool

Match checks if this path matches for extension

type Link struct {
	Href string `json:"href"`
	Rel  string `json:"rel"`
}

Link ...

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 GetManager

func GetManager() *Manager

GetManager get manager

func (*Manager) ClearExtensions

func (manager *Manager) ClearExtensions()

ClearExtensions clears extensions

func (*Manager) LoadExtensions

func (manager *Manager) LoadExtensions(extensions []*Resource) error

LoadExtensions register extension by db object

func (*Manager) LoadNamespaces

func (manager *Manager) LoadNamespaces(namespaces []*Resource) error

LoadNamespaces register namespaces by db object

func (*Manager) LoadPolicies

func (manager *Manager) LoadPolicies(policies []*Resource) error

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

func (manager *Manager) LoadSchemaFromFile(filePath string) error

LoadSchemaFromFile loads schema from json file

func (*Manager) LoadSchemasFromFiles

func (manager *Manager) LoadSchemasFromFiles(filePaths ...string) error

LoadSchemasFromFiles calls LoadSchemaFromFile for each of provided filePaths

func (*Manager) Namespace

func (manager *Manager) Namespace(name string) (namespace *Namespace, ok bool)

Namespace gets namespace from manager

func (*Manager) Namespaces

func (manager *Manager) Namespaces() map[string]*Namespace

Namespaces gets namespaces from manager

func (*Manager) OrderedSchemas

func (manager *Manager) OrderedSchemas() []*Schema

OrderedSchemas gets schema from manager ordered

func (*Manager) Policies

func (manager *Manager) Policies() []*Policy

Policies gets policies from manager

func (*Manager) PolicyValidate

func (manager *Manager) PolicyValidate(action, path string, auth Authorization) (*Policy, *Role)

PolicyValidate API request using policy statements

func (*Manager) RegisterNamespace

func (manager *Manager) RegisterNamespace(namespace *Namespace) error

RegisterNamespace registers a new namespace for schema manager

func (*Manager) RegisterSchema

func (manager *Manager) RegisterSchema(schema *Schema) error

RegisterSchema registers new schema for schema manager

func (*Manager) Schema

func (manager *Manager) Schema(id string) (schema *Schema, ok bool)

Schema gets schema from manager

func (*Manager) Schemas

func (manager *Manager) Schemas() Map

Schemas gets schema from manager

func (*Manager) String

func (manager *Manager) String() string

func (*Manager) UnRegisterSchema

func (manager *Manager) UnRegisterSchema(schema *Schema) error

UnRegisterSchema unregister schema

func (*Manager) ValidateSchema

func (manager *Manager) ValidateSchema(schemaPath, filePath string) error

ValidateSchema validates json schema

type Map

type Map map[string]*Schema

Map is a map of schema

type Namespace

type Namespace struct {
	ID              string
	Parent          string
	ParentNamespace *Namespace
	Prefix          string
}

Namespace describes a group of schemas that form a common endpoint

func NewNamespace

func NewNamespace(raw interface{}) (*Namespace, error)

NewNamespace is a constructor for a namespace

func (*Namespace) GetFullPrefix

func (namespace *Namespace) GetFullPrefix() string

GetFullPrefix returns a full prefix of a namespace

func (*Namespace) IsTopLevel

func (namespace *Namespace) IsTopLevel() bool

IsTopLevel checks whether namespace is a top-level namespace

func (*Namespace) SetParentNamespace

func (namespace *Namespace) SetParentNamespace(parent *Namespace)

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 NewPolicy

func NewPolicy(raw interface{}) (*Policy, error)

NewPolicy returns new policy from object

func (*Policy) AddTenantToFilter

func (p *Policy) AddTenantToFilter(action string, tenant Tenant)

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) Filter

func (p *Policy) Filter(data map[string]interface{}) map[string]interface{}

Filter ...

func (*Policy) GetTenantFilter

func (p *Policy) GetTenantFilter(action string, tenant Tenant) []Tenant

GetTenantFilter returns tenants filter for the action performed by the tenant

func (*Policy) GetTenantIDFilter

func (p *Policy) GetTenantIDFilter(action string, tenantID string) []string

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

func (*Policy) RequireOwner

func (p *Policy) RequireOwner() bool

RequireOwner ...

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

func NewProperty

func NewProperty(id, title, description, typeID, format, relation, relationProperty, sqlType string, unique, nullable bool, properties map[string]interface{}, defaultValue interface{}) Property

NewProperty is a constructor for Property type

func NewPropertyFromObj

func NewPropertyFromObj(id string, rawTypeData interface{}, required bool) (*Property, error)

NewPropertyFromObj make Property from obj

type PropertyMap

type PropertyMap map[string]Property

PropertyMap is a map of 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

func NewResource(schema *Schema, properties map[string]interface{}) (*Resource, error)

NewResource is a constructor for a resource

func (*Resource) Data

func (resource *Resource) Data() map[string]interface{}

Data gets data from resource

func (*Resource) Get

func (resource *Resource) Get(key string) interface{}

Get gets property from resource

func (*Resource) ID

func (resource *Resource) ID() string

ID gets id from resource

func (*Resource) JSONString

func (resource *Resource) JSONString() (string, error)

JSONString returns json string of the resource

func (*Resource) ParentID

func (resource *Resource) ParentID() string

ParentID get parent id of the resource

func (*Resource) Path

func (resource *Resource) Path() string

Path generate path for this resource

func (*Resource) PopulateDefaults

func (resource *Resource) PopulateDefaults() error

PopulateDefaults Populates not provided data with defaults

func (*Resource) Schema

func (resource *Resource) Schema() *Schema

Schema gets schema from resource

func (*Resource) SetParentID

func (resource *Resource) SetParentID(id string)

SetParentID set parent id of the resource

func (*Resource) String

func (resource *Resource) String() string

String return string form representation

func (*Resource) Update

func (resource *Resource) Update(updateData map[string]interface{}) error

Update resource data

func (*Resource) Values

func (resource *Resource) Values() []interface{}

Values returns list of values

type ResourcePolicy

type ResourcePolicy struct {
	Properties []interface{}
	Path       *regexp.Regexp
}

ResourcePolicy describes targe resources

type Role

type Role struct {
	Name string
}

Role describes user role

func (*Role) Match

func (r *Role) Match(principal string) bool

Match checks if this role is for this principal

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 NewSchema

func NewSchema(id, plural, title, description, singular string) *Schema

NewSchema is a constructor for a schema

func NewSchemaFromObj

func NewSchemaFromObj(rawTypeData interface{}) (*Schema, error)

NewSchemaFromObj is a constructor for a schema by obj

func (*Schema) GetActionURL

func (schema *Schema) GetActionURL(path string) string

GetActionURL returns a URL for access to resources actions

func (*Schema) GetDbTableName

func (schema *Schema) GetDbTableName() string

GetDbTableName returns a name of DB table used for storing schema instances

func (*Schema) GetParentURL

func (schema *Schema) GetParentURL() string

GetParentURL returns Parent URL

func (*Schema) GetPluralURL

func (schema *Schema) GetPluralURL() string

GetPluralURL returns a URL for access to all schema objects

func (*Schema) GetPluralURLWithParents

func (schema *Schema) GetPluralURLWithParents() string

GetPluralURLWithParents returns a URL for access to all schema objects

func (*Schema) GetPropertyByID

func (schema *Schema) GetPropertyByID(id string) (*Property, error)

GetPropertyByID get a property object using ID

func (*Schema) GetSingleURL

func (schema *Schema) GetSingleURL() string

GetSingleURL returns a URL for access to a single schema object

func (*Schema) GetSingleURLWithParents

func (schema *Schema) GetSingleURLWithParents() string

GetSingleURLWithParents returns a URL for access to a single schema object

func (*Schema) ParentID

func (schema *Schema) ParentID() string

ParentID returns parent property ID

func (*Schema) ParentSchemaPropertyID

func (schema *Schema) ParentSchemaPropertyID() string

ParentSchemaPropertyID get property id for parent relation

func (*Schema) SetNamespace

func (schema *Schema) SetNamespace(namespace *Namespace)

SetNamespace sets namespace

func (*Schema) SetParentSchema

func (schema *Schema) SetParentSchema(parentSchema *Schema)

SetParentSchema sets parent schema

func (*Schema) StateVersioning

func (schema *Schema) StateVersioning() bool

StateVersioning whether resources created from this schema should track state and config versions

func (*Schema) Validate

func (schema *Schema) Validate(jsonSchema interface{}, object interface{}) error

Validate validates json object using jsoncschema

func (*Schema) ValidateOnCreate

func (schema *Schema) ValidateOnCreate(object interface{}) error

ValidateOnCreate validates json object using jsoncschema on object creation

func (*Schema) ValidateOnUpdate

func (schema *Schema) ValidateOnUpdate(object interface{}) error

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

type Tags

type Tags map[string]string // Tags for each resource

Tags are additional metadata for resources

type Tenant

type Tenant struct {
	ID   *regexp.Regexp
	Name *regexp.Regexp
}

Tenant ...

func (Tenant) String

func (t Tenant) String() string

type Version

type Version struct {
	Status string `json:"status"`
	ID     string `json:"id"`
	Links  []Link `json:"links"`
}

Version ...

Jump to

Keyboard shortcuts

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