UNPKG

traverson

Version:

Hypermedia API/HATEOAS client for Node.js and the browser

78 lines (67 loc) 2.36 kB
'use strict'; var minilog = require('minilog') , errorModule = require('./lib/errors') , errors = errorModule.errors , createError = errorModule.createError , mediaTypes = require('./lib/media_types') , Builder = require('./lib/builder') , mediaTypeRegistry = require('./lib/media_type_registry'); // activate this line to enable logging if (process.env.TRAVERSON_LOGGING) { require('minilog').enable(); } // export builder for traverson-angular exports._Builder = Builder; /** * Creates a new request builder instance. */ exports.newRequest = function newRequest() { return new Builder(); }; /** * Creates a new request builder instance with the given root URL. */ exports.from = function from(url) { var builder = new Builder(); builder.from(url); return builder; }; // Provided for backward compatibility with pre-1.0.0 versions. // The preferred way is to use newRequest() or from() to create a request // builder and either set the media type explicitly by calling json() on the // request builder instance - or use content negotiation. exports.json = { from: function(url) { var builder = new Builder(); builder.from(url); builder.setMediaType(mediaTypes.JSON); return builder; } }, // Provided for backward compatibility with pre-1.0.0 versions. // The preferred way is to use newRequest() or from() to create a request // builder and then either set the media type explicitly by calling jsonHal() on // the request builder instance - or use content negotiation. exports.jsonHal = { from: function(url) { if (!mediaTypeRegistry.get(mediaTypes.JSON_HAL)) { throw createError('JSON HAL adapter is not registered. From version ' + '1.0.0 on, Traverson has no longer built-in support for ' + 'application/hal+json. HAL support was moved to a separate, optional ' + 'plug-in. See https://github.com/traverson/traverson-hal', errors.UnsupportedMediaType ); } var builder = new Builder(); builder.from(url); builder.setMediaType(mediaTypes.JSON_HAL); return builder; } }; // expose media type registry so that media type plug-ins can register // themselves exports.registerMediaType = mediaTypeRegistry.register; // re-export media type constants exports.mediaTypes = mediaTypes; // re-export error names exports.errors = errors;