mapbox-sdk 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4292d0f1ca115de9e53c9289a9fb375904e2b49faf028b6a90a523ea35d5c0fb
4
- data.tar.gz: 9dabda32d362ed87adc887589f73cd5fc8025c2cd69bc3f46647423e684623f9
3
+ metadata.gz: 206fa6c2df10182a6dec5a95110961dd3688eb42181af8d3ff8d9264410cb69c
4
+ data.tar.gz: 8e9771a4339e26319e665d665f7f1abdfc3c5a45daca881846e9f4a9f698fe6c
5
5
  SHA512:
6
- metadata.gz: 994336458245a81e414248411bded1b62c03a80cf268bbc1f428d3fefef31b49e60355944dc2c397317cae809cbfde8e39f7dce9aa275c941e49ce92232f9f65
7
- data.tar.gz: 040654e4765ff2fc308eef710669fffa48ad0b7b1d15c908150a0a5c29879be9fad18b340c6fc600bfc1b6806cf1eee0f3bf6292d0a378f4ce3637530020e37f
6
+ metadata.gz: 9708d334fe1a76f02886d8a8da17d862f192a2c1a6705ee90588145c3a7e9d56a4f068d8a5193bf811fd489fc3a7543e07415e516c9adbb2e024dc7bb3361b0b
7
+ data.tar.gz: 8789e29b94f27a624d3d8eb89c809cdb710a8262b72abb5017a125662d2299fc2d08fc2df7cc0d30e35ae6343cd2b6a0e877f08f655d16ba63a61a7f4b2c5f41
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.5.1
4
+ install:
5
+ - bundle install
6
+ script:
7
+ - bundle exec ruby -Itest test/all_tests.rb
8
+ after_success:
9
+ - coveralls
@@ -4,6 +4,18 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [2.1.0] - 2018-12-14
8
+ ### Added
9
+ - Selection of directions profiles
10
+ - Isochrone endpoint
11
+ - New README/docs folder and organization
12
+
13
+ ### Changed
14
+ - Update to restclient 2.0
15
+ - Parameters to requests for directions
16
+
17
+ ### Removed
18
+
7
19
  ## [2.1.0] - 2018-06-07
8
20
  ### Added
9
21
  - Added CHANGELOG.md
data/Gemfile CHANGED
@@ -4,6 +4,10 @@ gemspec
4
4
  if Gem::Version.new(RUBY_VERSION.dup) < Gem::Version.new('1.9.3')
5
5
  gem 'i18n', '< 0.7'
6
6
  gem 'rest-client', '~> 2.0.1'
7
- gem 'activesupport', '~> 3.2'
7
+ gem "activesupport", ">= 4.1.11"
8
8
  gem 'rake', '10.1.0'
9
9
  end
