metal-uri

3.1.2 • Public • Published

metal-uri

Build Status

Build Status

Class for parsing and formatting URIs.

Use

After passing a URI as a string to the constructor, the individual components of the URI can be accessed and updated with the provided setters and getters.

Simple use case

import Uri from 'metal-uri';
 
const uri = new Uri('http://foo:8080');
 
uri.getHostname(); // 'foo'
uri.getPort(); // '8080'
uri.getProtocol(); // 'http:'

Updating values

const uri = new Uri('http://foo:8080/path');
 
uri.setPathname('login');
uri.setProtocol('https:');
uri.setHostname('bar');
uri.setPort('81');
 
uri.toString(); // 'https://bar:81/login'

Handling query parameters

const uri = new Uri('http://hostname?a=1&b=2');
 
uri.getParameterValue('a'); // '1'
uri.getParameterValue('b'); // '2'
 
uri.removeParameter('a');
uri.setParameterValue('b', 'x');
uri.addParameterValue('c', 'y');
 
uri.toString(); // 'http://hostname/?b=x&c=y'
uri.getSearch(); // '?b=x&c=y'

You can also set multiple values for one parameter.

const uri = new Uri('http://hostname?a=1');
 
uri.addParameterValues('b', ['x', 'y']);
 
uri.toString(); // 'http://hostname/?a=1&b=x&b=y'

Non-standard protocols

A default protocol is added automatically when none is provided. This default value will either be http: or https: depending if you are on a secure connection or not.

In order to use other protocols, you must instruct Uri to not add a default protocol by passing false as the second argument.

const uri = new Uri('tel:555-555-5555', false);
 
uri.setPathname('1-555-555-5555');
 
uri.toString(); // tel:/1-555-555-5555

Setup

  1. Install a recent release of NodeJS if you don't have it yet.

  2. Install local dependencies:

npm install
  1. Run the tests:
npm test

Contributing

Check out the contributing guidelines for more information.

Readme

Keywords

Package Sidebar

Install

npm i metal-uri

Weekly Downloads

1,532

Version

3.1.2

License

BSD

Unpacked Size

46.1 kB

Total Files

10

Last publish

Collaborators

  • antonio-ortega
  • daniel.sanz
  • izaera-lr
  • edalgrin
  • pat270
  • liferay
  • bryceosterhaus
  • matuzalemteles
  • gagranta
  • p2kmgcl
  • marko.cikos
  • kresimircoko
  • fernandosouza
  • jbalsas
  • brunobasto
  • rframpton
  • mairatma
  • eduardolundgren