Export functions instead of using class with only static members

Theres's no need to use a class all members are static and we never instantiate
it — it's not Java :D
This commit is contained in:
Ealhad 2018-11-14 23:54:16 +01:00
parent 2385b5f5c8
commit 3c4317504e
3 changed files with 42 additions and 45 deletions

View File

@ -20,8 +20,8 @@ import * as browser from 'webextension-polyfill';
import { MessageKind, RedirectType } from './types'; import { MessageKind, RedirectType } from './types';
import constants from './constants'; import constants from './constants';
import Preferences from './preferences'; import Preferences from './preferences';
import InvidiousAPI from './invidious-api'; import * as InvidiousAPI from './invidious-api';
import PeertubeAPI from './peertube-api'; import * as PeertubeAPI from './peertube-api';
import { getPeertubeVideoURL } from './util'; import { getPeertubeVideoURL } from './util';
/** /**

View File

@ -1,27 +1,26 @@
import * as _ from 'lodash/fp'; import * as _ from 'lodash/fp';
import constants from './constants'; import constants from './constants';
export default class InvidiousAPI { async function fetchAPI(action: string, params: any) {
private static async fetchAPI(action: string, params: any) { const paramString = typeof params == 'string'
const paramString = typeof params == 'string' ? params
? params : Object.keys(params).map(function(key) {
: Object.keys(params).map(function(key) { return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);
return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]); }).join('&');
}).join('&');
return fetch(`${constants.invidiousAPI.url}/${action}/${paramString}`) return fetch(`${constants.invidiousAPI.url}/${action}/${paramString}`)
.then(res => res.json()) .then(res => res.json())
.catch(e => console.error( .catch(e => console.error(
'An error occured while trying to fetch Invidious API used by PeerTubeify: ' 'An error occured while trying to fetch Invidious API used by PeerTubeify: '
+ e.message + e.message
)); ));
} }
static async getVideo(id: string) {
return this.fetchAPI(constants.invidiousAPI.videos, id); export async function getVideo(id: string) {
} return fetchAPI(constants.invidiousAPI.videos, id);
}
static async getChannel(ucid: string) {
return this.fetchAPI(constants.invidiousAPI.channels, ucid); export async function getChannel(ucid: string) {
} return fetchAPI(constants.invidiousAPI.channels, ucid);
} }

View File

@ -1,29 +1,27 @@
import * as _ from 'lodash/fp'; import * as _ from 'lodash/fp';
import constants from './constants'; import constants from './constants';
export default class PeertubeAPI { async function fetchAPI(path: string, query?: Object) {
private static async fetchAPI(path: string, query?: Object) { const instance = _.getOr(constants.peertubeAPI.defaultInstance, 'searchInstance', await browser.storage.local.get()).toString();
const instance = _.getOr(constants.peertubeAPI.defaultInstance, 'searchInstance', await browser.storage.local.get()).toString();
let url = `https://${instance}/${constants.peertubeAPI.endpoint}/${path}`; let url = `https://${instance}/${constants.peertubeAPI.endpoint}/${path}`;
if (query) { if (query) {
url = url + '?' + Object.keys(query).map(key => encodeURIComponent(key) + '=' + encodeURIComponent(query[key])).join('&'); url = url + '?' + Object.keys(query).map(key => encodeURIComponent(key) + '=' + encodeURIComponent(query[key])).join('&');
}
return fetch(url)
.then(res => res.json())
.catch(e => console.error(
`An error occured while trying to fetch ${instance} API used by PeerTubeify: `
+ e.message
));
} }
static async getVideo(id: string) { return fetch(url)
return this.fetchAPI('videos/' + id); .then(res => res.json())
} .catch(e => console.error(
`An error occured while trying to fetch ${instance} API used by PeerTubeify: `
static async searchVideo(query: Object) { + e.message
return this.fetchAPI('search/videos', query); ));
} }
export async function getVideo(id: string) {
return fetchAPI('videos/' + id);
}
export async function searchVideo(query: Object) {
return fetchAPI('search/videos', query);
} }