kong 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +31 -1
- data/lib/kong.rb +1 -0
- data/lib/kong/api.rb +6 -1
- data/lib/kong/plugin.rb +22 -0
- data/lib/kong/server.rb +23 -0
- data/lib/kong/version.rb +1 -1
- data/spec/kong/api_spec.rb +6 -1
- data/spec/kong/plugin_spec.rb +20 -0
- data/spec/kong/server_spec.rb +39 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2eb96feeae50f935d3faf48b18bffde840ad3ca0
|
4
|
+
data.tar.gz: bc4e0aa0c3125d227135ff82db8168a154b773cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20914d65262adc1f8592ed02eb689aeba49b5b9b3aca132bf7cd4b9e5bdd1899e0556b1463fea60d3e7ad8dcab16ea8456876086ab94a54d8cf80952c92ff5c0
|
7
|
+
data.tar.gz: 5be4a32b52ec29a31a5fcda2d40784881fc9f0ac009bb68eeaf132e1831062822eb76e6554b1d1317326e800f2e8ff25fe2b90770ef6806d1993808daf87d1d2
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# 0.2.0 (2017-04-20)
|
2
|
+
- Add Server information support ([#14](https://github.com/kontena/kong-client-ruby/pull/14))
|
3
|
+
- Add optional attributes to Api
|
4
|
+
([#13](https://github.com/kontena/kong-client-ruby/pull/13))
|
5
|
+
- Fix Plugin#create and #update to save config properly
|
6
|
+
([#12](https://github.com/kontena/kong-client-ruby/pull/12))
|
7
|
+
|
1
8
|
# 0.1.2 (2017-01-12)
|
2
9
|
- Add JWT support ([#2](https://github.com/kontena/kong-client-ruby/pull/2))
|
3
10
|
- Allow to properly set a custom api_url ([#4](https://github.com/kontena/kong-client-ruby/pull/4))
|
data/README.md
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
|
5
5
|
[![Build Status](https://travis-ci.org/kontena/kong-client-ruby.svg?branch=master)](https://travis-ci.org/kontena/kong-client-ruby)
|
6
6
|
[![Gem Version](https://badge.fury.io/rb/kong.svg)](https://badge.fury.io/rb/kong)
|
7
|
+
|
7
8
|
## Installation
|
8
9
|
Add this line to your application's Gemfile:
|
9
10
|
|
@@ -27,7 +28,7 @@ require 'kong'
|
|
27
28
|
Kong::Client.api_url = 'http://your-kong-url:8001'
|
28
29
|
```
|
29
30
|
|
30
|
-
###
|
31
|
+
### Design
|
31
32
|
|
32
33
|
Kong client follows a design of resoures as Plain Old Ruby objects(tm). For examples to create a new Consumer resource you can do it like this:
|
33
34
|
|
@@ -203,6 +204,25 @@ token.delete
|
|
203
204
|
token.oauth_app
|
204
205
|
```
|
205
206
|
|
207
|
+
#### JWT
|
208
|
+
|
209
|
+
```ruby
|
210
|
+
|
211
|
+
jwt = Kong::JWT.new({
|
212
|
+
consumer_id: 'a3dX2dh2-1adb-40a5-c042-63b19dbx83hF4',
|
213
|
+
key: 'a36c3049b36249a3c9f8891cb127243c',
|
214
|
+
secret: 'e71829c351aa4242c2719cbfbe671c09'
|
215
|
+
})
|
216
|
+
|
217
|
+
jwt.create
|
218
|
+
jwt.update
|
219
|
+
jwt.save # requests create_or_update action
|
220
|
+
jwt.delete
|
221
|
+
|
222
|
+
consumer = Kong::Consumer.find_by_username('testuser')
|
223
|
+
consumer.jwts
|
224
|
+
```
|
225
|
+
|
206
226
|
#### ACL
|
207
227
|
|
208
228
|
```ruby
|
@@ -221,6 +241,16 @@ consumer = Kong::Consumer.find_by_username('testuser')
|
|
221
241
|
consumer.acls
|
222
242
|
```
|
223
243
|
|
244
|
+
#### Server Information
|
245
|
+
|
246
|
+
```ruby
|
247
|
+
Kong::Server.info
|
248
|
+
Kong::Server.version
|
249
|
+
Kong::Server.status
|
250
|
+
Kong::Server.cluster
|
251
|
+
Kong::Server.remove_node(node_name)
|
252
|
+
```
|
253
|
+
|
224
254
|
## Contributing
|
225
255
|
|
226
256
|
1. Fork it ( https://github.com/kontena/kong-client-ruby/fork )
|
data/lib/kong.rb
CHANGED
data/lib/kong/api.rb
CHANGED
@@ -2,7 +2,12 @@ module Kong
|
|
2
2
|
class Api
|
3
3
|
include Base
|
4
4
|
|
5
|
-
ATTRIBUTE_NAMES = %w(
|
5
|
+
ATTRIBUTE_NAMES = %w(
|
6
|
+
id name request_host request_path strip_request_path
|
7
|
+
hosts uris strip_uri preserve_host upstream_url retries
|
8
|
+
upstream_connect_timeout upstream_send_timeout upstream_read_timeout
|
9
|
+
https_only http_if_terminated
|
10
|
+
).freeze
|
6
11
|
API_END_POINT = '/apis/'.freeze
|
7
12
|
|
8
13
|
##
|
data/lib/kong/plugin.rb
CHANGED
@@ -5,5 +5,27 @@ module Kong
|
|
5
5
|
|
6
6
|
ATTRIBUTE_NAMES = %w(id api_id name config enabled consumer_id).freeze
|
7
7
|
API_END_POINT = '/plugins/'.freeze
|
8
|
+
|
9
|
+
# Create resource
|
10
|
+
def create
|
11
|
+
if attributes['config']
|
12
|
+
attributes['config'].each do |key, value|
|
13
|
+
attributes["config.#{key}"] = value
|
14
|
+
end
|
15
|
+
attributes.delete('config')
|
16
|
+
end
|
17
|
+
super
|
18
|
+
end
|
19
|
+
|
20
|
+
# update resource
|
21
|
+
def update
|
22
|
+
if attributes['config']
|
23
|
+
attributes['config'].each do |key, value|
|
24
|
+
attributes["config.#{key}"] = value
|
25
|
+
end
|
26
|
+
attributes.delete('config')
|
27
|
+
end
|
28
|
+
super
|
29
|
+
end
|
8
30
|
end
|
9
31
|
end
|
data/lib/kong/server.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
module Kong
|
2
|
+
class Server
|
3
|
+
def self.version
|
4
|
+
self.info['version'] rescue nil
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.info
|
8
|
+
Client.instance.get('/')
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.status
|
12
|
+
Client.instance.get('/status')
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.cluster
|
16
|
+
Client.instance.get('/cluster')
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.remove_node(name)
|
20
|
+
Client.instance.delete("/cluster/nodes/#{name}")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/kong/version.rb
CHANGED
data/spec/kong/api_spec.rb
CHANGED
@@ -2,7 +2,12 @@ require_relative "../spec_helper"
|
|
2
2
|
|
3
3
|
describe Kong::Api do
|
4
4
|
let(:valid_attribute_names) do
|
5
|
-
%w(
|
5
|
+
%w(
|
6
|
+
id name request_host request_path strip_request_path
|
7
|
+
hosts uris strip_uri preserve_host upstream_url retries
|
8
|
+
upstream_connect_timeout upstream_send_timeout upstream_read_timeout
|
9
|
+
https_only http_if_terminated
|
10
|
+
)
|
6
11
|
end
|
7
12
|
|
8
13
|
describe 'ATTRIBUTE_NAMES' do
|
data/spec/kong/plugin_spec.rb
CHANGED
@@ -23,4 +23,24 @@ describe Kong::Plugin do
|
|
23
23
|
expect(subject.api_end_point).to eq('/apis/:api_id/plugins/')
|
24
24
|
end
|
25
25
|
end
|
26
|
+
|
27
|
+
describe '#create' do
|
28
|
+
it 'transforms config keys to config.key format' do
|
29
|
+
headers = { 'Content-Type' => 'application/x-www-form-urlencoded' }
|
30
|
+
attributes = { 'api_id' => ':api_id', 'config.anonymous' => '12345' }
|
31
|
+
expect(Kong::Client.instance).to receive(:post).with('/apis/:api_id/plugins/', nil, attributes, headers).and_return(attributes)
|
32
|
+
subject = described_class.new({ api_id: ':api_id', config: { 'anonymous' => '12345' } })
|
33
|
+
subject.create
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#update' do
|
38
|
+
it 'transforms config keys to config.key format' do
|
39
|
+
headers = { 'Content-Type' => 'application/x-www-form-urlencoded' }
|
40
|
+
attributes = { 'api_id' => ':api_id', 'config.anonymous' => '12345' }
|
41
|
+
expect(Kong::Client.instance).to receive(:patch).with('/apis/:api_id/plugins/', nil, attributes, headers).and_return(attributes)
|
42
|
+
subject = described_class.new({ api_id: ':api_id', config: { 'anonymous' => '12345' } })
|
43
|
+
subject.update
|
44
|
+
end
|
45
|
+
end
|
26
46
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require_relative "../spec_helper"
|
2
|
+
|
3
|
+
describe Kong::Server do
|
4
|
+
describe '.info' do
|
5
|
+
it 'makes GET / request' do
|
6
|
+
expect(Kong::Client.instance).to receive(:get).with('/')
|
7
|
+
described_class.info
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '.version' do
|
12
|
+
it 'returns version information' do
|
13
|
+
allow(Kong::Client.instance).to receive(:get).with('/')
|
14
|
+
.and_return({ 'version' => '0.10.0' })
|
15
|
+
expect(described_class.version).to eq('0.10.0')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '.status' do
|
20
|
+
it 'makes GET /status request' do
|
21
|
+
expect(Kong::Client.instance).to receive(:get).with('/status')
|
22
|
+
described_class.status
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '.cluster' do
|
27
|
+
it 'makes GET /cluster request' do
|
28
|
+
expect(Kong::Client.instance).to receive(:get).with('/cluster')
|
29
|
+
described_class.cluster
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe '.remove_node' do
|
34
|
+
it 'makes DELETE /cluster/nodes/:name request' do
|
35
|
+
expect(Kong::Client.instance).to receive(:delete).with('/cluster/nodes/:name')
|
36
|
+
described_class.remove_node(':name')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kong
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lauri Nevala
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- lib/kong/oauth2_token.rb
|
85
85
|
- lib/kong/oauth_app.rb
|
86
86
|
- lib/kong/plugin.rb
|
87
|
+
- lib/kong/server.rb
|
87
88
|
- lib/kong/version.rb
|
88
89
|
- spec/kong/acl_spec.rb
|
89
90
|
- spec/kong/api_spec.rb
|
@@ -95,6 +96,7 @@ files:
|
|
95
96
|
- spec/kong/oauth2_token_spec.rb
|
96
97
|
- spec/kong/oauth_app_spec.rb
|
97
98
|
- spec/kong/plugin_spec.rb
|
99
|
+
- spec/kong/server_spec.rb
|
98
100
|
- spec/spec_helper.rb
|
99
101
|
- tasks/rspec.rake
|
100
102
|
homepage: https://github.com/kontena/kong-client-ruby
|
@@ -117,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
119
|
version: '0'
|
118
120
|
requirements: []
|
119
121
|
rubyforge_project:
|
120
|
-
rubygems_version: 2.
|
122
|
+
rubygems_version: 2.5.2
|
121
123
|
signing_key:
|
122
124
|
specification_version: 4
|
123
125
|
summary: A Ruby client for the Kong API
|
@@ -132,4 +134,5 @@ test_files:
|
|
132
134
|
- spec/kong/oauth2_token_spec.rb
|
133
135
|
- spec/kong/oauth_app_spec.rb
|
134
136
|
- spec/kong/plugin_spec.rb
|
137
|
+
- spec/kong/server_spec.rb
|
135
138
|
- spec/spec_helper.rb
|