New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

jsonary

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jsonary

Jsonary - use JSON Schema in your client

latest
npmnpm
Version
0.0.16
Version published
Weekly downloads
23
283.33%
Maintainers
1
Weekly downloads
 
Created
Source

Jsonary on Node.js

WARNING: rendering functionality is rather limited at the moment

This package makes the Jsonary library available on Node.js.

What is Jsonary?

Jsonary is a library for dealing with data and APIs that are described by JSON (Hyper-)Schema. It can find and fetch schemas referenced from HTTP headers, allowing you to use the API in a flexible way.

It also contains a rendering system, using schema constraints and hyper-schema links to assemble adaptive clients for your APIs. This is currently only in the browser, but the final steps for getting it working on Node are being worked on.

The goal is that you should be able to write a Jsonary renderer once, and it should generate static HTML on Node, and provide part of a snazzy AJAX client on the browser.

So what can I do with it on Node right now?

Right now, the rendering system doesn't quite work, but you can still other (slightly less cool) schema-aware features of Jsonary.

For example, here is a short script that scrapes a (JSON Hyper-Schema described) API, starring every document written by someone whose name begins with 'J':

var Jsonary = require('jsonary').instance();

var results = [];
Jsonary.getData('http://example.com/documents/', function (documents) {
	documents.items(function (index, docData) {
		var authorLink = docData.getLink('author');
		var starLink = docData.getLink('star');
		if (authorLink && starLink) {
			authorLink.follow(null, false).getData(function (authorData) {
				var authorName = authorData.get('/name');
				if (/^J/.test(authorName)) {
					starLink.follow(null, false);
				}
			});
		}
	});
});

That script knows nothing about any URL apart from the entry-point - the link information is taken from the hyper-schema referenced by the data.

Jsonary also implements a basic cookie store, so your scripts can log in to an API before using it:

var Jsonary = require('jsonary').instance();

Jsonary.getData('http://example.com/json/', function (basePage) {
	var loginLink = basePage.getLink('login');
	loginLink.follow({username: "hello", password: "world"}, false).getData(function (loginResult) {
		assert(loginResult.get('/success') == true);
		performLoggedInActions();
	});
});

loginLink will be followed at whatever URL, and with whatever method and Content-Type is appropriate. For maximum flexibility, the login data should probably have used link.createSubmissionData(), in case there are other required parameters:

var loginLink = basePage.getLink('login');
loginLink.createSubmissionData(function (loginData) {
	loginData.set('/username', "hello");
	loginData.set('/password', "world");
	loginLink.follow(loginData, false).getData(...);
});

Keywords

json-schema

FAQs

Package last updated on 10 Dec 2013

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts