The Arch
A Ruby client for The Arch Climbing Wall API. This is the same API that backs the iOS application.
Crags
TheArch.crags.first
#=> {
"area_id" => "69",
"area_name" => "Biscuit Factory",
"crag_access_info" => "",
"crag_general_info" => "",
"crag_gridref" => "",
"crag_guide_book" => "Circuit List",
"crag_id" => "265",
"crag_info_short" => "A set of 30 problems using the same coloured holds, each in their own grade band.",
"crag_is_favourite" => "",
"crag_latitude" => "51.4939384460449",
"crag_longitude" => "-0.0626349449157715",
"crag_map_id" => "0",
"crag_map_zoom" => "15",
"crag_name" => "Circuit Problems",
"crag_nearest_town" => "Bermondsey",
"crag_parking_info" => "",
"crag_parking_latitude" => "51.4944763183594",
"crag_parking_longitude" => "-0.0621628761291504",
"crag_sector_map_name" => "",
"crag_sort_order" => "10",
"crag_type" => "0",
"date_modified" => "2013-03-03",
"is_enabled" => "",
"tap_rect_in_parent_map" => "",
"version_number" => "1.0",
"weather_provider_code" => "",
"weather_provider_name" => ""
}
Sectors
TheArch.sectors.first
#=> {
"crag_id" => "265",
"date_modified" => "2014-03-04",
"is_enabled" => "",
"map_id" => "0",
"sector_id" => "1006",
"sector_info" => "30 Circuit problems at V0",
"sector_info_short" => "Set Tuesday 4th March by Scott Bishop and Jethro Whaley ",
"sector_map_rect_h" => "0",
"sector_map_rect_w" => "0",
"sector_map_rect_x" => "0",
"sector_map_rect_y" => "0",
"sector_name" => "Spotty Circuit V0",
"sort_order" => "5",
"tap_rect_in_parent_map" => "0,0,0,0",
"topo_name" => "18725d4f-3b53-4940-9b75-dbf9ca40b50e.jpg",
"topo_type_id" => "1",
"version_number" => "1.0"
}
Routes
TheArch.routes.first
#=> {
"area_id" => "69",
"crag_id" => "265",
"date_modified" => "2014-03-14",
"equipper_date" => "",
"equipper_name" => "",
"first_ascent_date" => "",
"first_ascent_name" => "",
"grade_bucket_id" => "0",
"grade_name" => "Boulder",
"grade_type_id" => "8",
"is_enabled" => "",
"rating_name" => "0",
"route_id" => "4264",
"route_info" => "",
"route_length" => "",
"route_name" => "Problem 1",
"route_type" => "Indoor Wall",
"route_type_id" => "4",
"sector_id" => "752",
"sort_order" => "1",
"start_x" => "358",
"start_y" => "377",
"tech_grade" => "Middle",
"version_number" => "1.0"
}
Note
You can access attributes by simply calling methods:
crag.area_name
#=> "Biscuit Factory"
sector.sector_name
#=> "Spotty Circuit V0"
route.tech_grade
#=> "Middle"
Background
The API and these methods were discovered by reverse engineering the iOS application. I used Charles to intercept the HTTPS traffic from my phone and Nokogiri to parse the XML.
Improvements
At present, this library provides a relatively thin wrapper for the API. I plan on implementing first-class objects with type coercion and methods to retrieve images, etc.