OldBill

OldBill gives you a nice ruby wrapper for the police.uk API

Idiomatic Ruby

Concrete classes and methods modelling Police data

Quickstart

@session = OldBill.session.create(:username => "username", :password => "password")

@session.locate(52.6397278, -1.1322921).crimes_by_month

Defaults:

caching                    # => true (boolean)
expires_in                 # => 60*60*24 (seconds)
cache                      # => Moneta::Memory.new "(Moneta Supported Cache) http://github.com/wycats/moneta
server                     # => "api-stage.carboncalculated.com" (string)
api_version                #=>  "v1" (string)
logging                    # => true (boolean)

This is overriding the defaults

@session = OldBill::Session.create(
  :username => "username",
  :password => "password"
  :cache => Moneta::S3.new(:access_key_id => ENV['AWS_ACCESS_KEY_ID'], :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'], :bucket => 'carbon')
  :expires_in => 60*60*24*14
)

This has created a session with S3 Moneta cache that expires in 14 days

Resources

Police API for code: policeapi2.rkh.co.uk/api/docs/

Gemcutter for the gem: gemcutter.org/gems/oldbill

Using OldBill

The API is separated into 2 area neighbourhoods and crime

Forces

@session = OldBill.session.create(:username => "username", :password => "password")
@session.forces

Crimes

@session = OldBill.session.create(:username => "username", :password => "password")

@session.crimes_by_month("leicestershire", "C01")

@session.street_level_crimes(52.6397278, -1.1322921)

@session.crime_categories

Neighbourhoods

@session = OldBill.session.create(:username => "username", :password => "password")

@session.neighbourhoods("leicestershire")

@session.neighbourhood("leicestershire", "C01")

You can then call methods on the neighbourhood

@session.neighbourhood("leicestershire", "C01").street_level_crimes
@session.neighbourhood("leicestershire", "C01").crimes_by_month
@session.neighbourhood("leicestershire", "C01").events
@session.neighbourhood("leicestershire", "C01").police_officers

Locate A Neighbourhood

@session = OldBill.session.create(:username => "username", :password => "password")
@session.locate(52.6397278, -1.1322921)

@session.locate(52.6397278, -1.1322921).events
@session.locate(52.6397278, -1.1322921).crimes_by_month
@session.locate(52.6397278, -1.1322921).police_officers
@session.locate(52.6397278, -1.1322921).full_neighbourhood.street_level_crimes