1
0
mirror of https://github.com/ascribe/onion.git synced 2024-12-23 01:39:36 +01:00

Use js-utility-belt's url utils

This commit is contained in:
Brett Sun 2016-06-13 15:30:20 +02:00
parent 2ba96780f1
commit 8689585d74
3 changed files with 6 additions and 72 deletions

View File

@ -9,7 +9,7 @@ import S3Fetcher from '../../fetchers/s3_fetcher';
import AppConstants from '../../constants/application_constants'; import AppConstants from '../../constants/application_constants';
import { getLangText } from '../../utils/lang'; import { getLangText } from '../../utils/lang';
import { queryParamsToArgs } from '../../utils/url'; import { parseQueryParamStr } from '../../utils/url';
const { string } = React.PropTypes; const { string } = React.PropTypes;
@ -52,7 +52,7 @@ const S3DownloadButton = React.createClass({
// The signed url, however can expire, which is why we need to set up a timer to // The signed url, however can expire, which is why we need to set up a timer to
// renew it when it expires. // renew it when it expires.
const expires = parseInt(queryParamsToArgs(downloadUrl.split('?')[1]).expires, 10); const expires = parseInt(parseQueryParamStr(downloadUrl).expires, 10);
const now = new Date().getTime() / 1000; const now = new Date().getTime() / 1000;
// Amazon uses seconds as their signature unix timestamp while `setTimeout` uses // Amazon uses seconds as their signature unix timestamp while `setTimeout` uses

View File

@ -6,7 +6,7 @@ import AppConstants from '../constants/application_constants';
import { getCookie } from '../utils/fetch_api'; import { getCookie } from '../utils/fetch_api';
import { omitFromObject } from '../utils/general'; import { omitFromObject } from '../utils/general';
import { argsToQueryParams } from '../utils/url'; import { stringifyAsQueryParam } from '../utils/url';
class Requests { class Requests {
@ -108,7 +108,7 @@ class Requests {
}); });
if (attachParamsToQuery && params && Object.keys(params).length > 0) { if (attachParamsToQuery && params && Object.keys(params).length > 0) {
newUrl += argsToQueryParams(params); newUrl += stringifyAsQueryParam(params);
} }
return newUrl; return newUrl;

View File

@ -1,71 +1,5 @@
'use strict'; // Re-export related utilities from js-utility-belt for easier access
export { getCurrentQueryParams, stringifyAsQueryParam, parseQueryParamStr } from 'js-utility-belt/es6/url';
import camelCase from 'camelcase';
import decamelize from 'decamelize';
import queryString from 'query-string';
import { sanitize } from './general';
// TODO: Create Unittests that test all functions
/**
* Takes a key-value dictionary of this form:
*
* {
* 'page': 1,
* 'pageSize': 10
* }
*
* and converts it to a query-parameter, which you can append to your URL.
* The return looks like this:
*
* ?page=1&page_size=10
*
* CamelCase gets converted to snake_case!
*
* @param {object} obj Query params dictionary
* @return {string} Query params string
*/
export function argsToQueryParams(obj) {
const sanitizedObj = sanitize(obj);
const queryParamObj = {};
Object
.keys(sanitizedObj)
.forEach((key) => {
queryParamObj[decamelize(key)] = sanitizedObj[key];
});
return '?' + queryString.stringify(queryParamObj);
}
/**
* Get the current url's query params as an key-val dictionary.
* snake_case gets converted to CamelCase!
* @return {object} Query params dictionary
*/
export function getCurrentQueryParams() {
return queryParamsToArgs(window.location.search.substring(1));
}
/**
* Convert the given query param string into a key-val dictionary.
* snake_case gets converted to CamelCase!
* @param {string} queryParamString Query params string
* @return {object} Query params dictionary
*/
export function queryParamsToArgs(queryParamString) {
const queryParamObj = queryString.parse(queryParamString);
const camelCaseParamObj = {};
Object
.keys(queryParamObj)
.forEach((key) => {
camelCaseParamObj[camelCase(key)] = queryParamObj[key];
});
return camelCaseParamObj;
}
/** /**
* Takes a string and a boolean and generates a string query parameter for * Takes a string and a boolean and generates a string query parameter for