Clojure bindings for the TheyWorkForYou API
To use twfy with Leiningen, add the following to the :dependencies
section of your project.clj
:
[twfy "0.3.2"]
Alternatively, add this to your Maven project's pom.xml
:
<dependency>
<groupId>twfy</groupId>
<artifactId>twfy</artifactId>
<version>0.3.2</version>
</dependency>
The API methods all accept a map of parameters and (optionally, for asynchronous calls) a callback function that will be invoked with the response.
In order to invoke any of the API methods, you'll need to obtain a TWFY API key, which may be supplied to the API methods via a :key entry in the parameters map.
Alternatively, the library can pick up the API key from an environment variable called TWFY_API_KEY, removing the need to supply it with each method invocation. For testing purposes, you can add a reference to lein-environ
to the :plugins
section of your project.clj
, and put the key in your profiles.clj
:
{:dev
{:env
{:twfy-api-key "your-api-key-here"}}
:test
{:env
{:twfy-api-key "your-api-key-here"}}}
From a project REPL (synchronous call):
=> (require '[twfy.core :as twfy])
nil
=> (require '[clojure.pprint :as pp])
nil
=> (pp/pprint (twfy/person {:id 10544 :key "your-api-key-here"}))
({:given_name "Dennis",
:party "Labour",
:left_reason "still_in_office",
:lastupdate "2015-05-08 07:12:04",
:person_id "10544",
:constituency "Bolsover",
:image_width 49,
:member_id "41215",
:title "",
:family_name "Skinner",
:entered_reason "general_election",
:url "/mp/10544/dennis_skinner/bolsover",
:image "/images/mps/10544.jpg",
:entered_house "2015-05-08",
:house "1",
:full_name "Dennis Skinner",
:image_height 59,
:left_house "9999-12-31"}
{:given_name "Dennis",
:party "Labour",
...
Asynchronous call:
=> (twfy/hansard
{:search "Investigatory Powers" :key "your-api-key-here"}
(fn [result] (pp/pprint (first (:rows result)))))
{:body "uk",
:calendar_id "8399",
:chamber "Commons: Main Chamber",
:committee_name "",
:created "2016-03-04 06:25:10",
:debate_type "Legislation",
:deleted "0",
:event_date "2016-03-15",
:extract "<span class=\"hi\">Investigatory Powers</span> Bill - 2nd reading – Theresa May. <span class=\"future_meta\">Legislation</span>",
:gid "8399",
:hdate "2016-03-15",
:hpos "2",
:id "8399",
...
Copyright © 2017 Andrew Baxter
Distributed under the Eclipse Public License, the same as Clojure.