Stateful cookie and session middleware for Clojure Ring apps.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc
spec/stch/stateful
src/stch/stateful
.gitignore
HISTORY.md
LICENSE
README.md
project.clj

README.md

stch.stateful

Stateful cookie and session middleware for Clojure Ring apps.

Based on code from https://github.com/noir-clojure/lib-noir.

Installation

Add the following to your project dependencies:

[stch-library/stateful "0.1.0"]

API Documentation

http://stch-library.github.io/stateful

Note: This library uses stch.schema. Please refer to that project page for more information regarding type annotations and their meaning.

How to use

Cookies

(ns my.ns
  (:require [stch.stateful.cookies :as cookie
             :refer [wrap-cookies-stateful]]))

(defn handler [req]
  (cookie/get "session-id"))

; or

(defn handler [req]
  (cookie/put! "session-id" "12345"))

(defn site []
  (-> handler
      wrap-cookies-stateful))

; Start some web server
(serve site)

Sessions

(ns my.ns
  (:require [stch.stateful.session :as session
             :refer [wrap-session-stateful]]))

(defn handler [req]
  (session/get "user"))

; or

(defn handler [req]
  (session/put! "user" {:name "Billy" :id 12345}))

(defn site []
  (-> handler
      wrap-session-stateful))

; Start some web server
(run-server (site) {:port 9999})

Combined

(defn site []
  (-> handler
      wrap-session-stateful
      wrap-cookies-stateful))

; Start some web server
(run-server (site) {:port 9999})

Unit-tests

Run "lein spec"