diff --git a/api/blocks.ts b/api/blocks.ts new file mode 100644 index 0000000..13e9c6d --- /dev/null +++ b/api/blocks.ts @@ -0,0 +1,7 @@ +import { RouterMiddleware } from "https://deno.land/x/oak/mod.ts"; +import { getBlocks } from "../blocks.ts"; + +export const GetBlocks: RouterMiddleware = (context) => { + const blocks = getBlocks(); + context.response.body = blocks; +}; diff --git a/api.ts b/api/donate.ts similarity index 59% rename from api.ts rename to api/donate.ts index 94b2c36..2b01328 100644 --- a/api.ts +++ b/api/donate.ts @@ -1,51 +1,16 @@ -import { Router } from "https://deno.land/x/oak/mod.ts"; +import { RouterMiddleware } from "https://deno.land/x/oak/mod.ts"; import { exec, OutputMode } from "https://deno.land/x/exec/mod.ts"; import { ensureFile } from "https://deno.land/std/fs/mod.ts"; -import * as base64 from "https://denopkg.com/chiefbiiko/base64/mod.ts"; import { sha256 } from "https://denopkg.com/chiefbiiko/sha256/mod.ts"; -import { getBlocks } from "./blocks.ts"; -import { getblockchaininfo, getblockcount, getblockhash } from "./jsonrpc/index.ts"; -import Pageviews from "./pageviews/index.ts"; -import config from "./config/config.ts"; -import { bytesToHexString } from "./utils.ts"; +import config from "../config/config.ts"; +import { bytesToHexString } from "../utils.ts"; -const router = new Router(); - -router.use(Pageviews); - -router - .get("/getblockchaininfo", async (context) => { - const info = await getblockchaininfo(); - console.log(info); - context.response.body = info; - }) - .get<{ - height: string; - }>("/getblockhash/:height", async (context) => { - if (!context.params || !context.params.height) { - context.response.status = 400; - context.response.body = JSON.stringify({ - status: "ERROR", - reason: "Missing param height", - }); - return; - } - const blockhash = await getblockhash(Number.parseInt(context.params.height)); - context.response.body = blockhash; - }) - .get("/getblockcount", async (context) => { - const blockCount = await getblockcount(); - context.response.body = blockCount; - }); - -router.get("/blocks", (context) => { - const blocks = getBlocks(); - context.response.body = blocks; -}); +await ensureFile("./addinvoice_payload.json"); const responseMetadata = JSON.stringify([["text/plain", "Donation to taproot.watch"]]); -router.get("/invoice", (context) => { + +export const LnurlPayRequest: RouterMiddleware = (context) => { if (!config.donation) { context.response.status = 400; context.response.body = JSON.stringify({ @@ -58,15 +23,14 @@ router.get("/invoice", (context) => { context.response.body = JSON.stringify({ tag: "payRequest", callback: `${config.donation.lnurlPayUrl}/callback`, - maxSendable: 100000, + maxSendable: 10000000, minSendable: 1000, metadata: responseMetadata, // commentAllowed: 200, }); -}); +}; -await ensureFile("./addinvoice_payload.json"); -router.get("/invoice/callback", async (context) => { +export const LnurlPayRequestCallback: RouterMiddleware = async (context) => { if (!config.donation) { context.response.status = 400; context.response.body = JSON.stringify({ @@ -110,5 +74,4 @@ router.get("/invoice/callback", async (context) => { }, disposable: true, }); -}); -export default router; +}; diff --git a/api/index.ts b/api/index.ts new file mode 100644 index 0000000..a98cdfa --- /dev/null +++ b/api/index.ts @@ -0,0 +1,24 @@ +import { Router } from "https://deno.land/x/oak/mod.ts"; + +import Pageviews from "../pageviews/index.ts"; +import { GetBlocks } from "./blocks.ts"; +import { LnurlPayRequest, LnurlPayRequestCallback } from "./donate.ts"; +import { GetBlockchainInfo, GetBlockCount, GetBlockHash } from "./misc.ts"; + +const router = new Router(); + +router.use(Pageviews); + +router.get("/blocks", GetBlocks); + +router.get("/invoice", LnurlPayRequest); + +router.get("/invoice/callback", LnurlPayRequestCallback); + +router.get("/getblockchaininfo", GetBlockchainInfo); + +router.get<{ height: string }>("/getblockhash/:height", GetBlockHash); + +router.get("/getblockcount", GetBlockCount); + +export default router; diff --git a/api/misc.ts b/api/misc.ts new file mode 100644 index 0000000..c364f2b --- /dev/null +++ b/api/misc.ts @@ -0,0 +1,28 @@ +import { RouterMiddleware } from "https://deno.land/x/oak/mod.ts"; + +import { getblockhash } from "../jsonrpc/index.ts"; +import { getblockchaininfo, getblockcount } from "../jsonrpc/index.ts"; + +export const GetBlockchainInfo: RouterMiddleware = async (context) => { + const info = await getblockchaininfo(); + console.log(info); + context.response.body = info; +}; + +export const GetBlockHash: RouterMiddleware<{ height: string }> = async (context) => { + if (!context.params || !context.params.height) { + context.response.status = 400; + context.response.body = JSON.stringify({ + status: "ERROR", + reason: "Missing param height", + }); + return; + } + const blockhash = await getblockhash(Number.parseInt(context.params.height)); + context.response.body = blockhash; +}; + +export const GetBlockCount: RouterMiddleware = async (context) => { + const blockCount = await getblockcount(); + context.response.body = blockCount; +}; diff --git a/index.ts b/index.ts index 42b9933..2419d3d 100644 --- a/index.ts +++ b/index.ts @@ -1,7 +1,7 @@ import { Application, send } from "https://deno.land/x/oak@v7.3.0/mod.ts"; import config from "./config/config.ts"; -import router from "./api.ts"; +import router from "./api/index.ts"; import { bootstrapBlocks } from "./blocks.ts"; await bootstrapBlocks();