mapbox-sdk 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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