forked from jasonwaters/target-nodejs-sdk-samples
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprovider.js
57 lines (47 loc) · 1.44 KB
/
provider.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
const fetch = require("node-fetch");
const starWarsSearchProvider = {
domain: 'a Star Wars character ( try "skywalker")',
execute: async (searchTerm) => {
const result = await fetch(
`https://swapi.dev/api/people/?format=json&search=${searchTerm}`
).then((result) => result.json());
const list = result.results;
return {
term: searchTerm,
message: `Searched for ${searchTerm} with Star Wars search provider`,
list,
};
},
};
const starTrekSearchProvider = {
domain: 'a Star Trek character ( try "picard")',
execute: async (searchTerm) => {
const searchParams = new URLSearchParams();
searchParams.set("title", searchTerm);
searchParams.set("name", searchTerm);
const result = await fetch(`http://stapi.co/api/v1/rest/character/search`, {
method: "POST",
body: searchParams,
}).then((result) => result.json());
const list = (result.characters || []).map((character) => {
return {
name: character.name,
gender: character.gender,
birth_year: character.yearOfBirth,
};
});
return {
term: searchTerm,
message: `Searched for ${searchTerm} with Star Trek search provider`,
list,
};
},
};
const searchProviders = {
startrek: starTrekSearchProvider,
starwars: starWarsSearchProvider,
};
function getSearchProvider(providerId) {
return searchProviders[providerId];
}
module.exports = { getSearchProvider };