1import { fetchJSON } from "https://esm.town/v/stevekrouse/fetchJSON?v=41";
2
3type Args = {
17 };
18 const { access_token } = await getToken(serviceAccount, googleAuthOptions);
19 const result = fetchJSON(
20 `https://sheets.googleapis.com/v4/spreadsheets/${sheetId}/${action}`,
21 {
1import { fetch } from "https://esm.town/v/std/fetch";
2
3export const nearestOpenStation = async ({ lon, lat }) => {
12 const {
13 data: { stations: stationInfo },
14 } = await fetch(
15 "https://gbfs.citibikenyc.com/gbfs/en/station_status.json"
16 ).then((r) => r.json());
22 const {
23 data: { stations },
24 } = await fetch(
25 "https://gbfs.citibikenyc.com/gbfs/en/station_information.json"
26 ).then((r) => r.json());
1import { fetch } from "https://esm.town/v/std/fetch";
2
3export let getDuckDB = (async () => {
4 async function createWorker(url: string) {
5 const workerScript = await fetch(url);
6 const workerURL = URL.createObjectURL(await workerScript.blob());
7 return new Worker(workerURL, { type: "module" });
1import process from "node:process";
2import { fetchJSON } from "https://esm.town/v/stevekrouse/fetchJSON?v=41";
3
4// e.g. https://www.sfmta.com/stops/carl-st-stanyan-st-13915
5export const getMuniStopInfo = (stopCode) => {
6 return fetchJSON(
7 `https://api.511.org/transit/StopMonitoring?api_key=${process.env.transitApiKey}&agency=SF&stopCode=${stopCode}`,
8 );
1import { fetchJSON } from "https://esm.town/v/stevekrouse/fetchJSON?v=41";
2
3// GitHub events
4export let githubEvents = fetchJSON(
5 "https://api.github.com/users/stevekrouse/events"
6);
1import { fetch } from "https://esm.town/v/std/fetch";
2
3export const fetchWeatherPrediction = async (req: Request) => {
4 interface Forecast {
5 startTime: string;
14 };
15 }
16 async function fetchForecast(
17 latitude: number,
18 longitude: number,
19 ): Promise<Forecast[]> {
20 try {
21 // Fetch the points data to get the forecast endpoint
22 const pointsUrl: string =
23 `https://api.weather.gov/points/${latitude},${longitude}`;
24 console.log(pointsUrl);
25 const pointsResponse = await fetch(pointsUrl, {
26 headers: { "Accept": "application/geo+json" },
27 });
29 const pointsData = await pointsResponse.json();
30 const forecastUrl: string = pointsData.properties.forecast;
31 // Fetch the actual forecast
32 const forecastResponse = await fetch(forecastUrl, {
33 headers: { "Accept": "application/geo+json" },
34 });
54 // don't really need names either
55 // would be nice to convert name to lat/lng
56 const forecast = await fetchForecast(lat, lng);
57 console.log(`Forecast for ${placeName} @ ${lat},${lng}`);
58 forecast.forEach((period) => {
1import { fetch } from "https://esm.town/v/std/fetch";
2import process from "node:process";
3
21
22 const getCompelitoins = async (data) => {
23 const response = await fetch("https://api.openai.com/v1/completions", {
24 method: "POST",
25 headers: {
1import { fetchText } from "https://esm.town/v/stevekrouse/fetchText?v=5";
2
3export const rand = () =>
4 fetchText("http://numbersapi.com/random/math");
1import { fetchJSON } from "https://esm.town/v/stevekrouse/fetchJSON?v=41";
2
3/**
5 Receive daily emails of reported congress trades by scheduling a call to
6
7 @claytn.fetchCongressTradeReports((reports) => console.email(reports))
8*/
9
10
11export async function fetchCongressTradeReports(callback) {
12 const res = await fetchJSON(
13 "https://bff.capitoltrades.com/trades?sortBy=-pubDate"
14 );
1import { fetch } from "https://esm.town/v/std/fetch";
2
3export const csvToJson = async (url: string) => {
14 url =
15 "https://www.ncbi.nlm.nih.gov/core/assets/pmc/files/removed_phe_articles_oa_subset.csv";
16 const response = await fetch(url);
17 const stream = response.body?.pipeThrough(textDecoder)
18 .pipeThrough(csvParser).pipeThrough(jsonStringifier).pipeThrough(