[back/feat] generate json
This commit is contained in:
parent
d34b377bce
commit
96822903e9
3 changed files with 22 additions and 15 deletions
|
@ -13,6 +13,7 @@
|
||||||
[ring/ring-jetty-adapter "1.11.0-alpha1"]
|
[ring/ring-jetty-adapter "1.11.0-alpha1"]
|
||||||
[org.babashka/http-client "0.4.14"]
|
[org.babashka/http-client "0.4.14"]
|
||||||
[org.jsoup/jsoup "1.16.1"]
|
[org.jsoup/jsoup "1.16.1"]
|
||||||
|
[cheshire "5.11.0"]
|
||||||
|
|
||||||
[org.slf4j/slf4j-nop "2.0.7"]
|
[org.slf4j/slf4j-nop "2.0.7"]
|
||||||
[reagent/reagent "1.2.0"]
|
[reagent/reagent "1.2.0"]
|
||||||
|
@ -21,8 +22,7 @@
|
||||||
[binaryage/devtools "1.0.7"]
|
[binaryage/devtools "1.0.7"]
|
||||||
[re-frame/re-frame "1.3.0"]
|
[re-frame/re-frame "1.3.0"]
|
||||||
[day8.re-frame/tracing "0.6.2"]
|
[day8.re-frame/tracing "0.6.2"]
|
||||||
[day8.re-frame/re-frame-10x "1.6.0"]
|
[day8.re-frame/re-frame-10x "1.6.0"]]
|
||||||
]
|
|
||||||
|
|
||||||
:source-paths ["src/main"]
|
:source-paths ["src/main"]
|
||||||
:main ^:skip-aot backend.core
|
:main ^:skip-aot backend.core
|
||||||
|
@ -30,7 +30,10 @@
|
||||||
:profiles
|
:profiles
|
||||||
{:uberjar {:dependencies ^:replace [[org.clojure/clojure "1.11.1"]
|
{:uberjar {:dependencies ^:replace [[org.clojure/clojure "1.11.1"]
|
||||||
[ring/ring-jetty-adapter "1.11.0-alpha1"]
|
[ring/ring-jetty-adapter "1.11.0-alpha1"]
|
||||||
|
[metosin/reitit "0.7.0-alpha5"]
|
||||||
[org.slf4j/slf4j-nop "2.0.7"]
|
[org.slf4j/slf4j-nop "2.0.7"]
|
||||||
[org.babashka/http-client "0.4.14"]]
|
[org.babashka/http-client "0.4.14"]
|
||||||
|
[org.jsoup/jsoup "1.16.1"]
|
||||||
|
[cheshire "5.11.0"]]
|
||||||
|
|
||||||
:aot :all}})
|
:aot :all}})
|
||||||
|
|
|
@ -9,9 +9,7 @@
|
||||||
(ring/ring-handler
|
(ring/ring-handler
|
||||||
(ring/router
|
(ring/router
|
||||||
[["/hp/:id" {:parameters {:path {:id int?}}
|
[["/hp/:id" {:parameters {:path {:id int?}}
|
||||||
:get {:handler handlers/fetch-hu-post}}]
|
:get {:handler handlers/fetch-hu-post}}]])
|
||||||
])
|
|
||||||
|
|
||||||
(ring/create-default-handler
|
(ring/create-default-handler
|
||||||
{:not-found (constantly {:status 404 :body "Not found"})})))
|
{:not-found (constantly {:status 404 :body "Not found"})})))
|
||||||
|
|
||||||
|
@ -20,9 +18,8 @@
|
||||||
:join? false}))
|
:join? false}))
|
||||||
|
|
||||||
(def server (run-jetty #'app {:port 3000
|
(def server (run-jetty #'app {:port 3000
|
||||||
:join? false}))
|
:join? false}))
|
||||||
|
;; (.stop server)
|
||||||
(comment
|
;; (app {:request-method :get
|
||||||
(app {:request-method :get
|
;; :uri "/hp/431038004"
|
||||||
:uri "/hp/431038004"
|
;; })
|
||||||
}))
|
|
||||||
|
|
|
@ -1,17 +1,24 @@
|
||||||
(ns backend.handlers
|
(ns backend.handlers
|
||||||
(:require [clojure.string :as str]
|
(:require [clojure.string :as str]
|
||||||
[babashka.http-client :as client])
|
[babashka.http-client :as client]
|
||||||
|
[cheshire.core :refer [generate-string]])
|
||||||
(:import [org.jsoup Jsoup]))
|
(:import [org.jsoup Jsoup]))
|
||||||
|
|
||||||
|
|
||||||
|
(defn wrap-json
|
||||||
|
[content]
|
||||||
|
(generate-string {:content content}))
|
||||||
|
|
||||||
|
|
||||||
(defn fetch-hu-post [request]
|
(defn fetch-hu-post [request]
|
||||||
(let [id (-> request :path-params :id)
|
(let [id (-> request :path-params :id)
|
||||||
post-url (str/join ["https://zhuanlan.zhihu.com/p/" id])]
|
post-url (str/join ["https://zhuanlan.zhihu.com/p/" id])]
|
||||||
|
|
||||||
{:status 200
|
{:status 200
|
||||||
:headers {"Content-Type" "text/html; charset=utf-8"}
|
:headers {"Content-Type" "application/json; charset=utf-8"}
|
||||||
:body (-> (client/get post-url)
|
:body (-> (client/get post-url)
|
||||||
:body
|
:body
|
||||||
Jsoup/parse
|
Jsoup/parse
|
||||||
(.getElementsByClass "Post-RichTextContainer")
|
(.getElementsByClass "Post-RichTextContainer")
|
||||||
(.toString))}))
|
(.toString)
|
||||||
|
(wrap-json))}))
|
||||||
|
|
Loading…
Reference in a new issue