10
+
11
+ group :development, :test do
12
+ gem "coveralls", :require => false
13
+ end
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Coverage Status](https://coveralls.io/repos/github/mapbox/mapbox-sdk-rb/badge.svg?branch=master)](https://coveralls.io/github/mapbox/mapbox-sdk-rb?branch=master)
2
+
1
3
  # mapbox-sdk-ruby
2
4
 
3
5
  The `mapbox-sdk` gem. A ruby interface to [Mapbox APIs](https://www.mapbox.com/developers/api/).
@@ -10,45 +12,17 @@ gem install mapbox-sdk
10
12
 
11
13
  ## Services
12
14
 
13
- * [Geocoding](https://www.mapbox.com/api-documentation/#geocoding)
15
+ * [Geocoding](https://www.mapbox.com/api-documentation/#geocoding) [[docs](https://github.com/mapbox/mapbox-sdk-rb/blob/master/docs/geocoding.md)]
14
16
  * Forward (place names ⇢ longitude, latitude)
15
17
  * Reverse (longitude, latitude ⇢ place names)
16
- * [Directions](https://www.mapbox.com/api-documentation/#directions)
18
+ * [Directions](https://www.mapbox.com/api-documentation/#directions): [[docs](https://github.com/mapbox/mapbox-sdk-rb/blob/master/docs/directions.md)]
17
19
  * Profiles for driving, walking, and cycling
18
- * [Tilequery](https://www.mapbox.com/api-documentation/#tilequery)
19
-
20
- ## Example
21
-
22
- ```rb
23
- require "mapbox-sdk"
24
- Mapbox.access_token = "YOUR_ACCESS_TOKEN"
25
-
26
- # Reverse geocoding
27
- placenames = Mapbox::Geocoder.geocode_reverse({
28
- "latitude" => 38,
29
- "longitude" => -100
30
- })
31
-
32
- # Forward geocoding with optional proximity parameter
33
- places = Mapbox::Geocoder.geocode_forward("Chester, NJ", {:proximity => {:longitude => -74.6968, :latitude => 40.7843}})
34
-
35
- # Driving directions with required profile parameter
36
- drivingDirections = Mapbox::Directions.directions([{
37
- "longitude" => -100,
38
- "latitude" => 38
39
- }, {
40
- "longitude" => -90,
41
- "latitude" => 38
42
- }], "driving")
43
-
44
- # In the above example, you can substitute `driving` for `driving-traffic`, `cycling` or `walking`. For more, [check out the documentation](https://www.mapbox.com/api-documentation/#directions).
45
-
46
- # Tilequery
47
- tilequery = Mapbox::Tilequery.tilequery(mapid, {location}, radius, limit)
48
-
49
- # Example: tilequery = Mapbox::Tilequery.tilequery("mapbox.mapbox-streets-v7", {"longitude" => -100, "latitude" => 38}, 0, 1)
50
- # `Radius` refers to the approximate distance in meters to query for features. Defaults to 0 if left blank. Has no upper bound. Required for queries against point and line data.
51
- # `Limit` refers to the number of features between 1 - 50 to return. Defaults to 5 if left blank.
52
- ```
20
+ * [Tilequery](https://www.mapbox.com/api-documentation/#tilequery): [[docs](https://github.com/mapbox/mapbox-sdk-rb/blob/master/docs/tilequery.md)]
21
+ * [Isochrone](https://www.mapbox.com/api-documentation/#isochrone): [[docs](https://github.com/mapbox/mapbox-sdk-rb/blob/masterdocs/isochrone.md)]
22
+ * Profiles for driving, walking, and cycling
23
+
24
+ ## Testing
25
+
26
+ Run `bundle exec ruby -Itest test/all_tests.rb` or individual tests as needed.
53
27
 
54
28
  Heavily influenced by Stripe's Ruby client, and includes its MIT license.
@@ -0,0 +1,31 @@
1
+ # Directions
2
+
3
+ ```rb
4
+ require "mapbox-sdk"
5
+ Mapbox.access_token = "YOUR_ACCESS_TOKEN"
6
+
7
+ # Driving directions with required profile parameter.
8
+ drivingDirections = Mapbox::Directions.directions([{
9
+ "longitude" => -100,
10
+ "latitude" => 38
11
+ }, {
12
+ "longitude" => -90,
13
+ "latitude" => 38
14
+ }], "driving")
15
+
16
+ # To provide query parameters to the Directions API, such as `geometries`, `language` or `steps`, add those in a Hash as third parameter (find the full list of parameters (here)[https://www.mapbox.com/api-documentation/#retrieve-directions]).
17
+
18
+ # For instance, to use the `geometries` and `voice_instructions` parameter:
19
+ drivingDirections = Mapbox::Directions.directions([{
20
+ "longitude" => -100,
21
+ "latitude" => 38
22
+ }, {
23
+ "longitude" => -90,
24
+ "latitude" => 38
25
+ }], "driving", {
26
+ geometries: "geojson",
27
+ voice_instructions: true
28
+ })
29
+
30
+ # In the above example, you can substitute `driving` for `driving-traffic`, `cycling` or `walking`. For more, [check out the documentation](https://www.mapbox.com/api-documentation/#directions).
31
+ ```
@@ -0,0 +1,15 @@
1
+ # Geocoding
2
+
3
+ ```rb
4
+ require "mapbox-sdk"
5
+ Mapbox.access_token = "YOUR_ACCESS_TOKEN"
6
+
7
+ # Reverse geocoding
8
+ placenames = Mapbox::Geocoder.geocode_reverse({
9
+ "latitude": 38,
10
+ "longitude": -100
11
+ })
12
+
13
+ # Forward geocoding with optional proximity parameter
14
+ places = Mapbox::Geocoder.geocode_forward("Chester, NJ", {:proximity => {:longitude => -74.6968, :latitude => 40.7843}})
15
+ ```
@@ -0,0 +1,11 @@
1
+ # Isochrone
2
+
3
+ ```rb
4
+ require "mapbox-sdk"
5
+ Mapbox.access_token = "YOUR_ACCESS_TOKEN"
6
+
7
+ isochrone = Mapbox::Isochrone.isochrone("walking", "-118.22258,33.99038", {contours_minutes: [5,10,15]})
8
+
9
+ # You must include the contours_minutes parameter, as well as a profile (walking, driving, cycling) and the center point coordinate.
10
+ # Optional parameters are contours_colors, polygons, denoise, and generalize. See more on the API documentation page.
11
+ ```
@@ -0,0 +1,12 @@
1
+ # Tilequery
2
+
3
+ ```rb
4
+ require "mapbox-sdk"
5
+ Mapbox.access_token = "YOUR_ACCESS_TOKEN"
6
+
7
+ tilequery = Mapbox::Tilequery.tilequery(mapid, {location}, radius, limit)
8
+
9
+ # Example: tilequery = Mapbox::Tilequery.tilequery("mapbox.mapbox-streets-v7", {"longitude" => -100, "latitude" => 38}, 0, 1)
10
+ # `Radius` refers to the approximate distance in meters to query for features. Defaults to 0 if left blank. Has no upper bound. Required for queries against point and line data.
11
+ # `Limit` refers to the number of features between 1 - 50 to return. Defaults to 5 if left blank.
12
+ ```
@@ -181,3 +181,4 @@ end
181
181
  require 'mapbox/geocoder'
182
182
  require 'mapbox/directions'
183
183
  require 'mapbox/tilequery'
184
+ require 'mapbox/isochrone'
@@ -2,11 +2,57 @@ module Mapbox
2
2
  class Directions
3
3
  include Mapbox::APIOperations::Request
4
4
  extend Mapbox::HashUtils
5
- def self.directions(waypoints, profile)
5
+
6
+ def self.assemble_params(options={})
7
+ alternatives = options[:alternatives]
8
+ annotations = options[:annotations]
9
+ approaches = options[:approaches]
10
+ banner_instructions = options[:banner_instructions]
11
+ bearings = options[:bearings]
12
+ continue_straight = options[:continue_straight]
13
+ exclude = options[:exclude]
14
+ geometries = options[:geometries]
15
+ language = options[:language]
16
+ overview = options[:overview]
17
+ radiuses = options[:radiuses]
18
+ roundabout_exits = options[:roundabout_exits]
19
+ steps = options[:steps]
20
+ voice_instructions = options[:voice_instructions]
21
+ voice_units = options[:voice_units]
22
+ waypoint_names = options[:waypoint_names]
23
+
24
+ params = ''
25
+ opts = options.select { |key, value| key != :approaches && key != :bearings && key != :radiuses && key != :waypoint_names }
26
+ if opts.length > 0
27
+ params += "#{params.length > 0 ? '&' : '?'}#{URI.encode_www_form(opts)}"
28
+ end
29
+
30
+ if approaches then
31
+ params += "#{params.length > 0 ? '&' : '?'}approaches=#{approaches.join(';')}"
32
+ end
33
+
34
+ if bearings then
35
+ params += "#{params.length > 0 ? '&' : '?'}bearings=#{bearings.map {|p| bearings.join ','}.join ';'}"
36
+ end
37
+
38
+ if radiuses then
39
+ params += "#{params.length > 0 ? '&' : '?'}radiuses=#{radiuses.join ';'}"
40
+ end
41
+
42
+ if waypoint_names then
43
+ params += "#{params.length > 0 ? '&' : '?'}waypoint_names=#{waypoint_names.join ';'}"
44
+ end
45
+
46
+ return params
47
+ end
48
+
49
+ def self.directions(waypoints, profile, options={})
6
50
  formatted_waypoints = waypoints.map {|p| xy_from_hash(p).join ','}.join ';'
51
+ params = self.assemble_params(options)
52
+
7
53
  return request(
8
54
  :get,
9
- "/directions/v5/mapbox/#{profile}/#{formatted_waypoints}.json",
55
+ "/directions/v5/mapbox/#{profile}/#{formatted_waypoints}.json#{params}",
10
56
  nil)
11
57
  end
12
58
  end
@@ -0,0 +1,35 @@
1
+ module Mapbox
2
+ class Isochrone
3
+ include Mapbox::APIOperations::Request
4
+
5
+ def self.assemble_params(options={})
6
+ contours_minutes = options[:contours_minutes]
7
+ contours_colors = options[:contours_colors]
8
+
9
+ params = ''
10
+ opts = options.select { |key, value| key != :contours_minutes && key != :contours_colors }
11
+ if opts.length > 0
12
+ params += "#{params.length > 0 ? '&' : '?'}#{URI.encode_www_form(opts)}"
13
+ end
14
+
15
+ if contours_minutes then
16
+ params += "#{params.length > 0 ? '&' : '?'}contours_minutes=#{contours_minutes.join(',')}"
17
+ end
18
+
19
+ if contours_colors then
20
+ params += "#{params.length > 0 ? '&' : '?'}contours_colors=#{contours_colors.join(',')}"
21
+ end
22
+
23
+ return params
24
+ end
25
+
26
+ def self.isochrone(profile, coordinates, options={})
27
+ params = self.assemble_params(options)
28
+
29
+ return request(
30
+ :get,
31
+ "/isochrone/v1/mapbox/#{profile}/#{coordinates}#{params}",
32
+ nil)
33
+ end
34
+ end
35
+ end
@@ -2,7 +2,7 @@ $:.unshift(File.join(File.dirname(__FILE__), 'lib'))
2
2
 
3
3
  spec = Gem::Specification.new do |s|
4
4
  s.name = 'mapbox-sdk'
5
- s.version = '2.1.0'
5
+ s.version = '2.2.0'
6
6
  s.summary = 'Ruby bindings for the Mapbox API'
7
7
  s.description = ''
8
8
  s.authors = ['Tom MacWright']
@@ -0,0 +1,4 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ Dir[File.dirname(File.absolute_path(__FILE__)) + '/**/*_test.rb'].each {|file| require file }
@@ -16,7 +16,9 @@ module Mapbox
16
16
  :longitude => -90,
17
17
  :latitude => 38
18
18
  }
19
- ], "cycling")
19
+ ], "cycling", {
20
+ geometries: "geojson"
21
+ })
20
22
  assert result
21
23
  end
22
24
  end
@@ -0,0 +1,15 @@
1
+ require 'mapbox'
2
+ require 'test/unit'
3
+ require 'mocha/setup'
4
+ require 'shoulda'
5
+
6
+ module Mapbox
7
+ class IsochroneTest < Test::Unit::TestCase
8
+ should "#isochrone" do
9
+ Mapbox.access_token = ENV["MapboxAccessToken"]
10
+ result = Mapbox::Isochrone.isochrone(
11
+ "walking", "-118.22258,33.99038", {contours_minutes: [5,10,15]})
12
+ assert result
13
+ end
14
+ end
15
+ end
@@ -12,4 +12,4 @@ module Mapbox
12
12
  assert result
13
13
  end
14
14
  end
15
- end
15
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mapbox-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom MacWright
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-16 00:00:00.000000000 Z
11
+ date: 2018-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -87,23 +87,30 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
- - ".circleci/config.yml"
91
90
  - ".gitignore"
91
+ - ".travis.yml"
92
92
  - CHANGELOG.md
93
93
  - Gemfile
94
94
  - LICENSE
95
95
  - README.md
96
96
  - Rakefile
97
+ - docs/directions.md
98
+ - docs/geocoding.md
99
+ - docs/isochrone.md
100
+ - docs/tilequery.md
97
101
  - lib/mapbox-sdk.rb
98
102
  - lib/mapbox.rb
99
103
  - lib/mapbox/api_operations.rb
100
104
  - lib/mapbox/authentication_error.rb
101
105
  - lib/mapbox/directions.rb
102
106
  - lib/mapbox/geocoder.rb
107
+ - lib/mapbox/isochrone.rb
103
108
  - lib/mapbox/tilequery.rb
104
109
  - mapbox-sdk.gemspec
110
+ - test/all_tests.rb
105
111
  - test/directions_test.rb
106
112
  - test/geocoding_test.rb
113
+ - test/isochrone_test.rb
107
114
  - test/mapbox_test.rb
108
115
  - test/tilequery_test.rb
109
116
  homepage: https://mapbox.com/developers
@@ -126,12 +133,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
133
  version: '0'
127
134
  requirements: []
128
135
  rubyforge_project:
129
- rubygems_version: 2.7.7
136
+ rubygems_version: 2.7.8
130
137
  signing_key:
131
138
  specification_version: 4
132
139
  summary: Ruby bindings for the Mapbox API
133
140
  test_files:
141
+ - test/all_tests.rb
134
142
  - test/directions_test.rb
135
143
  - test/geocoding_test.rb
144
+ - test/isochrone_test.rb
136
145
  - test/mapbox_test.rb
137
146
  - test/tilequery_test.rb
@@ -1,40 +0,0 @@
1
- version: 2
2
- jobs:
3
- build:
4
- working_directory: ~/mapbox/mapbox-sdk-rb
5
- parallelism: 1
6
- shell: /bin/bash --login
7
- environment:
8
- CIRCLE_ARTIFACTS: /tmp/circleci-artifacts
9
- CIRCLE_TEST_REPORTS: /tmp/circleci-test-results
10
- docker:
11
- - image: circleci/build-image:ubuntu-14.04-XXL-upstart-1189-5614f37
12
- command: /sbin/init
13
- steps:
14
- - checkout
15
- - run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS
16
- - restore_cache:
17
- keys:
18
- - v1-dep-{{ .Branch }}-
19
- - v1-dep-master-
20
- - v1-dep-
21
- - run: echo -e "export RAILS_ENV=test\nexport RACK_ENV=test" >> $BASH_ENV
22
- - run: 'bundle check --path=vendor/bundle || bundle install --path=vendor/bundle
23
- --jobs=4 --retry=3 '
24
- - save_cache:
25
- key: v1-dep-{{ .Branch }}-{{ epoch }}
26
- paths:
27
- - vendor/bundle
28
- - ~/virtualenvs
29
- - ~/.bundle
30
- - run:
31
- command: bundle exec rake test
32
- environment:
33
- RAILS_ENV: test
34
- RACK_ENV: test
35
- - store_test_results:
36
- path: /tmp/circleci-test-results
37
- - store_artifacts:
38
- path: /tmp/circleci-artifacts
39
- - store_artifacts:
40
- path: /tmp/circleci-test-results