metaforecast/src/backend/platforms/rootclaim-fetch.ts
2022-03-29 04:34:27 +03:00

58 lines
1.9 KiB
TypeScript

/* Imports */
import axios from "axios";
import { calculateStars } from "../utils/stars";
import toMarkdown from "../utils/toMarkdown";
import { PlatformFetcher } from "./";
/* Definitions */
let jsonEndpoint =
"https://www.rootclaim.com/main_page_stories?number=100&offset=0"; //"https://subgraph-matic.poly.market/subgraphs/name/TokenUnion/polymarket"//"https://subgraph-backup.poly.market/subgraphs/name/TokenUnion/polymarket"//'https://subgraph-matic.poly.market/subgraphs/name/TokenUnion/polymarket3'
async function fetchAllRootclaims() {
// for info which the polymarket graphql API
let response = await axios
.get(jsonEndpoint)
.then((response) => response.data);
if (response.length != response[0] + 1) {
console.log(response.length);
console.log(response[0]);
//throw Error("Rootclaim's backend has changed.")
}
response.shift();
return response;
}
export const rootclaim: PlatformFetcher = async function () {
let claims = await fetchAllRootclaims();
let results = [];
for (let claim of claims) {
let id = `rootclaim-${claim.slug.toLowerCase()}`;
let options = [];
for (let scenario of claim.scenarios) {
//console.log(scenario)
options.push({
name: toMarkdown(scenario.text).replace("\n", "").replace("'", "'"),
probability: scenario.net_prob / 100,
type: "PROBABILITY",
});
}
let claimUrlPath = claim.created_at < "2020" ? "claims" : "analysis";
let obj = {
id: id,
title: toMarkdown(claim.question).replace("\n", ""),
url: `https://www.rootclaim.com/${claimUrlPath}/${claim.slug}`,
platform: "Rootclaim",
description: toMarkdown(claim.background).replace("&#39;", "'"),
options: options,
timestamp: new Date().toISOString(),
qualityindicators: {
numforecasts: 1,
stars: calculateStars("Rootclaim", {}),
},
};
results.push(obj);
}
return results;
};