From 3449e31d91c556371f74461773c934093708b63f Mon Sep 17 00:00:00 2001 From: Morgan Aldridge Date: Sat, 11 May 2019 13:48:25 -0400 Subject: [PATCH 01/11] WIP: add support for Tokens API endpoints, specifically list tokens & initial test (#41) --- lib/mapbox.rb | 3 ++- lib/mapbox/tokens.rb | 23 +++++++++++++++++++++++ test/tokens_test.rb | 15 +++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 lib/mapbox/tokens.rb create mode 100644 test/tokens_test.rb diff --git a/lib/mapbox.rb b/lib/mapbox.rb index fe17db0..9851207 100644 --- a/lib/mapbox.rb +++ b/lib/mapbox.rb @@ -184,4 +184,5 @@ def xy_from_hash h = {} require 'mapbox/isochrone' require 'mapbox/matrix' require 'mapbox/map_matching' -require 'mapbox/optimization' \ No newline at end of file +require 'mapbox/optimization' +require 'mapbox/tokens' \ No newline at end of file diff --git a/lib/mapbox/tokens.rb b/lib/mapbox/tokens.rb new file mode 100644 index 0000000..137c761 --- /dev/null +++ b/lib/mapbox/tokens.rb @@ -0,0 +1,23 @@ +require 'rest-client' +require 'json' +require 'uri' + +module Mapbox + class Tokens + include Mapbox::APIOperations::Request + extend Mapbox::HashUtils + + def self.assemble_params(options={}) + + end + + def self.tokens_list(username, options={}) + params = self.assemble_params(options) + + return request( + :get, + "/tokens/v2/#{URI.escape(username)}", + nil) + end + end +end \ No newline at end of file diff --git a/test/tokens_test.rb b/test/tokens_test.rb new file mode 100644 index 0000000..7f7b45c --- /dev/null +++ b/test/tokens_test.rb @@ -0,0 +1,15 @@ +require 'mapbox' +require 'test/unit' +require 'mocha/setup' +require 'shoulda' + +module Mapbox + class TokensTest < Test::Unit::TestCase + should "#tokens_list" do + Mapbox.access_token = ENV["MapboxAccessToken"] + result = Mapbox::Tokens.tokens_list(ENV["MapboxUsername"]) + assert result + end + + end +end \ No newline at end of file From 75e606d406f5bd3b5266a5b96d0a42e10bba140d Mon Sep 17 00:00:00 2001 From: Morgan Aldridge Date: Sat, 11 May 2019 14:15:30 -0400 Subject: [PATCH 02/11] WIP: add support for Tekens API endpoints, specifically list token parameters & more tests (#41) --- lib/mapbox/tokens.rb | 9 +++++++-- test/tokens_test.rb | 28 ++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/lib/mapbox/tokens.rb b/lib/mapbox/tokens.rb index 137c761..eae2100 100644 --- a/lib/mapbox/tokens.rb +++ b/lib/mapbox/tokens.rb @@ -8,7 +8,12 @@ class Tokens extend Mapbox::HashUtils def self.assemble_params(options={}) - + params = '' + if options.length > 0 + params += "#{params.length > 0 ? '&' : '?'}#{URI.encode_www_form(options)}" + end + + return params end def self.tokens_list(username, options={}) @@ -16,7 +21,7 @@ def self.tokens_list(username, options={}) return request( :get, - "/tokens/v2/#{URI.escape(username)}", + "/tokens/v2/#{URI.escape(username)}#{params}", nil) end end diff --git a/test/tokens_test.rb b/test/tokens_test.rb index 7f7b45c..975380e 100644 --- a/test/tokens_test.rb +++ b/test/tokens_test.rb @@ -11,5 +11,33 @@ class TokensTest < Test::Unit::TestCase assert result end + should "#tokens_list (include true default param)" do + Mapbox.access_token = ENV["MapboxAccessToken"] + result = Mapbox::Tokens.tokens_list(ENV["MapboxUsername"], {:default => true}) + assert result + assert Mapbox.request_opts[:url].include? '?default=true' + end + + should "#tokens_list (include false default param)" do + Mapbox.access_token = ENV["MapboxAccessToken"] + result = Mapbox::Tokens.tokens_list(ENV["MapboxUsername"], {:default => false}) + assert result + assert Mapbox.request_opts[:url].include? '?default=false' + end + + should "#tokens_list (include public key usage param)" do + Mapbox.access_token = ENV["MapboxAccessToken"] + result = Mapbox::Tokens.tokens_list(ENV["MapboxUsername"], {:usage => "pk"}) + assert result + assert Mapbox.request_opts[:url].include? '?usage=pk' + end + + should "#tokens_list (include private key usage param)" do + Mapbox.access_token = ENV["MapboxAccessToken"] + result = Mapbox::Tokens.tokens_list(ENV["MapboxUsername"], {:usage => "sk"}) + assert result + assert Mapbox.request_opts[:url].include? '?usage=sk' + end + end end \ No newline at end of file From 2d6aae9a0d9669261960350848cc26826716c8b3 Mon Sep 17 00:00:00 2001 From: Morgan Aldridge Date: Mon, 13 May 2019 16:37:43 -0400 Subject: [PATCH 03/11] WIP: add support for Tokens API endpoints, specifically create token & test (#41) --- lib/mapbox.rb | 14 +++++++++++--- lib/mapbox/tokens.rb | 12 ++++++++++++ test/tokens_test.rb | 7 +++++++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/lib/mapbox.rb b/lib/mapbox.rb index 9851207..f55e93c 100644 --- a/lib/mapbox.rb +++ b/lib/mapbox.rb @@ -17,6 +17,7 @@ class << self def self.request(method, url, api_key, params={}, headers={}, api_base_url=nil) api_base_url = api_base_url || @api_base params = params || {} + headers = headers || {} unless access_token ||= @access_token raise AuthenticationError.new('No API key provided. ' \ @@ -28,13 +29,19 @@ def self.request(method, url, api_key, params={}, headers={}, api_base_url=nil) url = api_base_url + url - params['access_token'] = access_token - case method.to_s.downcase.to_sym when :get, :head, :delete + params['access_token'] = access_token + # Make params into GET parameters url += "#{URI.parse(url).query ? '&' : '?'}#{uri_encode(params)}" if params && params.any? payload = nil + else + url += "#{URI.parse(url).query ? '&' : '?'}#{uri_encode({'access_token' => access_token})}" + payload = params.to_json + headers.update( + :content_type => :json, + :accept => :json) end @request_opts = {:verify_ssl => OpenSSL::SSL::VERIFY_PEER, @@ -45,7 +52,8 @@ def self.request(method, url, api_key, params={}, headers={}, api_base_url=nil) :open_timeout => 30, :payload => payload, :url => url, - :timeout => 80) + :timeout => 80, + :headers => headers) begin response = execute_request(@request_opts) diff --git a/lib/mapbox/tokens.rb b/lib/mapbox/tokens.rb index eae2100..d13783b 100644 --- a/lib/mapbox/tokens.rb +++ b/lib/mapbox/tokens.rb @@ -24,5 +24,17 @@ def self.tokens_list(username, options={}) "/tokens/v2/#{URI.escape(username)}#{params}", nil) end + + def self.token_create(username, note, scopes, allowedUrls=[]) + scopes = scopes || [] + + params = {'note' => note, 'scopes' => scopes} + params.update('allowedUrls' => allowedUrls) if allowedUrls && allowedUrls.any? + + return request( + :post, + "/tokens/v2/#{URI.escape(username)}", + params) + end end end \ No newline at end of file diff --git a/test/tokens_test.rb b/test/tokens_test.rb index 975380e..7f76acd 100644 --- a/test/tokens_test.rb +++ b/test/tokens_test.rb @@ -39,5 +39,12 @@ class TokensTest < Test::Unit::TestCase assert Mapbox.request_opts[:url].include? '?usage=sk' end + should "#token_create" do + Mapbox.access_token = ENV["MapboxAccessToken"] + result = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) + assert result + assert Mapbox.request_opts[:payload].include? '"note":"mapbox-sdk-rb test"' + end + end end \ No newline at end of file From e530f108be99563aa3ffde51827fd0bf310473e3 Mon Sep 17 00:00:00 2001 From: Morgan Aldridge Date: Tue, 14 May 2019 14:50:36 -0400 Subject: [PATCH 04/11] WIP: add support for Tokens API endpoints, specifically more create token test (#41) --- test/tokens_test.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/test/tokens_test.rb b/test/tokens_test.rb index 7f76acd..00d4061 100644 --- a/test/tokens_test.rb +++ b/test/tokens_test.rb @@ -43,8 +43,28 @@ class TokensTest < Test::Unit::TestCase Mapbox.access_token = ENV["MapboxAccessToken"] result = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) assert result + end + + should "#token_create (include note param)" do + Mapbox.access_token = ENV["MapboxAccessToken"] + result = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) + assert result assert Mapbox.request_opts[:payload].include? '"note":"mapbox-sdk-rb test"' end + should "#token_create (include scopes param)" do + Mapbox.access_token = ENV["MapboxAccessToken"] + result = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", ["tokens:read"]) + assert result + assert Mapbox.request_opts[:payload].include? '"scopes":["tokens:read"' + end + + should "#token_create (include allowed URLs param)" do + Mapbox.access_token = ENV["MapboxAccessToken"] + result = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", [], ["example.com"]) + assert result + assert Mapbox.request_opts[:payload].include? '"allowedUrls":["example.com"' + end + end end \ No newline at end of file From edaf096f9d120e6da44ee5ea683c74a9017c7ffb Mon Sep 17 00:00:00 2001 From: Morgan Aldridge Date: Tue, 14 May 2019 17:06:04 -0400 Subject: [PATCH 05/11] WIP: add support for Tokens API endpoints, specifically delete token & test (#41) --- lib/mapbox.rb | 2 +- lib/mapbox/tokens.rb | 6 ++++++ test/tokens_test.rb | 11 +++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/mapbox.rb b/lib/mapbox.rb index f55e93c..5858379 100644 --- a/lib/mapbox.rb +++ b/lib/mapbox.rb @@ -99,7 +99,7 @@ def self.parse(response) # some library out there that makes symbolize_names not work. response = JSON.parse(response.body) rescue JSON::ParserError - raise general_api_error(response.code, response.body) + raise general_api_error(response.code, response.body) unless response.body.empty? && (response.code >= 200) && (response.code < 300) end response diff --git a/lib/mapbox/tokens.rb b/lib/mapbox/tokens.rb index d13783b..8cad577 100644 --- a/lib/mapbox/tokens.rb +++ b/lib/mapbox/tokens.rb @@ -36,5 +36,11 @@ def self.token_create(username, note, scopes, allowedUrls=[]) "/tokens/v2/#{URI.escape(username)}", params) end + + def self.token_delete(username, token_id) + return request( + :delete, + "/tokens/v2/#{URI.escape(username)}/#{URI.escape(token_id)}") + end end end \ No newline at end of file diff --git a/test/tokens_test.rb b/test/tokens_test.rb index 00d4061..1a07557 100644 --- a/test/tokens_test.rb +++ b/test/tokens_test.rb @@ -43,6 +43,7 @@ class TokensTest < Test::Unit::TestCase Mapbox.access_token = ENV["MapboxAccessToken"] result = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) assert result + Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result end should "#token_create (include note param)" do @@ -50,6 +51,7 @@ class TokensTest < Test::Unit::TestCase result = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) assert result assert Mapbox.request_opts[:payload].include? '"note":"mapbox-sdk-rb test"' + Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result end should "#token_create (include scopes param)" do @@ -57,6 +59,7 @@ class TokensTest < Test::Unit::TestCase result = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", ["tokens:read"]) assert result assert Mapbox.request_opts[:payload].include? '"scopes":["tokens:read"' + Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result end should "#token_create (include allowed URLs param)" do @@ -64,6 +67,14 @@ class TokensTest < Test::Unit::TestCase result = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", [], ["example.com"]) assert result assert Mapbox.request_opts[:payload].include? '"allowedUrls":["example.com"' + Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result + end + + should "#token_delete" do + Mapbox.access_token = ENV["MapboxAccessToken"] + new_token = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) + result = Mapbox::Tokens.token_delete(ENV["MapboxUsername"], new_token.first["id"]) + assert result end end From c5f324a499474da2a4eff23181355f9104cb6583 Mon Sep 17 00:00:00 2001 From: Morgan Aldridge Date: Tue, 14 May 2019 17:19:46 -0400 Subject: [PATCH 06/11] WIP: add support for Tokens API endpoints, specifically update token & initial test (#41) --- lib/mapbox/tokens.rb | 12 ++++++++++++ test/tokens_test.rb | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/lib/mapbox/tokens.rb b/lib/mapbox/tokens.rb index 8cad577..1570f6d 100644 --- a/lib/mapbox/tokens.rb +++ b/lib/mapbox/tokens.rb @@ -42,5 +42,17 @@ def self.token_delete(username, token_id) :delete, "/tokens/v2/#{URI.escape(username)}/#{URI.escape(token_id)}") end + + def self.token_update(username, token_id, note, scopes, allowedUrls=[]) + scopes = scopes || [] + + params = {'note' => note, 'scopes' => scopes} + params.update('allowedUrls' => allowedUrls) if allowedUrls && allowedUrls.any? + + return request( + :patch, + "/tokens/v2/#{URI.escape(username)}/#{URI.escape(token_id)}", + params) + end end end \ No newline at end of file diff --git a/test/tokens_test.rb b/test/tokens_test.rb index 1a07557..2fb9ac3 100644 --- a/test/tokens_test.rb +++ b/test/tokens_test.rb @@ -77,5 +77,12 @@ class TokensTest < Test::Unit::TestCase assert result end + should "#token_update" do + Mapbox.access_token = ENV["MapboxAccessToken"] + new_token = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) + result = Mapbox::Tokens.token_update(ENV["MapboxUsername"], new_token.first["id"],"mapbox-sdk-rb test (updated)",[]) + assert result + Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result + end end end \ No newline at end of file From dba5c586a8ef0f0a2945ba91664de4258b801df1 Mon Sep 17 00:00:00 2001 From: Morgan Aldridge Date: Tue, 14 May 2019 17:36:24 -0400 Subject: [PATCH 07/11] WIP: add support for Tokens API endpoints, specifically more update token tests (#41) --- test/tokens_test.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/tokens_test.rb b/test/tokens_test.rb index 2fb9ac3..be7b69c 100644 --- a/test/tokens_test.rb +++ b/test/tokens_test.rb @@ -84,5 +84,23 @@ class TokensTest < Test::Unit::TestCase assert result Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result end + + should "#token_update (include scopes param)" do + Mapbox.access_token = ENV["MapboxAccessToken"] + new_token = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", ["tokens:read"]) + result = Mapbox::Tokens.token_update(ENV["MapboxUsername"], new_token.first["id"],"mapbox-sdk-rb test (updated)",["tokens:write"]) + assert result + assert Mapbox.request_opts[:payload].include? '"scopes":["tokens:write"' + Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result + end + + should "#token_update (include allowed URLs param)" do + Mapbox.access_token = ENV["MapboxAccessToken"] + new_token = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) + result = Mapbox::Tokens.token_update(ENV["MapboxUsername"], new_token.first["id"],"mapbox-sdk-rb test (updated)",[], ["example.com"]) + assert result + assert Mapbox.request_opts[:payload].include? '"allowedUrls":["example.com"' + Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result + end end end \ No newline at end of file From c0bb2e7db07651f261589a71fb19f0b635318966 Mon Sep 17 00:00:00 2001 From: Morgan Aldridge Date: Wed, 15 May 2019 18:55:47 -0400 Subject: [PATCH 08/11] WIP: add support for Tokens API endpoints, specfically get token & test (#41) --- lib/mapbox/tokens.rb | 7 +++++++ test/tokens_test.rb | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/lib/mapbox/tokens.rb b/lib/mapbox/tokens.rb index 1570f6d..e7f6ca6 100644 --- a/lib/mapbox/tokens.rb +++ b/lib/mapbox/tokens.rb @@ -25,6 +25,13 @@ def self.tokens_list(username, options={}) nil) end + def self.token_get() + return request( + :get, + "/tokens/v2/", + nil) + end + def self.token_create(username, note, scopes, allowedUrls=[]) scopes = scopes || [] diff --git a/test/tokens_test.rb b/test/tokens_test.rb index be7b69c..6558650 100644 --- a/test/tokens_test.rb +++ b/test/tokens_test.rb @@ -39,6 +39,12 @@ class TokensTest < Test::Unit::TestCase assert Mapbox.request_opts[:url].include? '?usage=sk' end + should "#token_get" do + Mapbox.access_token = ENV["MapboxAccessToken"] + result = Mapbox::Tokens.token_get + assert result + end + should "#token_create" do Mapbox.access_token = ENV["MapboxAccessToken"] result = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) From ed3dc83e3acaecc176c3685ac7686bcaf0525c4b Mon Sep 17 00:00:00 2001 From: Morgan Aldridge Date: Wed, 15 May 2019 19:01:06 -0400 Subject: [PATCH 09/11] WIP: add support for Tokens API endpoints, specifically list scopes & test (#41) --- lib/mapbox/tokens.rb | 7 +++++++ test/tokens_test.rb | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/lib/mapbox/tokens.rb b/lib/mapbox/tokens.rb index e7f6ca6..8e121bd 100644 --- a/lib/mapbox/tokens.rb +++ b/lib/mapbox/tokens.rb @@ -61,5 +61,12 @@ def self.token_update(username, token_id, note, scopes, allowedUrls=[]) "/tokens/v2/#{URI.escape(username)}/#{URI.escape(token_id)}", params) end + + def self.scopes_list(username) + return request( + :get, + "/scopes/v1/#{URI.escape(username)}", + nil) + end end end \ No newline at end of file diff --git a/test/tokens_test.rb b/test/tokens_test.rb index 6558650..eafbeae 100644 --- a/test/tokens_test.rb +++ b/test/tokens_test.rb @@ -108,5 +108,11 @@ class TokensTest < Test::Unit::TestCase assert Mapbox.request_opts[:payload].include? '"allowedUrls":["example.com"' Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result end + + should "#scopes_list" do + Mapbox.access_token = ENV["MapboxAccessToken"] + result = Mapbox::Tokens.scopes_list(ENV["MapboxUsername"]) + assert result + end end end \ No newline at end of file From 46a6d785d236d4e8e509214d7f1bf63105885cd2 Mon Sep 17 00:00:00 2001 From: Morgan Aldridge Date: Wed, 15 May 2019 19:47:34 -0400 Subject: [PATCH 10/11] WIP: add support for Tokens API endpoints, specifically add documentation (#41) --- README.md | 3 +++ docs/tokens.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 docs/tokens.md diff --git a/README.md b/README.md index 662e4f9..8f558eb 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,9 @@ gem install mapbox-sdk * Profiles for driving, driving-traffic, walking, and cycling * [Optimization](https://docs.mapbox.com/api/navigation/#optimization): [[docs](https://github.com/mapbox/mapbox-sdk-rb/blob/master/docs/optimization.md)] * Profiles for driving, driving-traffic, walking, and cycling +* [Tokens](https://docs.mapbox.com/api/accounts/#tokens) [[docs](https://github.com/mapbox/mapbox-sdk-rb/blob/master/docs/tokens.md)] + * Get, create, update, and delete + * Get scopes ## Testing diff --git a/docs/tokens.md b/docs/tokens.md new file mode 100644 index 0000000..d374ab0 --- /dev/null +++ b/docs/tokens.md @@ -0,0 +1,45 @@ +# Tokens + +```rb +require "mapbox-sdk" +Mapbox.access_token = "YOUR_ACCESS_TOKEN" + +# Get token +token = Mapbox::Tokens.token_get + +# List token's scopes +scopes = Mapbox::Tokens("YOUR_USERNAME") + +# List all tokens (your token must have the 'tokens:read' scope) +tokens = Mapbox::Tokens.tokens_list("YOUR_USERNAME") + +# List only default public token +default_token = Mapbox::Tokens.tokens_list("YOUR_USERNAME", {:default => true}) + +# List tokens except default public token +tokens = Mapbox::Tokens.tokens_list("YOUR_USERNAME", {:default => false}) + +# List public tokens +public_tokens = Mapbox::Tokens.tokens_list("YOUR_USERNAME", {:usage => 'pk'}) + +# List secret tokens +secret_tokens = Mapbox::Tokens.tokens_list("YOUR_USERNAME", {:usage => 'sk'}) + +# Create a public token (your existing token must have the 'tokens:read' & 'tokens:write' scopes in addition to any scopes you intend to set on your new token) +public_token = Mapbox::Tokens.token_create("YOUR_USERNAME", "auto-generated public token", ["styles:tiles", "styles:read", "fonts:read", "datasets:read", "vision:read"]) + +# Create a public token with use restricted to a particular domain name +public_token = Mapbox::Tokens.token_create("YOUR_USERNAME", "auto-generated public token", ["styles:tiles", "styles:read", "fonts:read", "datasets:read", "vision:read"], ["example.com"]) + +# Create a secret token (your existing token must have the 'tokens:read' & 'tokens:write' scopes in addition to any scopes you intend to set on your new token) +public_token = Mapbox::Tokens.token_create("YOUR_USERNAME", "auto-generated secret token", ["scopes:list", "tokens:read", "tokens:write"]) + +# Delete a token +Mapbox::Tokens.token_delete("YOUR_USERNAME", "TOKEN_ID") + +# Update a public token's name/note & scopes (no "vision:read" scope) +updated_token = Mapbox::Tokens.token_update("YOUR_USERNAME", "TOKEN_ID", "updated token", ["styles:tiles", "styles:read", "fonts:read", "datasets:read"]) + +# Update a public token's name/note, scopes, and allowed URLs +updated_token = Mapbox::Tokens.token_update("YOUR_USERNAME", "TOKEN_ID", "updated token", ["styles:tiles", "styles:read", "fonts:read", "datasets:read"], ["example.com"]) +``` \ No newline at end of file From cd41fe0919f3d5c9423ce07d966f2e37d1280f05 Mon Sep 17 00:00:00 2001 From: Morgan Aldridge Date: Thu, 16 May 2019 15:48:57 -0400 Subject: [PATCH 11/11] WIP: add support for Tokens API endpoints, specifically rename methods to match JS SDK (#41) --- docs/tokens.md | 26 +++++++++++----------- lib/mapbox/tokens.rb | 12 +++++----- test/tokens_test.rb | 52 ++++++++++++++++++++++---------------------- 3 files changed, 45 insertions(+), 45 deletions(-) diff --git a/docs/tokens.md b/docs/tokens.md index d374ab0..e5fa2e3 100644 --- a/docs/tokens.md +++ b/docs/tokens.md @@ -5,41 +5,41 @@ require "mapbox-sdk" Mapbox.access_token = "YOUR_ACCESS_TOKEN" # Get token -token = Mapbox::Tokens.token_get +token = Mapbox::Tokens.get_token # List token's scopes -scopes = Mapbox::Tokens("YOUR_USERNAME") +scopes = Mapbox::Tokens.list_scopes("YOUR_USERNAME") # List all tokens (your token must have the 'tokens:read' scope) -tokens = Mapbox::Tokens.tokens_list("YOUR_USERNAME") +tokens = Mapbox::Tokens.list_tokens("YOUR_USERNAME") # List only default public token -default_token = Mapbox::Tokens.tokens_list("YOUR_USERNAME", {:default => true}) +default_token = Mapbox::Tokens.list_tokens("YOUR_USERNAME", {:default => true}) # List tokens except default public token -tokens = Mapbox::Tokens.tokens_list("YOUR_USERNAME", {:default => false}) +tokens = Mapbox::Tokens.list_tokens("YOUR_USERNAME", {:default => false}) # List public tokens -public_tokens = Mapbox::Tokens.tokens_list("YOUR_USERNAME", {:usage => 'pk'}) +public_tokens = Mapbox::Tokens.list_tokens("YOUR_USERNAME", {:usage => 'pk'}) # List secret tokens -secret_tokens = Mapbox::Tokens.tokens_list("YOUR_USERNAME", {:usage => 'sk'}) +secret_tokens = Mapbox::Tokens.list_tokens("YOUR_USERNAME", {:usage => 'sk'}) # Create a public token (your existing token must have the 'tokens:read' & 'tokens:write' scopes in addition to any scopes you intend to set on your new token) -public_token = Mapbox::Tokens.token_create("YOUR_USERNAME", "auto-generated public token", ["styles:tiles", "styles:read", "fonts:read", "datasets:read", "vision:read"]) +public_token = Mapbox::Tokens.create_token("YOUR_USERNAME", "auto-generated public token", ["styles:tiles", "styles:read", "fonts:read", "datasets:read", "vision:read"]) # Create a public token with use restricted to a particular domain name -public_token = Mapbox::Tokens.token_create("YOUR_USERNAME", "auto-generated public token", ["styles:tiles", "styles:read", "fonts:read", "datasets:read", "vision:read"], ["example.com"]) +public_token = Mapbox::Tokens.create_token("YOUR_USERNAME", "auto-generated public token", ["styles:tiles", "styles:read", "fonts:read", "datasets:read", "vision:read"], ["example.com"]) # Create a secret token (your existing token must have the 'tokens:read' & 'tokens:write' scopes in addition to any scopes you intend to set on your new token) -public_token = Mapbox::Tokens.token_create("YOUR_USERNAME", "auto-generated secret token", ["scopes:list", "tokens:read", "tokens:write"]) +public_token = Mapbox::Tokens.create_token("YOUR_USERNAME", "auto-generated secret token", ["scopes:list", "tokens:read", "tokens:write"]) # Delete a token -Mapbox::Tokens.token_delete("YOUR_USERNAME", "TOKEN_ID") +Mapbox::Tokens.delete_token("YOUR_USERNAME", "TOKEN_ID") # Update a public token's name/note & scopes (no "vision:read" scope) -updated_token = Mapbox::Tokens.token_update("YOUR_USERNAME", "TOKEN_ID", "updated token", ["styles:tiles", "styles:read", "fonts:read", "datasets:read"]) +updated_token = Mapbox::Tokens.update_token("YOUR_USERNAME", "TOKEN_ID", "updated token", ["styles:tiles", "styles:read", "fonts:read", "datasets:read"]) # Update a public token's name/note, scopes, and allowed URLs -updated_token = Mapbox::Tokens.token_update("YOUR_USERNAME", "TOKEN_ID", "updated token", ["styles:tiles", "styles:read", "fonts:read", "datasets:read"], ["example.com"]) +updated_token = Mapbox::Tokens.update_token("YOUR_USERNAME", "TOKEN_ID", "updated token", ["styles:tiles", "styles:read", "fonts:read", "datasets:read"], ["example.com"]) ``` \ No newline at end of file diff --git a/lib/mapbox/tokens.rb b/lib/mapbox/tokens.rb index 8e121bd..5eb1f61 100644 --- a/lib/mapbox/tokens.rb +++ b/lib/mapbox/tokens.rb @@ -16,7 +16,7 @@ def self.assemble_params(options={}) return params end - def self.tokens_list(username, options={}) + def self.list_tokens(username, options={}) params = self.assemble_params(options) return request( @@ -25,14 +25,14 @@ def self.tokens_list(username, options={}) nil) end - def self.token_get() + def self.get_token() return request( :get, "/tokens/v2/", nil) end - def self.token_create(username, note, scopes, allowedUrls=[]) + def self.create_token(username, note, scopes, allowedUrls=[]) scopes = scopes || [] params = {'note' => note, 'scopes' => scopes} @@ -44,13 +44,13 @@ def self.token_create(username, note, scopes, allowedUrls=[]) params) end - def self.token_delete(username, token_id) + def self.delete_token(username, token_id) return request( :delete, "/tokens/v2/#{URI.escape(username)}/#{URI.escape(token_id)}") end - def self.token_update(username, token_id, note, scopes, allowedUrls=[]) + def self.update_token(username, token_id, note, scopes, allowedUrls=[]) scopes = scopes || [] params = {'note' => note, 'scopes' => scopes} @@ -62,7 +62,7 @@ def self.token_update(username, token_id, note, scopes, allowedUrls=[]) params) end - def self.scopes_list(username) + def self.list_scopes(username) return request( :get, "/scopes/v1/#{URI.escape(username)}", diff --git a/test/tokens_test.rb b/test/tokens_test.rb index eafbeae..8129897 100644 --- a/test/tokens_test.rb +++ b/test/tokens_test.rb @@ -7,111 +7,111 @@ module Mapbox class TokensTest < Test::Unit::TestCase should "#tokens_list" do Mapbox.access_token = ENV["MapboxAccessToken"] - result = Mapbox::Tokens.tokens_list(ENV["MapboxUsername"]) + result = Mapbox::Tokens.list_tokens(ENV["MapboxUsername"]) assert result end should "#tokens_list (include true default param)" do Mapbox.access_token = ENV["MapboxAccessToken"] - result = Mapbox::Tokens.tokens_list(ENV["MapboxUsername"], {:default => true}) + result = Mapbox::Tokens.list_tokens(ENV["MapboxUsername"], {:default => true}) assert result assert Mapbox.request_opts[:url].include? '?default=true' end should "#tokens_list (include false default param)" do Mapbox.access_token = ENV["MapboxAccessToken"] - result = Mapbox::Tokens.tokens_list(ENV["MapboxUsername"], {:default => false}) + result = Mapbox::Tokens.list_tokens(ENV["MapboxUsername"], {:default => false}) assert result assert Mapbox.request_opts[:url].include? '?default=false' end should "#tokens_list (include public key usage param)" do Mapbox.access_token = ENV["MapboxAccessToken"] - result = Mapbox::Tokens.tokens_list(ENV["MapboxUsername"], {:usage => "pk"}) + result = Mapbox::Tokens.list_tokens(ENV["MapboxUsername"], {:usage => "pk"}) assert result assert Mapbox.request_opts[:url].include? '?usage=pk' end should "#tokens_list (include private key usage param)" do Mapbox.access_token = ENV["MapboxAccessToken"] - result = Mapbox::Tokens.tokens_list(ENV["MapboxUsername"], {:usage => "sk"}) + result = Mapbox::Tokens.list_tokens(ENV["MapboxUsername"], {:usage => "sk"}) assert result assert Mapbox.request_opts[:url].include? '?usage=sk' end should "#token_get" do Mapbox.access_token = ENV["MapboxAccessToken"] - result = Mapbox::Tokens.token_get + result = Mapbox::Tokens.get_token assert result end should "#token_create" do Mapbox.access_token = ENV["MapboxAccessToken"] - result = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) + result = Mapbox::Tokens.create_token(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) assert result - Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result + Mapbox::Tokens.delete_token(ENV["MapboxUsername"], result.first["id"]) if result end should "#token_create (include note param)" do Mapbox.access_token = ENV["MapboxAccessToken"] - result = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) + result = Mapbox::Tokens.create_token(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) assert result assert Mapbox.request_opts[:payload].include? '"note":"mapbox-sdk-rb test"' - Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result + Mapbox::Tokens.delete_token(ENV["MapboxUsername"], result.first["id"]) if result end should "#token_create (include scopes param)" do Mapbox.access_token = ENV["MapboxAccessToken"] - result = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", ["tokens:read"]) + result = Mapbox::Tokens.create_token(ENV["MapboxUsername"], "mapbox-sdk-rb test", ["tokens:read"]) assert result assert Mapbox.request_opts[:payload].include? '"scopes":["tokens:read"' - Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result + Mapbox::Tokens.delete_token(ENV["MapboxUsername"], result.first["id"]) if result end should "#token_create (include allowed URLs param)" do Mapbox.access_token = ENV["MapboxAccessToken"] - result = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", [], ["example.com"]) + result = Mapbox::Tokens.create_token(ENV["MapboxUsername"], "mapbox-sdk-rb test", [], ["example.com"]) assert result assert Mapbox.request_opts[:payload].include? '"allowedUrls":["example.com"' - Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result + Mapbox::Tokens.delete_token(ENV["MapboxUsername"], result.first["id"]) if result end should "#token_delete" do Mapbox.access_token = ENV["MapboxAccessToken"] - new_token = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) - result = Mapbox::Tokens.token_delete(ENV["MapboxUsername"], new_token.first["id"]) + new_token = Mapbox::Tokens.create_token(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) + result = Mapbox::Tokens.delete_token(ENV["MapboxUsername"], new_token.first["id"]) assert result end should "#token_update" do Mapbox.access_token = ENV["MapboxAccessToken"] - new_token = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) - result = Mapbox::Tokens.token_update(ENV["MapboxUsername"], new_token.first["id"],"mapbox-sdk-rb test (updated)",[]) + new_token = Mapbox::Tokens.create_token(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) + result = Mapbox::Tokens.update_token(ENV["MapboxUsername"], new_token.first["id"],"mapbox-sdk-rb test (updated)",[]) assert result - Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result + Mapbox::Tokens.delete_token(ENV["MapboxUsername"], result.first["id"]) if result end should "#token_update (include scopes param)" do Mapbox.access_token = ENV["MapboxAccessToken"] - new_token = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", ["tokens:read"]) - result = Mapbox::Tokens.token_update(ENV["MapboxUsername"], new_token.first["id"],"mapbox-sdk-rb test (updated)",["tokens:write"]) + new_token = Mapbox::Tokens.create_token(ENV["MapboxUsername"], "mapbox-sdk-rb test", ["tokens:read"]) + result = Mapbox::Tokens.update_token(ENV["MapboxUsername"], new_token.first["id"],"mapbox-sdk-rb test (updated)",["tokens:write"]) assert result assert Mapbox.request_opts[:payload].include? '"scopes":["tokens:write"' - Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result + Mapbox::Tokens.delete_token(ENV["MapboxUsername"], result.first["id"]) if result end should "#token_update (include allowed URLs param)" do Mapbox.access_token = ENV["MapboxAccessToken"] - new_token = Mapbox::Tokens.token_create(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) - result = Mapbox::Tokens.token_update(ENV["MapboxUsername"], new_token.first["id"],"mapbox-sdk-rb test (updated)",[], ["example.com"]) + new_token = Mapbox::Tokens.create_token(ENV["MapboxUsername"], "mapbox-sdk-rb test", []) + result = Mapbox::Tokens.update_token(ENV["MapboxUsername"], new_token.first["id"],"mapbox-sdk-rb test (updated)",[], ["example.com"]) assert result assert Mapbox.request_opts[:payload].include? '"allowedUrls":["example.com"' - Mapbox::Tokens.token_delete(ENV["MapboxUsername"], result.first["id"]) if result + Mapbox::Tokens.delete_token(ENV["MapboxUsername"], result.first["id"]) if result end should "#scopes_list" do Mapbox.access_token = ENV["MapboxAccessToken"] - result = Mapbox::Tokens.scopes_list(ENV["MapboxUsername"]) + result = Mapbox::Tokens.list_scopes(ENV["MapboxUsername"]) assert result end end