kuby-linode 0.3.2 → 0.4.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: 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.