assets

package
v0.27.4 Latest Latest
Warning

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

Go to latest
Published: Feb 11, 2019 License: AGPL-3.0 Imports: 4 Imported by: 30

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GroupReferenceValidation added in v0.15.1

func GroupReferenceValidation(sl validator.StructLevel)

GroupReferenceValidation validates that the given group reference is either a concrete reference or a name matcher

func LabelReferenceValidation added in v0.15.1

func LabelReferenceValidation(sl validator.StructLevel)

LabelReferenceValidation validates that the given label reference is either a concrete reference or a name matcher

Types

type AssetSource added in v0.15.0

type AssetSource interface {
	Channels() ([]Channel, error)
	Fields() ([]Field, error)
	Flow(FlowUUID) (Flow, error)
	Groups() ([]Group, error)
	Labels() ([]Label, error)
	Locations() ([]LocationHierarchy, error)
	Resthooks() ([]Resthook, error)
}

AssetSource is a source of assets

type Channel added in v0.15.0

type Channel interface {
	UUID() ChannelUUID
	Name() string
	Address() string
	Schemes() []string
	Roles() []ChannelRole
	Parent() *ChannelReference
	Country() string
	MatchPrefixes() []string
}

Channel is something that can send/receive messages.

{
  "uuid": "14782905-81a6-4910-bc9f-93ad287b23c3",
  "name": "My Android",
  "address": "+593979011111",
  "schemes": ["tel"],
  "roles": ["send", "receive"],
  "country": "EC"
}

@asset channel

type ChannelReference added in v0.15.1

type ChannelReference struct {
	UUID ChannelUUID `json:"uuid" validate:"required,uuid"`
	Name string      `json:"name"`
}

ChannelReference is used to reference a channel

func NewChannelReference added in v0.15.1

func NewChannelReference(uuid ChannelUUID, name string) *ChannelReference

NewChannelReference creates a new channel reference with the given UUID and name

func (*ChannelReference) Identity added in v0.26.0

func (r *ChannelReference) Identity() string

Identity returns the unique identity of the asset

func (*ChannelReference) String added in v0.26.0

func (r *ChannelReference) String() string

func (*ChannelReference) Type added in v0.26.0

func (r *ChannelReference) Type() string

Type returns the name of the asset type

type ChannelRole added in v0.15.0

type ChannelRole string

ChannelRole is a role that a channel can perform

const (
	ChannelRoleSend    ChannelRole = "send"
	ChannelRoleReceive ChannelRole = "receive"
	ChannelRoleCall    ChannelRole = "call"
	ChannelRoleAnswer  ChannelRole = "answer"
	ChannelRoleUSSD    ChannelRole = "ussd"
)

different roles that channels can perform

type ChannelUUID added in v0.15.0

type ChannelUUID utils.UUID

ChannelUUID is the UUID of a channel

type Field added in v0.15.0

type Field interface {
	Key() string
	Name() string
	Type() FieldType
}

Field is a custom contact property.

{
  "key": "gender",
  "name": "Gender",
  "type": "text"
}

@asset field

type FieldReference added in v0.15.1

type FieldReference struct {
	Key  string `json:"key" validate:"required"`
	Name string `json:"name"`
}

FieldReference is a reference to field

func NewFieldReference added in v0.15.1

func NewFieldReference(key string, name string) *FieldReference

NewFieldReference creates a new field reference with the given key and label

func (*FieldReference) Identity added in v0.26.0

func (r *FieldReference) Identity() string

Identity returns the unique identity of the asset

func (*FieldReference) String added in v0.26.0

func (r *FieldReference) String() string

func (*FieldReference) Type added in v0.26.0

func (r *FieldReference) Type() string

Type returns the name of the asset type

type FieldType added in v0.15.0

type FieldType string

FieldType is the data type of values for each field

const (
	FieldTypeText     FieldType = "text"
	FieldTypeNumber   FieldType = "number"
	FieldTypeDatetime FieldType = "datetime"
	FieldTypeWard     FieldType = "ward"
	FieldTypeDistrict FieldType = "district"
	FieldTypeState    FieldType = "state"
)

field value types

type Flow added in v0.15.0

type Flow interface {
	UUID() FlowUUID
	Name() string
	Definition() json.RawMessage
}

Flow is graph of nodes with actions and routers.

{
  "uuid": "14782905-81a6-4910-bc9f-93ad287b23c3",
  "name": "Registration",
  "definition": {
    "nodes": []
  }
}

@asset flow

type FlowReference added in v0.15.1

type FlowReference struct {
	UUID FlowUUID `json:"uuid" validate:"required,uuid4"`
	Name string   `json:"name"`
}

FlowReference is used to reference a flow from another flow

func NewFlowReference added in v0.15.1

func NewFlowReference(uuid FlowUUID, name string) *FlowReference

NewFlowReference creates a new flow reference with the given UUID and name

func (*FlowReference) Identity added in v0.26.0

func (r *FlowReference) Identity() string

Identity returns the unique identity of the asset

func (*FlowReference) String added in v0.26.0

