Created
September 8, 2022 20:47
-
-
Save erdos/6050a6e3efe23adb4321e14785dc0318 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns cljproxy | |
(:require [org.httpkit.client :as client] | |
[org.httpkit.sni-client] | |
[org.httpkit.server :as server])) | |
;; minimalist local proxy for development | |
;; Usage: TARGET=https://erdos.dev PORT=8081 bb core.clj | |
(def target-root (doto (System/getenv "TARGET") assert)) | |
(def port (doto (System/getenv "PORT") assert)) | |
(alter-var-root #'org.httpkit.client/*default-client* (constantly org.httpkit.sni-client/default-client)) | |
(defn request->params [request] | |
(let [headers (dissoc (:headers request) "host" "referer")] | |
{:method (keyword (:request-method request)) | |
:url (str target-root (:uri request)) | |
:headers headers | |
:insecure? true | |
:body (:body request)})) | |
(defn map-response [response] | |
{:status (:status response) | |
:headers {"content-type" (:content-type (:headers response))} | |
:body (:body response)}) | |
(defn handler [request] | |
(let [params (request->params request) | |
respond @(client/request params)] | |
(if-let [err (:error respond)] | |
(println :ERROR err)) | |
(map-response respond))) | |
(println "Starting server") | |
(server/run-server handler {:port 8081}) | |
(read-line) | |
(println "Stopped server") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment