Add hn algolia search

This commit is contained in:
Yann Esposito (Yogsototh) 2021-08-25 10:00:30 +02:00
parent 184cd86264
commit ec46de932d
Signed by untrusted user who does not match committer: yogsototh
GPG key ID: 7B19A4C650D59646
2 changed files with 38 additions and 2 deletions

View file

@ -1,5 +1,7 @@
(defproject inmanis "0.1.0-SNAPSHOT"
:description "Fix the Internet of shit"
:url "https://gitea.esy.fun/yogsototh/inmanis-clj"
:dependencies [[org.clojure/clojure "1.10.1"]]
:dependencies [[org.clojure/clojure "1.10.1"]
[remus "0.2.2"]
[metosin/malli "0.6.1"]]
:repl-options {:init-ns inmanis.core})

View file

@ -1,4 +1,38 @@
(ns inmanis.core)
(ns inmanis.core
(:require [remus :refer [parse-url]]
[clojure.string :as string]
[malli.core :as m]
))
(defn get-item-url [id] (format "http://hn.algolia.com/api/v1/items/%s" id))
(defn get-user-url [username] (format "http://hn.algolia.com/api/v1/users/%s" username))
(def HNQuery
[:map
[:query string?]
[:tags (fn [t]
(or (#{:story :comment :poll :pollopt :show_hn :ask_hn :front_page} t)
(string/starts-with? t "author_:")
(string/starts-with? t "story_:")))]
[:numericFilters
[:vector [:re #"(created_at_i|points|comments)(<|<=|=|>|>=)\d+"]]]
[:page int?]])
(def HTTPQuery
[:map
[:url string?]
[:query-params {:optional true} any?]
[:form-params {:optional true} any?]])
(defn search [hn-query]
{:url "http://hn.algolia.com/api/v1/search"
:query-params hn-query})
(m/=> search [:=> [:cat HNQuery] HTTPQuery])
(defn retrieve-hn-top []
(let [resp (parse-url "https://hnrss.org/newest?points=1200")]
(count (get-in resp [:feed :entries]))))
(defn foo
"I don't do a whole lot."