func (r *FlowReference) String() string

func (*FlowReference) Type added in v0.26.0

func (r *FlowReference) Type() string

Type returns the name of the asset type

type FlowUUID added in v0.15.0

type FlowUUID utils.UUID

FlowUUID is the UUID of a flow

type Group added in v0.15.0

type Group interface {
	UUID() GroupUUID
	Name() string
	Query() string
}

Group is a set of contacts which can be static or dynamic (i.e. based on a query).

{
  "uuid": "14782905-81a6-4910-bc9f-93ad287b23c3",
  "name": "Youth",
  "query": "age <= 18"
}

@asset group

type GroupReference added in v0.15.1

type GroupReference struct {
	UUID      GroupUUID `json:"uuid,omitempty" validate:"omitempty,uuid4"`
	Name      string    `json:"name,omitempty"`
	NameMatch string    `json:"name_match,omitempty"`
}

GroupReference is used to reference a group

func NewGroupReference added in v0.15.1

func NewGroupReference(uuid GroupUUID, name string) *GroupReference

NewGroupReference creates a new group reference with the given UUID and name

func NewVariableGroupReference added in v0.15.1

func NewVariableGroupReference(nameMatch string) *GroupReference

NewVariableGroupReference creates a new group reference from the given templatized name match

func (*GroupReference) Identity added in v0.26.0

func (r *GroupReference) Identity() string

Identity returns the unique identity of the asset

func (*GroupReference) String added in v0.26.0

func (r *GroupReference) String() string

func (*GroupReference) Type added in v0.26.0

func (r *GroupReference) Type() string

Type returns the name of the asset type

type GroupUUID added in v0.15.0

type GroupUUID utils.UUID

GroupUUID is the UUID of a group

type Label added in v0.15.0

type Label interface {
	UUID() LabelUUID
	Name() string
}

Label is an organizational tag that can be applied to a message.

{
  "uuid": "14782905-81a6-4910-bc9f-93ad287b23c3",
  "name": "Spam"
}

@asset label

type LabelReference added in v0.15.1

type LabelReference struct {
	UUID      LabelUUID `json:"uuid,omitempty" validate:"omitempty,uuid4"`
	Name      string    `json:"name,omitempty"`
	NameMatch string    `json:"name_match,omitempty"`
}

LabelReference is used to reference a label

func NewLabelReference added in v0.15.1

func NewLabelReference(uuid LabelUUID, name string) *LabelReference

NewLabelReference creates a new label reference with the given UUID and name

func NewVariableLabelReference added in v0.15.1

func NewVariableLabelReference(nameMatch string) *LabelReference

NewVariableLabelReference creates a new label reference from the given templatized name match

func (*LabelReference) Identity added in v0.26.0

func (r *LabelReference) Identity() string

Identity returns the unique identity of the asset

func (*LabelReference) String added in v0.26.0

func (r *LabelReference) String() string

func (*LabelReference) Type added in v0.26.0

func (r *LabelReference) Type() string

Type returns the name of the asset type

type LabelUUID added in v0.15.0

type LabelUUID utils.UUID

LabelUUID is the UUID of a label

type LocationHierarchy added in v0.15.0

type LocationHierarchy interface {
	FindByPath(path string) *utils.Location
	FindByName(name string, level utils.LocationLevel, parent *utils.Location) []*utils.Location
}

LocationHierarchy is a searchable hierachy of locations.

{
  "name": "Rwanda",
  "aliases": ["Ruanda"],
  "children": [
    {
      "name": "Kigali City",
      "aliases": ["Kigali", "Kigari"],
      "children": [
        {
          "name": "Gasabo",
          "children": [
            {
              "id": "575743222",
              "name": "Gisozi"
            },
            {
              "id": "457378732",
              "name": "Ndera"
            }
          ]
        },
        {
          "name": "Nyarugenge",
          "children": []
        }
      ]
    },
    {
      "name": "Eastern Province"
    }
  ]
}

@asset location

type MissingCallback added in v0.26.0

type MissingCallback func(Reference)

MissingCallback is callback to be invoked when an asset is missing

var IgnoreMissing MissingCallback = func(Reference) {}

IgnoreMissing does nothing if an asset is reported missing

var PanicOnMissing MissingCallback = func(a Reference) { panic(fmt.Sprintf("unable to find asset %s", a.String())) }

PanicOnMissing panics if an asset is reported missing

type Reference added in v0.26.0

type Reference interface {
	fmt.Stringer

	Type() string
	Identity() string
}

Reference is interface for all reference types

type Resthook added in v0.15.0

type Resthook interface {
	Slug() string
	Subscribers() []string
}

Resthook is a set of URLs which are subscribed to the named event.

{
  "slug": "new-registration",
  "subscribers": [
    "http://example.com/record.php?@contact.uuid"
  ]
}

@asset resthook

Directories

Path Synopsis
Package static is an implementation of AssetSource which loads assets from a static JSON file.
Package static is an implementation of AssetSource which loads assets from a static JSON file.

Jump to

Keyboard shortcuts

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