3scale-api 1.1.0 → 1.5.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: e802565c57ee82f45f6684a5764b0bd438e9171e746f8128e4691b1fbd974a5d
4
- data.tar.gz: d979da1bce6a4f1f969e0bf8a1d9bc5ba661648b485acaaf1ce51f39f91723ac
3
+ metadata.gz: 889c02fde022e3dfac63c698c05a631904181e7c5bb8b65f7a73378ede62bcd7
4
+ data.tar.gz: 10756f304d8b25f242416c2cdd3d6ae5141ef73c94103aab6cc9e7674cfcd450
5
5
  SHA512:
6
- metadata.gz: 65ae26fc85839d07a9df0fa0da510c8b259af601a5b163f843c9c0096a23e28198b639adcfa33ffdfbf8ee2baf40b5e2c817a47bbef2148d94c5997581d65366
7
- data.tar.gz: 702fb4b87d60a01954d8c6c0ae668ec75e6df24b0bdac3d646883b7231654a9fdd80f79af621d79725bbfd43c089b1f5f2601f8da70c9b96c4116b0addeb1ffd
6
+ metadata.gz: c029b7cafa5e81c612c2240f30c428d9be066ae9ad3d5b30f4efd1873b98c7600d5a446af4d1069978f32297ba96ffd34ba46d03afdfe34e6b79bfd40a3b66ea
7
+ data.tar.gz: 964b8e3168761498f2789b2f0466d2d52c68273972495e1dffa977c98f7257ac643af7a0600a7b5aab85ba37440cb1e3e337bdfc654bfd4f6b6cb20ce9ac7088
@@ -1,5 +1,8 @@
1
1
  module ThreeScale
2
2
  module API
3
+ MAX_BACKENDS_PER_PAGE = 500
4
+ MAX_SERVICES_PER_PAGE = 500
5
+
3
6
  class Client
4
7
  attr_reader :http_client
5
8
 
@@ -19,8 +22,8 @@ module ThreeScale
19
22
 
20
23
  # @api public
21
24
  # @return [Array<Hash>]
22
- def list_services
23
- response = http_client.get('/admin/api/services')
25
+ def list_services(params = nil)
26
+ response = http_client.get('/admin/api/services', params: params)
24
27
  extract(collection: 'services', entity: 'service', from: response)
25
28
  end
26
29
 
@@ -41,6 +44,14 @@ module ThreeScale
41
44
  extract(collection: 'applications', entity: 'application', from: response)
42
45
  end
43
46
 
47
+ # @api public
48
+ # @param [Fixnum] account_id Account ID
49
+ # @return [Array<Hash>]
50
+ def list_applications_by_account(account_id)
51
+ response = http_client.get("/admin/api/accounts/#{account_id}/applications")
52
+ extract(collection: 'applications', entity: 'application', from: response)
53
+ end
54
+
44
55
  # @api public
45
56
  # @return [Hash]
46
57
  # @param [Fixnum] id Application ID
@@ -200,6 +211,15 @@ module ThreeScale
200
211
  extract(entity: 'proxy', from: response)
201
212
  end
202
213
 
214
+ # @api public
215
+ # @return [Hash]
216
+ # @param [Fixnum] service_id Service ID
217
+ def proxy_deploy(service_id)
218
+ response = http_client.post("/admin/api/services/#{service_id}/proxy/deploy",
219
+ body: nil)
220
+ extract(entity: 'proxy', from: response)
221
+ end
222
+
203
223
  # @api public
204
224
  # @return [Array<Hash>]
205
225
  # @param [Fixnum] service_id Service ID
@@ -828,8 +848,8 @@ module ThreeScale
828
848
 
829
849
  # @api public
830
850
  # @return [List]
831
- def list_backends
832
- response = http_client.get('/admin/api/backend_apis')
851
+ def list_backends(params = nil)
852
+ response = http_client.get('/admin/api/backend_apis', params: params)
833
853
  extract(collection: 'backend_apis', entity: 'backend_api', from: response)
834
854
  end
835
855
 
@@ -68,16 +68,22 @@ module ThreeScale
68
68
 
69
69
  class NotFoundError < ResponseError; end
70
70
 
71
+ class UnknownFormatError < StandardError; end
72
+
71
73
  def forbidden!(response)
72
- raise ForbiddenError.new(response)
74
+ raise ForbiddenError.new(response, format_response(response))
73
75
  end
74
76
 
75
77
  def notfound!(response)
76
- raise NotFoundError.new(response)
78
+ raise NotFoundError.new(response, format_response(response))
77
79
  end
78
80
 
79
81
  def unexpected!(response)
80
- raise UnexpectedResponseError.new(response, response.inspect)
82
+ raise UnexpectedResponseError.new(response, format_response(response))
83
+ end
84
+
85
+ def unknownformat!
86
+ raise UnknownFormatError, "unknown format #{format}"
81
87
  end
82
88
 
83
89
  def serialize(body)
@@ -91,7 +97,7 @@ module ThreeScale
91
97
  def parser
92
98
  case format
93
99
  when :json then JSONParser
94
- else "unknown format #{format}"
100
+ else unknownformat!
95
101
  end
96
102
  end
97
103
 
@@ -108,6 +114,16 @@ module ThreeScale
108
114
  path
109
115
  end
110
116
 
117
+ def format_response(response)
118
+ body = response.body if text_based?(response)
119
+ "#{response.inspect} body=#{body}"
120
+ end
121
+
122
+ def text_based?(response)
123
+ response.content_type =~ /^text/ ||
124
+ response.content_type =~ /^application/ && !['application/octet-stream', 'application/pdf'].include?(response.content_type)
125
+ end
126
+
111
127
  module JSONParser
112
128
  module_function
113
129
 
@@ -1,5 +1,5 @@
1
1
  module ThreeScale
2
2
  module API
3
- VERSION = '1.1.0'.freeze
3
+ VERSION = '1.5.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: 3scale-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
- - Michal Cichra
7
+ - Miguel Soriano
8
8
  - Eguzki Astiz Lezaun
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-04-17 00:00:00.000000000 Z
12
+ date: 2021-11-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -69,7 +69,7 @@ dependencies:
69
69
  version: '3.4'
70
70
  description: 'API Client to access your 3scale APIs: Account Management API'
71
71
  email:
72
- - michal@3scale.net
72
+ - msoriano@redhat.com
73
73
  - eastizle@redhat.com
74
74
  executables: []
75
75
  extensions: []
@@ -94,15 +94,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - ">="
96
96
  - !ruby/object:Gem::Version
97
- version: '0'
97
+ version: '2.6'
98
98
  required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  requirements: []
104
- rubyforge_project:
105
- rubygems_version: 2.7.6
104
+ rubygems_version: 3.0.3
106
105
  signing_key:
107
106
  specification_version: 4
108
107
  summary: API Client for 3scale APIs