1.0.326 • Published 7 years ago

@schul-cloud/schul-cloud-resources-api-v1 v1.0.326

Weekly downloads
-
License
AGPL-1.0
Repository
github
Last release
7 years ago

schul-cloud-resources-api-v1

This module contains the schemas and examples of the api definitions.

You can install this package by running

npm install @schul-cloud/schul-cloud-resources-api-v1

Usage

You can use the module to validate resource attributes:

var api = require("@schul-cloud/schul-cloud-resources-api-v1");
var resource = {
  "title": "Test",
  "url": "http://example.org"
}
if (api.schemas.resource.isValid(resource)) {
  console.log("The resource is valid.")
} else {
  api.resource.validate(resource) // create an error message
}

There are valid and invalidexamples which you can use:

var api = require("@schul-cloud/schul-cloud-resources-api-v1");
console.log("Valid examples:", api.schemas.resource.getValidExamples())
console.log("Invalid examples:", api.schemas.resource.getValidExamples())

If you have a look at the schemas folder, you can find all schemas you can use:

var api = require("@schul-cloud/schul-cloud-resources-api-v1");
api.schemas.resource
api.schemas.error
api.schemas.license
api.schemas.search_response

You can list all of them with

api.getSchemaNames()

Each schema in the api.schemas has certain attributes and functions:

  • schema.name is the name of the schema.
  • schema.getValidExamples() return a list of valid examples for the schema.
  • schema.getInvalidExamples() return a list of invalid examples for the schema.
  • schema.isValid(object) validates the object against the schema and returns true if the schema is valid for this object.
  • schema.getValidationErrors(object) return a list of ValidationErrors which explain the problems in the object if it should be valid for the schema.
  • schema.getSchema() return the raw jsonschema.
  • schema.getId() return the identifier of the raw schema.

This module uses ajv. Thus, you can gat the collected schemas also as ajv object:

api.ajv

Example: Feathers Validation Hook

If you want to validate a resource which has been posted to the Resource API, you can use this code in feathers:

const commonHooks = require('feathers-hooks-common');
const api = require("@schul-cloud/schul-cloud-resources-api-v1");

module.exports = function (options = {}) { // eslint-disable-line no-unused-vars
  var schema = api.schemas.resource.getSchema();
  return commonHooks.validateSchema(schema, api.ajv);
};

Then, you add the hook to the feathers hook by calling it.

Tests & Development

To run the tests, run the following commands for installation:

npm install -g mocha
npm install chai

You can edit this file on GitHub.

api