From 7c8ee36505d6eedf92d735e8c3565f830e51267d Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Sat, 14 Aug 2021 23:40:03 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=8C=20Working=20UI=20integration=20air?= =?UTF-8?q?dcpp-socket?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/client/components/Search.tsx | 22 +++++- src/client/constants/search.service.ts | 11 +++ ...{SearchService.ts => DcppSearchService.ts} | 3 +- src/client/services/api/SearchApi.ts | 78 +++++++++++-------- 4 files changed, 80 insertions(+), 34 deletions(-) create mode 100644 src/client/constants/search.service.ts rename src/client/services/{SearchService.ts => DcppSearchService.ts} (82%) diff --git a/src/client/components/Search.tsx b/src/client/components/Search.tsx index dee87f1..4639e8b 100644 --- a/src/client/components/Search.tsx +++ b/src/client/components/Search.tsx @@ -10,6 +10,7 @@ import { isNil, isUndefined, map, isEmpty } from "lodash"; import { IExtractedComicBookCoverFile, RootState } from "threetwo-ui-typings"; import { useSelector, useDispatch } from "react-redux"; import { comicinfoAPICall } from "../actions/comicinfo.actions"; +import { search } from "../services/api/SearchApi"; import { Form, Field } from "react-final-form"; interface ISearchProps {} @@ -40,6 +41,10 @@ export const Search = ({}: ISearchProps): ReactElement => { [dispatch], ); + const getDCPPSearchResults = useCallback((searchQuery) => { + search(searchQuery); + }, []); + const comicVineSearchResults = useSelector( (state: RootState) => state.comicInfo.searchResults, ); @@ -51,7 +56,22 @@ export const Search = ({}: ISearchProps): ReactElement => {

Search

+ getDCPPSearchResults({ + query: { + pattern: "Old Man Logan", + // file_type: "any", + // extensions: ["iso"], + }, + hub_urls: [ + "nmdcs://piter.feardc.net:411", + "dchub://dc.fly-server.ru", + "dchub://dc.elitedc.ru", + "dchub://dc.kcahdep.online", + ], + priority: 1, + }) + } initialValues={{ ...formData, }} diff --git a/src/client/constants/search.service.ts b/src/client/constants/search.service.ts new file mode 100644 index 0000000..1cc2dbe --- /dev/null +++ b/src/client/constants/search.service.ts @@ -0,0 +1,11 @@ +const MODULE_URL = "search"; + +export default { + MODULE_URL: MODULE_URL, + INSTANCES_URL: MODULE_URL, + + SEARCH_TYPES_URL: MODULE_URL + "/types", + SEARCH_TYPES_UPDATED: "search_types_updated", + + DEFAULT_SEARCH_TYPE: "any", +}; diff --git a/src/client/services/SearchService.ts b/src/client/services/DcppSearchService.ts similarity index 82% rename from src/client/services/SearchService.ts rename to src/client/services/DcppSearchService.ts index 908c213..4a9dc19 100644 --- a/src/client/services/SearchService.ts +++ b/src/client/services/DcppSearchService.ts @@ -1,5 +1,4 @@ import { Socket } from "airdcpp-apisocket"; -import WebSocket from "ws"; const options = { url: "wss://sab.rishighan.com/api/v1/", @@ -13,7 +12,7 @@ const options = { ], }; -const APISocket = Socket(options, WebSocket as any); +const APISocket = Socket(options, window.WebSocket as any); type SocketType = typeof APISocket; export { SocketType as APISocket }; diff --git a/src/client/services/api/SearchApi.ts b/src/client/services/api/SearchApi.ts index a5e0da2..2c5fd41 100644 --- a/src/client/services/api/SearchApi.ts +++ b/src/client/services/api/SearchApi.ts @@ -1,42 +1,58 @@ -import SocketService from "../SearchService"; -export const foo = SocketService.connect("admin", "password"); -interface SearchInstance { - current_search_id: string; - expires_in: number; - id: number; - owner: string; - query: Record; - queue_time: number; - queued_count: number; - result_count: number; - searches_sent_ago: number; +import SocketService from "../DcppSearchService"; +import { + SearchQuery, + SearchInstance, + PriorityEnum, + SearchResponse, +} from "threetwo-ui-typings"; +import SearchConstants from "../../constants/search.service"; + +interface SearchData { + query: Pick & Partial>; + hub_urls: string[] | undefined | null; + priority: PriorityEnum; } function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); } -foo.then(async (data) => { - const instance: SearchInstance = await SocketService.post("search"); - await sleep(10000); +// foo.then(async (data) => { +// const instance: SearchInstance = await SocketService.post("search"); +// await sleep(10000); - const searchInfo = await SocketService.post( +// const searchInfo = await SocketService.post( +// `search/${instance.id}/hub_search`, +// { +// query: { +// pattern: "H.P. Lovecraft", +// file_type: "compressed", +// extensions: ["cbz", "cbr"], +// }, +// hub_urls: [ +// "nmdcs://piter.feardc.net:411", +// "dchub://dc.rutrack.net", +// "dchub://dc.elitedc.ru", +// ], +// priority: 1, +// }, +// ); +// await sleep(10000); +// const results = await SocketService.get(`search/${instance.id}/results/0/5`); +// console.log(results); +// }); + +export const search = async (data: SearchData) => { + await SocketService.connect("admin", "password"); + await sleep(10000); + const instance: SearchInstance = await SocketService.post("search"); + await SocketService.post( `search/${instance.id}/hub_search`, - { - query: { - pattern: "H.P. Lovecraft", - file_type: "compressed", - extensions: ["cbz", "cbr"], - }, - hub_urls: [ - "nmdcs://piter.feardc.net:411", - "dchub://dc.rutrack.net", - "dchub://dc.elitedc.ru", - ], - priority: 1, - }, + data, ); await sleep(10000); const results = await SocketService.get(`search/${instance.id}/results/0/5`); - console.log(results); -}); + console.log("ASDASDASDASDASDASDA", results); + SocketService.disconnect(); + return results; +};