Documentation
¶
Index ¶
Constants ¶
const ( STRING_NUMBER = "number" STRING_ARRAY_OF_STRINGS = "array of strings" STRING_ARRAY_OF_SCHEMAS = "array of schemas" STRING_SCHEMA = "schema" STRING_SCHEMA_OR_ARRAY_OF_STRINGS = "schema or array of strings" STRING_PROPERTIES = "properties" STRING_DEPENDENCY = "dependency" STRING_PROPERTY = "property" STRING_CONTEXT_ROOT = "#" STRING_ROOT_SCHEMA_PROPERTY = "#" STRING_UNDEFINED = "undefined" ERROR_MESSAGE_X_IS_NOT_A_VALID_TYPE = `%s is not a valid type` ERROR_MESSAGE_X_TYPE_IS_DUPLICATED = `%s type is duplicated` ERROR_MESSAGE_X_MUST_BE_OF_TYPE_Y = `%s must be of type %s` ERROR_MESSAGE_X_MUST_BE_A_Y = `%s must be of a %s` ERROR_MESSAGE_X_MUST_BE_AN_Y = `%s must be of an %s` ERROR_MESSAGE_X_ITEMS_MUST_BE_UNIQUE = `%s items must be unique` ERROR_MESSAGE_X_ITEMS_MUST_BE_TYPE_Y = `%s items must be %s` ERROR_MESSAGE_NEW_SCHEMA_DOCUMENT_INVALID_ARGUMENT = `Invalid argument, must be a JSON string, a JSON reference string or a map[string]interface{}` ERROR_MESSAGE_INTERNAL = `internal error %s` ERROR_MESSAGE_GET_HTTP_BAD_STATUS = `Could not read schema from HTTP, response status is %d` ERROR_MESSAGE_INVALID_REGEX_PATTERN = `Invalid regex pattern '%s'` ERROR_MESSAGE_X_MUST_BE_VALID_REGEX = `%s must be a valid regex` ERROR_MESSAGE_X_MUST_BE_GREATER_OR_TO_0 = `%s must be greater than or equal to 0` ERROR_MESSAGE_X_CANNOT_BE_GREATER_THAN_Y = `%s cannot be greater than %s` ERROR_MESSAGE_X_MUST_BE_STRICTLY_GREATER_THAN_0 = `%s must be strictly greater than 0` ERROR_MESSAGE_X_CANNOT_BE_USED_WITHOUT_Y = `%s cannot be used without %s` ERROR_MESSAGE_REFERENCE_X_MUST_BE_CANONICAL = `Reference %s must be canonical` )
const ( KEY_SCHEMA = "$subSchema" KEY_ID = "$id" KEY_REF = "$ref" KEY_TITLE = "title" KEY_DESCRIPTION = "description" KEY_TYPE = "type" KEY_ITEMS = "items" KEY_ADDITIONAL_ITEMS = "additionalItems" KEY_PROPERTIES = "properties" KEY_PATTERN_PROPERTIES = "patternProperties" KEY_ADDITIONAL_PROPERTIES = "additionalProperties" KEY_DEFINITIONS = "definitions" KEY_MULTIPLE_OF = "multipleOf" KEY_MINIMUM = "minimum" KEY_MAXIMUM = "maximum" KEY_EXCLUSIVE_MINIMUM = "exclusiveMinimum" KEY_EXCLUSIVE_MAXIMUM = "exclusiveMaximum" KEY_MIN_LENGTH = "minLength" KEY_MAX_LENGTH = "maxLength" KEY_PATTERN = "pattern" KEY_MIN_PROPERTIES = "minProperties" KEY_MAX_PROPERTIES = "maxProperties" KEY_DEPENDENCIES = "dependencies" KEY_REQUIRED = "required" KEY_MIN_ITEMS = "minItems" KEY_MAX_ITEMS = "maxItems" KEY_UNIQUE_ITEMS = "uniqueItems" KEY_ENUM = "enum" KEY_ONE_OF = "oneOf" KEY_ANY_OF = "anyOf" KEY_ALL_OF = "allOf" KEY_NOT = "not" )
const ( TYPE_ARRAY = `array` TYPE_BOOLEAN = `boolean` TYPE_INTEGER = `integer` TYPE_NUMBER = `number` TYPE_NULL = `null` TYPE_OBJECT = `object` TYPE_STRING = `string` )
Variables ¶
var JSON_TYPES []string
var ResultErrorsMarshalerFunc = func(rerrs ResultErrors) ([]byte, error) { return json.Marshal(rerrs.Map()) }
ResultErrorsMarshalerFunc is the function used when json.Marshal is called on ResultErrors. It's been set as package variable to allow importing packages to alter the default behavior when marshaling ResultErrors.
var SCHEMA_TYPES []string
Functions ¶
func NewGoLoader ¶
func NewGoLoader(source interface{}) *jsonGoLoader
func NewReferenceLoader ¶
func NewReferenceLoader(source string) *jsonReferenceLoader
func NewStringLoader ¶
func NewStringLoader(source string) *jsonStringLoader
Types ¶
type JSONContext ¶
type JSONContext struct {
// contains filtered or unexported fields
}
JSONContext implements a persistent linked-list of strings
func NewJSONContext ¶
func NewJSONContext(head string, tail *JSONContext) *JSONContext
func (*JSONContext) String ¶
func (c *JSONContext) String() string
String displays the context in reverse. This plays well with the data structure's persistent nature with Cons and a json document's tree structure.
type JSONLoader ¶
type JSONLoader interface {
// contains filtered or unexported methods
}
type Result ¶
type Result struct {
// contains filtered or unexported fields
}
func Validate ¶
func Validate(ls JSONLoader, ld JSONLoader) (*Result, error)
func (*Result) AddError ¶
func (v *Result) AddError( context *JSONContext, reason string, requirement interface{}, value interface{}, )
AddError adds a context JSON schema error to Result using the failing schema attribute as the reason
func (*Result) Errors ¶
func (v *Result) Errors() ResultErrors
type ResultError ¶
type ResultError struct {
Context *JSONContext // Tree like notation of the part that failed the validation. ex (root).a.b ...
Value interface{} // Value given by the JSON file that is the source of the error
Reason string //JSON schema keyword responsible for this error
Requirement interface{} // the schema attribute's requirement that caused this error
}
func (ResultError) String ¶
func (v ResultError) String() string
type ResultErrors ¶
type ResultErrors []ResultError
ResultErrors is a collection of JSON schema errors
func (ResultErrors) Error ¶
func (rerrs ResultErrors) Error() string
func (ResultErrors) Map ¶
func (rerrs ResultErrors) Map() map[string][]interface{}
Map parses ResultErrors into a map object for simpler error parsing/handling
func (ResultErrors) MarshalJSON ¶
func (rerrs ResultErrors) MarshalJSON() ([]byte, error)
type Schema ¶
type Schema struct {
// contains filtered or unexported fields
}
func NewSchema ¶
func NewSchema(l JSONLoader) (*Schema, error)
func (*Schema) SetRootSchemaName ¶
type Unmarshaler ¶
Unmarshaler is the interface implemented by objects that can unmarshal a JSON description of themselves while adhering to an internal JSON schema.