friday-sdk
Version:
Official JavaScript/TypeScript SDK for the Friday API
265 lines (264 loc) • 10.1 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.FridayClient = void 0;
const client_1 = require("./client");
class FridayClient {
constructor(options) {
this.client = new client_1.APIClient(options);
}
get_status() {
return this.client.request("/status", { method: "GET" });
}
getStatus() {
return this.get_status();
}
getProfile(options) {
const params = new URLSearchParams({ profile_url: options.profileUrl });
if (options.realtime !== undefined) {
params.append("realtime", String(options.realtime));
}
if (options.prompt) {
params.append("prompt", options.prompt);
}
if (options.customSchema) {
params.append("custom_schema", options.customSchema);
}
return this.client.request(`/profile?${params.toString()}`);
}
analyzeCompany(optionsOrUrl) {
var _a;
const options = typeof optionsOrUrl === "string"
? { linkedinUrl: optionsOrUrl }
: optionsOrUrl;
return this.client.request("/analyze-company", {
method: "POST",
body: JSON.stringify({
linkedin_url: options.linkedinUrl,
realtime: (_a = options.realtime) !== null && _a !== void 0 ? _a : false,
}),
});
}
scrape(url, options = {}) {
var _a;
return this.client.request("/scrape", {
method: "POST",
body: JSON.stringify({
url,
formats: (_a = options.formats) !== null && _a !== void 0 ? _a : ["html"],
}),
});
}
crawl(url, options = {}) {
var _a, _b;
return this.client.request("/crawl", {
method: "POST",
body: JSON.stringify({
url,
formats: (_a = options.formats) !== null && _a !== void 0 ? _a : ["html", "markdown", "links"],
max_pages: (_b = options.maxPages) !== null && _b !== void 0 ? _b : 10,
}),
});
}
extract(url, query, optionsOrSchema = {}) {
const options = "customSchema" in optionsOrSchema
? optionsOrSchema
: { customSchema: optionsOrSchema };
return this.client.request("/extract", {
method: "POST",
body: JSON.stringify({
url,
query,
...(options.customSchema !== undefined
? { custom_schema: options.customSchema }
: {}),
}),
});
}
search(query, optionsOrLocation = {}, numResults) {
var _a, _b;
const options = typeof optionsOrLocation === "string"
? {
location: optionsOrLocation,
...(numResults !== undefined ? { numResults } : {}),
}
: optionsOrLocation;
return this.client.request("/search", {
method: "POST",
body: JSON.stringify({
query,
location: (_a = options.location) !== null && _a !== void 0 ? _a : "US",
num_results: (_b = options.numResults) !== null && _b !== void 0 ? _b : 15,
}),
});
}
redditSearch(query, options = {}) {
var _a, _b, _c;
return this.client.request("/reddit/search", {
method: "POST",
body: JSON.stringify({
query,
sort: (_a = options.sort) !== null && _a !== void 0 ? _a : "top",
time_filter: (_b = options.timeFilter) !== null && _b !== void 0 ? _b : "all",
limit: (_c = options.limit) !== null && _c !== void 0 ? _c : 25,
}),
});
}
redditSubredditSearch(options) {
var _a, _b, _c;
return this.client.request("/reddit/subreddit/search", {
method: "POST",
body: JSON.stringify({
subreddit: options.subreddit,
query: options.query,
sort: (_a = options.sort) !== null && _a !== void 0 ? _a : "top",
time_filter: (_b = options.timeFilter) !== null && _b !== void 0 ? _b : "all",
limit: (_c = options.limit) !== null && _c !== void 0 ? _c : 25,
}),
});
}
redditUserPosts(options) {
var _a;
return this.client.request("/reddit/user/posts", {
method: "POST",
body: JSON.stringify({
username: options.username,
limit: (_a = options.limit) !== null && _a !== void 0 ? _a : 25,
}),
});
}
scrapeTwitterProfile(options) {
var _a;
return this.client.request("/twitter/profile", {
method: "POST",
body: JSON.stringify({
profile_url: options.profileUrl,
tweet_count: (_a = options.tweetCount) !== null && _a !== void 0 ? _a : 10,
}),
});
}
xLatest(options) {
var _a;
const params = new URLSearchParams({
handle: options.handle,
limit: String((_a = options.limit) !== null && _a !== void 0 ? _a : 10),
});
if (options.refresh !== undefined) {
params.append("refresh", options.refresh);
}
return this.client.request(`/x/latest?${params.toString()}`, { method: "GET" });
}
xSearch(options) {
var _a;
const params = new URLSearchParams({
limit: String((_a = options.limit) !== null && _a !== void 0 ? _a : 20),
});
if (options.q !== undefined) {
params.append("q", options.q);
}
if (options.query !== undefined) {
params.append("query", options.query);
}
if (options.refresh !== undefined) {
params.append("refresh", options.refresh);
}
return this.client.request(`/x/search?${params.toString()}`, { method: "GET" });
}
xNews(options = {}) {
var _a;
const params = new URLSearchParams({
limit: String((_a = options.limit) !== null && _a !== void 0 ? _a : 10),
});
if (options.aiOnly !== undefined) {
params.append("aiOnly", options.aiOnly);
}
if (options.withTweets !== undefined) {
params.append("withTweets", options.withTweets);
}
if (options.tabs !== undefined) {
params.append("tabs", options.tabs);
}
if (options.refresh !== undefined) {
params.append("refresh", options.refresh);
}
return this.client.request(`/x/news?${params.toString()}`, { method: "GET" });
}
xAbout(options) {
const params = new URLSearchParams();
if (options.refresh !== undefined) {
params.append("refresh", options.refresh);
}
const suffix = params.toString() ? `?${params.toString()}` : "";
return this.client.request(`/x/about/${options.handle}${suffix}`, {
method: "GET",
});
}
xWhoami(options = {}) {
const params = new URLSearchParams();
if (options.refresh !== undefined) {
params.append("refresh", options.refresh);
}
const suffix = params.toString() ? `?${params.toString()}` : "";
return this.client.request(`/x/whoami${suffix}`, { method: "GET" });
}
linkedinProfilePosts(options) {
return this.client.request("/linkedin/profile/posts", {
method: "POST",
body: JSON.stringify({ profile_url: options.profileUrl }),
});
}
linkedinCompanyPosts(options) {
return this.client.request("/linkedin/company/posts", {
method: "POST",
body: JSON.stringify({ company_url: options.companyUrl }),
});
}
createApiKey(options) {
return this.client.request("/admin/create-api-key", {
method: "POST",
body: JSON.stringify({
client: options.client,
rate_limit: options.rateLimit,
key_type: options.keyType,
description: options.description,
}),
});
}
revokeApiKey(key) {
return this.client.request(`/admin/revoke-api-key/${key}`, {
method: "DELETE",
});
}
resetRateLimits() {
return this.client.request("/admin/reset", { method: "POST" });
}
createUserApiKey(options) {
const params = new URLSearchParams({ key_type: options.keyType });
return this.client.request(`/user/create-api-key?${params.toString()}`, { method: "POST" }, { useApiKey: false, bearerToken: options.jwtToken });
}
getUserApiKeys(jwtToken) {
return this.client.request("/user/api-keys", { method: "GET" }, { useApiKey: false, bearerToken: jwtToken });
}
getSubscriptionPlans(jwtToken) {
return this.client.request("/subscription-plans", { method: "GET" }, { useApiKey: false, bearerToken: jwtToken });
}
regenerateUserApiKey(options) {
const params = new URLSearchParams({ old_key: options.oldKey });
return this.client.request(`/user/regenerate-api-key?${params.toString()}`, { method: "POST" }, { useApiKey: false, bearerToken: options.jwtToken });
}
}
exports.FridayClient = FridayClient;
__exportStar(require("./types"), exports);