Skip to content

Instantly share code, notes, and snippets.

View ikitommi's full-sized avatar
💭

Tommi Reiman ikitommi

💭
View GitHub Profile
;; play with the latest
lein try metosin/ring-swagger
; nREPL server started on port 63138 on host 127.0.0.1
; REPL-y 0.3.0
; Clojure 1.5.1
; Docs: (doc function-name-here)
; (find-doc "part-of-name-here")
; Source: (source function-name-here)
; Javadoc: (javadoc java-object-or-class-here)
@ikitommi
ikitommi / repl.clj
Created April 7, 2014 05:40
peek into a GET*
lein repl
;; nREPL server started on port 50058 on host 127.0.0.1
;; REPL-y 0.3.0
;; Clojure 1.5.1
;; Docs: (doc function-name-here)
;; (find-doc "part-of-name-here")
;; Source: (source function-name-here)
;; Javadoc: (javadoc java-object-or-class-here)
;; Exit: Control+D or (exit) or (quit)
;; Results: Stored in vars *1, *2, *3, an exception in *e
@ikitommi
ikitommi / repl.clj
Created May 15, 2014 12:49
Stripping invalid keys from a form based on a Schema
(require '[schema.core :as s])
(require '[plumbing.core :refer :all])
(defn path-vals
"Returns vector of tuples containing path vector to the value and the value."
[m]
(letfn
[(pvals [l p m]
(reduce
(fn [l [k v]]
@ikitommi
ikitommi / repl.clj
Created May 27, 2014 12:37
LocalDate coercion
lein try metosin/ring-swagger
;nREPL server started on port 62925 on host 127.0.0.1
;REPL-y 0.3.0
;Clojure 1.5.1
user=> (require '[ring.swagger.schema :refer :all])
nil
user=> (defmodel Neiti {:aika org.joda.time.LocalDate})
@ikitommi
ikitommi / repl.clj
Created June 4, 2014 16:59
Random names with clojure
lein try clj-http
; nREPL server started on port 64184 on host 127.0.0.1
; REPL-y 0.3.0
;Clojure 1.5.1
; Tommi's awesome REPL
(require '[clj-http.client :as client])
(defn random-names [n]
(->> (client/get "http://api.randomuser.me/" {:query-params {:results n :seed "kikkakakkakukka"} :as :json})
@ikitommi
ikitommi / handler.clj
Last active August 29, 2015 14:02
Purging header-params
(ns headers.handler
(:require [compojure.api.sweet :refer :all]
[ring.util.http-response :refer :all]))
;;
;; Create and register a new meta-data handler for compojure-api
;;
(require '[compojure.api.meta :as meta])
(defmethod meta/restructure-param :header-params [_ header-params acc]
@ikitommi
ikitommi / repl.clj
Last active August 29, 2015 14:05
context-based validation with Prismatic Schema
(require '[schema.core :as s])
;; nil
(defn form [m] {:pw1 String :pw2 (s/both String (s/eq (:pw1 m)))})
;; #'user/form
(let [m {:pw1 "kikka" :pw2 "kikka"}] (s/check (form m) m))
;; nil
(let [m {:pw1 "kikka" :pw2 "kukka"}] (s/check (form m) m))
(ns xyz.server
(:require [org.httpkit.server :as server]
[ring.util.http-response :refer :all])
(:gen-class))
(defn app [req] (ok "hello world"))
(defn -main []
(server/run-server app {:port 8080}))
@ikitommi
ikitommi / kebab.clj
Created October 19, 2014 12:15
Kebab-case keywords in nested Clojure data structures
$ lein try camel-snake-kebab
(require '[camel-snake-kebab.core :as kebab])
(require '[clojure.walk :as walk])
(defn postwalk-keywords [f form]
(walk/postwalk #(if (keyword? %) (f %) %) form))
(postwalk-keywords kebab/->kebab-case {[:f_o_o] :a_b :b_a_r {:b_a_z {:y_z #{'([:y_e_s])}}}})
; {:b-a-r {:b-a-z {:y-z #{([:y-e-s])}}}, [:f-o-o] :a-b}
@ikitommi
ikitommi / profiles.clj
Created October 23, 2014 10:27
profiles.clj
{:user {:aliases {"eval" ["run" "-m" "clojure.main/main" "-e"]}
:dependencies [[org.clojure/tools.namespace "0.2.6"]
[aprint "0.1.0"]
[alembic "0.2.1"]
[im.chit/vinyasa "0.2.2"]]
:injections [(require '[vinyasa.inject :as inject])
(inject/in
[vinyasa.inject inject]
[vinyasa.pull pull]