From e37a09c2662f262363c960f64d321d2f78feaba6 Mon Sep 17 00:00:00 2001 From: simojenki Date: Fri, 7 Jan 2022 12:17:01 +1100 Subject: [PATCH] ref --- src/subsonic.ts | 11 +--------- src/utils.ts | 14 ++++++++++++ tests/subsonic.test.ts | 48 +--------------------------------------- tests/utils.test.ts | 50 +++++++++++++++++++++++++++++++++++++++++- 4 files changed, 65 insertions(+), 58 deletions(-) diff --git a/src/subsonic.ts b/src/subsonic.ts index bfd82d3..c255e7b 100644 --- a/src/subsonic.ts +++ b/src/subsonic.ts @@ -30,6 +30,7 @@ import logger from "./logger"; import { assertSystem, BUrn } from "./burn"; import { artist } from "./smapi"; import { axiosImageFetcher, ImageFetcher } from "./images"; +import { asURLSearchParams } from "./utils"; export const t = (password: string, s: string) => @@ -331,16 +332,6 @@ export function appendMimeTypeToClientFor(mimeTypes: string[]) { mimeTypes.includes(track.mimeType) ? `bonob+${track.mimeType}` : "bonob"; } -export const asURLSearchParams = (q: any) => { - const urlSearchParams = new URLSearchParams(); - Object.keys(q).forEach((k) => { - _.flatten([q[k]]).forEach((v) => { - urlSearchParams.append(k, `${v}`); - }); - }); - return urlSearchParams; -}; - const AlbumQueryTypeToSubsonicType: Record = { alphabeticalByArtist: "alphabeticalByArtist", alphabeticalByName: "alphabeticalByName", diff --git a/src/utils.ts b/src/utils.ts index 33a4193..4070e89 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,3 +1,5 @@ +import { flatten } from "underscore"; + export const BROWSER_HEADERS = { accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", @@ -8,6 +10,18 @@ export const BROWSER_HEADERS = { "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:86.0) Gecko/20100101 Firefox/86.0", }; + +export const asURLSearchParams = (q: any) => { + const urlSearchParams = new URLSearchParams(); + Object.keys(q).forEach((k) => { + flatten([q[k]]).forEach((v) => { + urlSearchParams.append(k, `${v}`); + }); + }); + return urlSearchParams; +}; + + export function takeWithRepeats(things:T[], count: number) { const result = []; for(let i = 0; i < count; i++) { diff --git a/tests/subsonic.test.ts b/tests/subsonic.test.ts index 3c0ec91..8dddb0c 100644 --- a/tests/subsonic.test.ts +++ b/tests/subsonic.test.ts @@ -11,7 +11,6 @@ import { DODGY_IMAGE_NAME, asGenre, appendMimeTypeToClientFor, - asURLSearchParams, asTrack, artistImageURN, images, @@ -58,6 +57,7 @@ import { } from "./builders"; import { b64Encode } from "../src/b64"; import { BUrn } from "../src/burn"; +import { asURLSearchParams } from "../src/utils"; describe("t", () => { it("should be an md5 of the password and the salt", () => { @@ -121,52 +121,6 @@ describe("appendMimeTypeToUserAgentFor", () => { }); }); -describe("asURLSearchParams", () => { - describe("empty q", () => { - it("should return empty params", () => { - const q = {}; - const expected = new URLSearchParams(); - expect(asURLSearchParams(q)).toEqual(expected); - }); - }); - - describe("singular params", () => { - it("should append each", () => { - const q = { - a: 1, - b: "bee", - c: false, - d: true, - }; - const expected = new URLSearchParams(); - expected.append("a", "1"); - expected.append("b", "bee"); - expected.append("c", "false"); - expected.append("d", "true"); - - expect(asURLSearchParams(q)).toEqual(expected); - }); - }); - - describe("list params", () => { - it("should append each", () => { - const q = { - a: [1, "two", false, true], - b: "yippee", - }; - - const expected = new URLSearchParams(); - expected.append("a", "1"); - expected.append("a", "two"); - expected.append("a", "false"); - expected.append("a", "true"); - expected.append("b", "yippee"); - - expect(asURLSearchParams(q)).toEqual(expected); - }); - }); -}); - const ok = (data: string | object) => ({ status: 200, data, diff --git a/tests/utils.test.ts b/tests/utils.test.ts index ce0d5f3..f494703 100644 --- a/tests/utils.test.ts +++ b/tests/utils.test.ts @@ -1,4 +1,52 @@ -import { takeWithRepeats } from "../src/utils"; +import { asURLSearchParams, takeWithRepeats } from "../src/utils"; + +describe("asURLSearchParams", () => { + describe("empty q", () => { + it("should return empty params", () => { + const q = {}; + const expected = new URLSearchParams(); + expect(asURLSearchParams(q)).toEqual(expected); + }); + }); + + describe("singular params", () => { + it("should append each", () => { + const q = { + a: 1, + b: "bee", + c: false, + d: true, + }; + const expected = new URLSearchParams(); + expected.append("a", "1"); + expected.append("b", "bee"); + expected.append("c", "false"); + expected.append("d", "true"); + + expect(asURLSearchParams(q)).toEqual(expected); + }); + }); + + describe("list params", () => { + it("should append each", () => { + const q = { + a: [1, "two", false, true], + b: "yippee", + }; + + const expected = new URLSearchParams(); + expected.append("a", "1"); + expected.append("a", "two"); + expected.append("a", "false"); + expected.append("a", "true"); + expected.append("b", "yippee"); + + expect(asURLSearchParams(q)).toEqual(expected); + }); + }); +}); + + describe("takeWithRepeat", () => { describe("when there is nothing in the input", () => {