You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					47 lines
				
				1.0 KiB
			
		
		
			
		
	
	
					47 lines
				
				1.0 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var parse = require('url-parse');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Transform an URL to a valid origin value.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param {String|Object} url URL to transform to it's origin.
							 | 
						||
| 
								 | 
							
								 * @returns {String} The origin.
							 | 
						||
| 
								 | 
							
								 * @api public
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function origin(url) {
							 | 
						||
| 
								 | 
							
								  if ('string' === typeof url) url = parse(url);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  //
							 | 
						||
| 
								 | 
							
								  // 6.2.  ASCII Serialization of an Origin
							 | 
						||
| 
								 | 
							
								  // http://tools.ietf.org/html/rfc6454#section-6.2
							 | 
						||
| 
								 | 
							
								  //
							 | 
						||
| 
								 | 
							
								  if (!url.protocol || !url.hostname) return 'null';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  //
							 | 
						||
| 
								 | 
							
								  // 4. Origin of a URI
							 | 
						||
| 
								 | 
							
								  // http://tools.ietf.org/html/rfc6454#section-4
							 | 
						||
| 
								 | 
							
								  //
							 | 
						||
| 
								 | 
							
								  // States that url.scheme, host should be converted to lower case. This also
							 | 
						||
| 
								 | 
							
								  // makes it easier to match origins as everything is just lower case.
							 | 
						||
| 
								 | 
							
								  //
							 | 
						||
| 
								 | 
							
								  return (url.protocol +'//'+ url.host).toLowerCase();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Check if the origins are the same.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param {String} a URL or origin of a.
							 | 
						||
| 
								 | 
							
								 * @param {String} b URL or origin of b.
							 | 
						||
| 
								 | 
							
								 * @returns {Boolean}
							 | 
						||
| 
								 | 
							
								 * @api public
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								origin.same = function same(a, b) {
							 | 
						||
| 
								 | 
							
								  return origin(a) === origin(b);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Expose the origin
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								module.exports = origin;
							 |