kuby-linode 0.3.2 → 0.4.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: 4adc3c5f441e7fe64ef97e318917b3da98a6cfdb2750004fda7646d9c76bfdaa
4
- data.tar.gz: 59d7e1f522d5cda5a5873e680793de1f278663238454975b3c8825ee82a2f4f3
3
+ metadata.gz: 3ef921c80cb878286577fc739b1f7251ca2f65e902ed235b9686e20f8efb9477
4
+ data.tar.gz: 3e4699bb0037b9698650c090ad0065d6bdd76717e03616803c1670de09b7bda4
5
5
  SHA512:
6
- metadata.gz: fe33688a8587bdf15b55c68d2d526cbe682b66783dff8b8d234bd278eee71c41580c25e89bc3e6874a5d0168c41d2fdea73f08cbc25dd4011235a5b96a57001f
7
- data.tar.gz: 762b468ca1a2a2375e70aadc946019bb689f94b9ac03fd91cbbfc1bcc55f8f69418d420abb9a8fc4fd01c323309620e1f345ac1cabc5d8de22f005358b7617de
6
+ metadata.gz: 9a7bc044c46d8af896bae55f0a9085d2a300a085bb6c0e7f960416e8cef5d7e23e1fb67985d2b2ba0e415a5ffc1441a2199149f82e9850384d54a694fddadc83
7
+ data.tar.gz: 50cfd0daf6a9c20c641898fcd78dc0e227832eebb57b52e9aa691211ee04087b63e5004a91db77fb2804922c4622659800a39379092c5853bd8e607a9307c5e2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 0.4.0
2
+ * Remove Faraday dependency.
3
+
1
4
  ## 0.3.2
2
5
  * Add a unique hash of the configuration options to the kubeconfig path.
3
6
  * Update README with new environment syntax.
data/kuby-linode.gemspec CHANGED
@@ -12,7 +12,6 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.platform = Gem::Platform::RUBY
14
14
 
15
- s.add_dependency 'faraday', '~> 0.17'
16
15
  s.add_dependency 'kube-dsl', '~> 0.1'
17
16
 
18
17
  s.require_path = 'lib'
@@ -1,5 +1,6 @@
1
1
  require 'base64'
2
- require 'faraday'
2
+ require 'net/http'
3
+ require 'uri'
3
4
 
4
5
  module Kuby
5
6
  module Linode
@@ -24,31 +25,40 @@ module Kuby
24
25
  end
25
26
  end
26
27
 
28
+ class BearerAuth
29
+ attr_reader :access_token
30
+
31
+ def initialize(access_token:)
32
+ @access_token = access_token
33
+ end
34
+
35
+ def make_get(path)
36
+ Net::HTTP::Get.new(path).tap do |request|
37
+ request['Authorization'] = "Bearer #{access_token}"
38
+ end
39
+ end
40
+ end
41
+
27
42
  class Client
28
43
  API_URL = 'https://api.linode.com'.freeze
29
44
  KUBECONFIG_PATH = '/v4/lke/clusters/%{cluster_id}/kubeconfig'.freeze
30
45
 
31
46
  def self.create(access_token:)
32
- options = {
33
- url: API_URL,
34
- headers: {
35
- Accept: 'application/json',
36
- Authorization: "Bearer #{access_token}"
37
- }
38
- }
39
-
40
- new(
41
- Faraday.new(options) do |faraday|
42
- faraday.request(:retry, max: 3)
43
- faraday.adapter(:net_http)
44
- end
45
- )
47
+ uri = URI(API_URL)
48
+
49
+ connection = Net::HTTP.new(uri.host, uri.port).tap do |http|
50
+ http.use_ssl = true if uri.scheme == 'https'
51
+ end
52
+
53
+ auth = BearerAuth.new(access_token: access_token)
54
+ new(connection, auth)
46
55
  end
47
56
 
48
- attr_reader :connection
57
+ attr_reader :connection, :auth
49
58
 
50
- def initialize(connection)
59
+ def initialize(connection, auth)
51
60
  @connection = connection
61
+ @auth = auth
52
62
  end
53
63
 
54
64
  def kubeconfig(cluster_id)
@@ -58,32 +68,25 @@ module Kuby
58
68
 
59
69
  private
60
70
 
61
- def get(url, params = {})
62
- act(:get, url, params)
63
- end
64
-
65
- def get_json(url, params = {})
66
- response = get(url, params)
71
+ def get_json(path)
72
+ request = auth.make_get(path)
73
+ request['Accept'] = 'application/json'
74
+ response = connection.request(request)
75
+ potentially_raise_error!(response)
67
76
  JSON.parse(response.body)
68
77
  end
69
78
 
70
- def act(verb, *args)
71
- connection.send(verb, *args).tap do |response|
72
- potentially_raise_error!(response)
73
- end
74
- end
75
-
76
79
  def potentially_raise_error!(response)
77
- case response.status
80
+ case response.code.to_i
78
81
  when 401
79
- raise UnauthorizedError, "401 Unauthorized: #{response.env.url}"
82
+ raise UnauthorizedError, "401 Unauthorized: #{response.message}"
80
83
  when 404
81
- raise NotFoundError, "404 Not Found: #{response.env.url}"
84
+ raise NotFoundError, "404 Not Found: #{response.message}"
82
85
  else
83
86
  if failure_response?(response)
84
87
  raise ApiError.new(
85
- "HTTP #{response.status}: #{response.env.url}, body: #{response.body}",
86
- response.status
88
+ "HTTP #{response.code}: #{response.message}, body: #{response.body}",
89
+ response.code
87
90
  )
88
91
  end
89
92
  end
@@ -91,7 +94,7 @@ module Kuby
91
94
 
92
95
  def failure_response?(response)
93
96
  data = JSON.parse(response.body) rescue {}
94
- (response.status / 100) != 2 || data['message'] == 'failure'
97
+ (response.code.to_i / 100) != 2 || data['message'] == 'failure'
95
98
  end
96
99
  end
97
100
  end
@@ -1,5 +1,5 @@
1
1
  module Kuby
2
2
  module Linode
3
- VERSION = '0.3.2'.freeze
3
+ VERSION = '0.4.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kuby-linode
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cameron Dutro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-01 00:00:00.000000000 Z
11
+ date: 2022-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: faraday
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '0.17'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '0.17'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: kube-dsl
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -74,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
74
60
  - !ruby/object:Gem::Version
75
61
  version: '0'
76
62
  requirements: []
77
- rubygems_version: 3.1.4
63
+ rubygems_version: 3.2.22
78
64
  signing_key:
79
65
  specification_version: 4
80
66
  summary: Linode provider for Kuby.