droplet_kit 3.17.0 → 3.18.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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/lib/droplet_kit/client.rb +1 -1
  3. data/lib/droplet_kit/error_handling_resourcable.rb +4 -3
  4. data/lib/droplet_kit/mappings/balance_mapping.rb +0 -1
  5. data/lib/droplet_kit/mappings/container_registry_mapping.rb +1 -1
  6. data/lib/droplet_kit/mappings/database_cluster_mapping.rb +8 -8
  7. data/lib/droplet_kit/mappings/database_connection_pool_mapping.rb +5 -5
  8. data/lib/droplet_kit/mappings/database_eviction_policy_mapping.rb +1 -1
  9. data/lib/droplet_kit/mappings/database_firewall_rule_mapping.rb +3 -3
  10. data/lib/droplet_kit/mappings/database_maintenance_window_mapping.rb +2 -2
  11. data/lib/droplet_kit/mappings/database_mapping.rb +1 -1
  12. data/lib/droplet_kit/mappings/database_sql_mode_mapping.rb +1 -1
  13. data/lib/droplet_kit/mappings/database_user_mapping.rb +3 -3
  14. data/lib/droplet_kit/mappings/database_user_reset_auth_mapping.rb +1 -1
  15. data/lib/droplet_kit/mappings/domain_mapping.rb +2 -2
  16. data/lib/droplet_kit/mappings/domain_record_mapping.rb +9 -9
  17. data/lib/droplet_kit/mappings/droplet_upgrade_mapping.rb +1 -1
  18. data/lib/droplet_kit/mappings/error_mapping.rb +1 -1
  19. data/lib/droplet_kit/mappings/firewall_inbound_rule_mapping.rb +1 -1
  20. data/lib/droplet_kit/mappings/firewall_outbound_rule_mapping.rb +1 -1
  21. data/lib/droplet_kit/mappings/floating_ip_mapping.rb +1 -1
  22. data/lib/droplet_kit/mappings/forwarding_rule_mapping.rb +1 -1
  23. data/lib/droplet_kit/mappings/image_mapping.rb +10 -10
  24. data/lib/droplet_kit/mappings/invoice_mapping.rb +0 -1
  25. data/lib/droplet_kit/mappings/kernel_mapping.rb +1 -1
  26. data/lib/droplet_kit/mappings/kubernetes_cluster_mapping.rb +9 -9
  27. data/lib/droplet_kit/mappings/kubernetes_node_mapping.rb +0 -1
  28. data/lib/droplet_kit/mappings/kubernetes_node_pool_mapping.rb +8 -9
  29. data/lib/droplet_kit/mappings/load_balancer_mapping.rb +1 -1
  30. data/lib/droplet_kit/mappings/network_detail_mapping.rb +1 -1
  31. data/lib/droplet_kit/mappings/network_mapping.rb +1 -1
  32. data/lib/droplet_kit/mappings/project_assignment_mapping.rb +1 -1
  33. data/lib/droplet_kit/mappings/project_mapping.rb +5 -5
  34. data/lib/droplet_kit/mappings/region_mapping.rb +1 -1
  35. data/lib/droplet_kit/mappings/reserved_ip_mapping.rb +1 -1
  36. data/lib/droplet_kit/mappings/size_mapping.rb +1 -0
  37. data/lib/droplet_kit/mappings/snapshot_mapping.rb +1 -1
  38. data/lib/droplet_kit/mappings/ssh_key_mapping.rb +1 -1
  39. data/lib/droplet_kit/mappings/volume_mapping.rb +5 -6
  40. data/lib/droplet_kit/mappings/vpc_member_mapping.rb +1 -1
  41. data/lib/droplet_kit/models/base_model.rb +3 -3
  42. data/lib/droplet_kit/models/container_registry_repository.rb +1 -1
  43. data/lib/droplet_kit/models/container_registry_repository_tag.rb +1 -1
  44. data/lib/droplet_kit/models/domain.rb +1 -1
  45. data/lib/droplet_kit/models/droplet.rb +6 -7
  46. data/lib/droplet_kit/models/invoice.rb +15 -16
  47. data/lib/droplet_kit/models/kernel.rb +1 -1
  48. data/lib/droplet_kit/models/kubernetes_cluster.rb +1 -1
  49. data/lib/droplet_kit/models/kubernetes_node.rb +1 -1
  50. data/lib/droplet_kit/models/kubernetes_node_pool.rb +1 -1
  51. data/lib/droplet_kit/models/load_balancer.rb +4 -4
  52. data/lib/droplet_kit/models/meta_information.rb +1 -1
  53. data/lib/droplet_kit/models/pagination_information.rb +1 -1
  54. data/lib/droplet_kit/models/project.rb +1 -1
  55. data/lib/droplet_kit/models/size.rb +1 -0
  56. data/lib/droplet_kit/models/snapshot.rb +1 -1
  57. data/lib/droplet_kit/models/ssh_key.rb +1 -1
  58. data/lib/droplet_kit/models/volume.rb +1 -1
  59. data/lib/droplet_kit/models/vpc.rb +1 -1
  60. data/lib/droplet_kit/models/vpc_member.rb +1 -1
  61. data/lib/droplet_kit/paginated_resource.rb +10 -10
  62. data/lib/droplet_kit/resources/account_resource.rb +1 -1
  63. data/lib/droplet_kit/resources/balance_resource.rb +1 -1
  64. data/lib/droplet_kit/resources/domain_record_resource.rb +2 -2
  65. data/lib/droplet_kit/resources/droplet_action_resource.rb +5 -5
  66. data/lib/droplet_kit/resources/firewall_resource.rb +3 -3
  67. data/lib/droplet_kit/resources/image_resource.rb +1 -1
  68. data/lib/droplet_kit/resources/kubernetes_cluster_resource.rb +3 -5
  69. data/lib/droplet_kit/resources/load_balancer_resource.rb +1 -1
  70. data/lib/droplet_kit/resources/project_resource.rb +1 -1
  71. data/lib/droplet_kit/resources/ssh_key_resource.rb +3 -3
  72. data/lib/droplet_kit/resources/volume_action_resource.rb +3 -3
  73. data/lib/droplet_kit/resources/vpc_resource.rb +5 -5
  74. data/lib/droplet_kit/utils.rb +9 -9
  75. data/lib/droplet_kit/version.rb +1 -1
  76. data/lib/droplet_kit.rb +2 -2
  77. data/lib/tasks/resource_doc.rake +8 -9
  78. metadata +93 -23
@@ -1,20 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DropletKit
4
- class Invoice < BaseModel
5
- attribute :invoice_uuid
6
- attribute :amount
7
- attribute :invoice_period
8
- attribute :product
9
- attribute :resource_uuid
10
- attribute :group_description
11
- attribute :description
12
- attribute :duration
13
- attribute :duration_unit
14
- attribute :start_time
15
- attribute :end_time
16
- attribute :project_name
17
- attribute :category
18
- end
4
+ class Invoice < BaseModel
5
+ attribute :invoice_uuid
6
+ attribute :amount
7
+ attribute :invoice_period
8
+ attribute :product
9
+ attribute :resource_uuid
10
+ attribute :group_description
11
+ attribute :description
12
+ attribute :duration
13
+ attribute :duration_unit
14
+ attribute :start_time
15
+ attribute :end_time
16
+ attribute :project_name
17
+ attribute :category
19
18
  end
20
-
19
+ end
@@ -6,4 +6,4 @@ module DropletKit
6
6
  attribute :name
7
7
  attribute :version
8
8
  end
9
- end
9
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module DropletKit
4
4
  class KubernetesCluster < BaseModel
5
- [:id, :name, :region, :version, :auto_upgrade, :cluster_subnet, :service_subnet, :ipv4, :endpoint, :tags, :maintenance_policy, :node_pools, :vpc_uuid, :ha].each do |key|
5
+ %i[id name region version auto_upgrade cluster_subnet service_subnet ipv4 endpoint tags maintenance_policy node_pools vpc_uuid ha].each do |key|
6
6
  attribute(key)
7
7
  end
8
8
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module DropletKit
4
4
  class KubernetesNode < BaseModel
5
- [:id, :name, :status, :created_at, :updated_at].each do |key|
5
+ %i[id name status created_at updated_at].each do |key|
6
6
  attribute(key)
7
7
  end
8
8
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module DropletKit
4
4
  class KubernetesNodePool < BaseModel
5
- [:id, :name, :size, :count, :tags, :labels, :nodes, :auto_scale, :min_nodes, :max_nodes].each do |key|
5
+ %i[id name size count tags labels nodes auto_scale min_nodes max_nodes].each do |key|
6
6
  attribute(key)
7
7
  end
8
8
  end
@@ -12,10 +12,10 @@ module DropletKit
12
12
  attribute :region
13
13
  attribute :size
14
14
  attribute :size_unit
15
- attribute :redirect_http_to_https, Boolean, :default => false
16
- attribute :enable_proxy_protocol, Boolean, :default => false
17
- attribute :enable_backend_keepalive, Boolean, :default => false
18
- attribute :disable_lets_encrypt_dns_records, Boolean, :default => false
15
+ attribute :redirect_http_to_https, Boolean, default: false
16
+ attribute :enable_proxy_protocol, Boolean, default: false
17
+ attribute :enable_backend_keepalive, Boolean, default: false
18
+ attribute :disable_lets_encrypt_dns_records, Boolean, default: false
19
19
  attribute :droplet_ids
20
20
  attribute :sticky_sessions, StickySession
21
21
  attribute :health_check
@@ -13,4 +13,4 @@ module DropletKit
13
13
 
14
14
  attribute :total
15
15
  end
16
- end
16
+ end
@@ -16,4 +16,4 @@ module DropletKit
16
16
  end
17
17
  end
18
18
  end
19
- end
19
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module DropletKit
4
4
  class Project < BaseModel
5
- DEFAULT = 'default'.freeze
5
+ DEFAULT = 'default'
6
6
 
7
7
  attribute :id
8
8
  attribute :owner_uuid
@@ -11,6 +11,7 @@ module DropletKit
11
11
  attribute :price_hourly
12
12
  attribute :regions
13
13
  attribute :available
14
+ attribute :description
14
15
  end
15
16
 
16
17
  def self.from_identifier(identifier)
@@ -11,4 +11,4 @@ module DropletKit
11
11
  attribute :min_disk_size
12
12
  attribute :size_gigabytes
13
13
  end
14
- end
14
+ end
@@ -7,4 +7,4 @@ module DropletKit
7
7
  attribute :public_key
8
8
  attribute :name
9
9
  end
10
- end
10
+ end
@@ -15,4 +15,4 @@ module DropletKit
15
15
  # Used for creates
16
16
  attribute :snapshot_id
17
17
  end
18
- end
18
+ end
@@ -11,4 +11,4 @@ module DropletKit
11
11
  attribute :created_at
12
12
  attribute :default
13
13
  end
14
- end
14
+ end
@@ -6,4 +6,4 @@ module DropletKit
6
6
  attribute :name
7
7
  attribute :created_at
8
8
  end
9
- end
9
+ end
@@ -16,7 +16,7 @@ module DropletKit
16
16
  @resource = resource
17
17
  @collection = []
18
18
  @args = args
19
- @options = args.last.kind_of?(Hash) ? args.last : {}
19
+ @options = args.last.is_a?(Hash) ? args.last : {}
20
20
  end
21
21
 
22
22
  def per_page
@@ -31,10 +31,9 @@ module DropletKit
31
31
  # Start off with the first page if we have no idea of anything yet
32
32
  fetch_next_page if total.nil?
33
33
 
34
- return to_enum(:each, start) unless block_given?
35
- Array(@collection[start..-1]).each do |element|
36
- yield(element)
37
- end
34
+ return to_enum(:each, start) unless block
35
+
36
+ Array(@collection[start..-1]).each(&block)
38
37
 
39
38
  unless last?
40
39
  start = [@collection.size, start].max
@@ -46,18 +45,19 @@ module DropletKit
46
45
  end
47
46
 
48
47
  def last?
49
- return true if self.total.nil?
50
- @current_page == total_pages || self.total.zero?
48
+ return true if total.nil?
49
+
50
+ @current_page == total_pages || total.zero?
51
51
  end
52
52
 
53
53
  def total_pages
54
- return nil if self.total.nil?
54
+ return nil if total.nil?
55
55
 
56
- (self.total.to_f / per_page.to_f).ceil
56
+ (total.to_f / per_page).ceil
57
57
  end
58
58
 
59
59
  def ==(other)
60
- each_with_index.each.all? {|object, index| object == other[index] }
60
+ each_with_index.each.all? { |object, index| object == other[index] }
61
61
  end
62
62
 
63
63
  private
@@ -5,7 +5,7 @@ module DropletKit
5
5
  include ErrorHandlingResourcable
6
6
 
7
7
  resources do
8
- default_handler(:ok) {|r| AccountMapping.extract_single(r.body, :read) }
8
+ default_handler(:ok) { |r| AccountMapping.extract_single(r.body, :read) }
9
9
  get '/v2/account' => :info
10
10
  end
11
11
  end
@@ -5,7 +5,7 @@ module DropletKit
5
5
  include ErrorHandlingResourcable
6
6
 
7
7
  resources do
8
- default_handler(:ok) {|r| BalanceMapping.extract_single(r.body, :read) }
8
+ default_handler(:ok) { |r| BalanceMapping.extract_single(r.body, :read) }
9
9
  get '/v2/customers/my/balance' => :info
10
10
  end
11
11
  end
@@ -11,7 +11,7 @@ module DropletKit
11
11
  end
12
12
 
13
13
  action :create, 'POST /v2/domains/:for_domain/records' do
14
- body {|object| DomainRecordMapping.representation_for(:create, object) }
14
+ body { |object| DomainRecordMapping.representation_for(:create, object) }
15
15
  handler(201) { |response| DomainRecordMapping.extract_single(response.body, :read) }
16
16
  end
17
17
 
@@ -24,7 +24,7 @@ module DropletKit
24
24
  end
25
25
 
26
26
  action :update, 'PUT /v2/domains/:for_domain/records/:id' do
27
- body {|object| DomainRecordMapping.representation_for(:update, object) }
27
+ body { |object| DomainRecordMapping.representation_for(:update, object) }
28
28
  handler(200) { |response| DomainRecordMapping.extract_single(response.body, :read) }
29
29
  end
30
30
  end
@@ -4,14 +4,14 @@ module DropletKit
4
4
  class DropletActionResource < ResourceKit::Resource
5
5
  include ErrorHandlingResourcable
6
6
 
7
- ACTIONS_WITHOUT_INPUT = %w(reboot power_cycle shutdown power_off power_on
8
- password_reset enable_ipv6 enable_backups disable_backups
9
- enable_private_networking)
7
+ ACTIONS_WITHOUT_INPUT = %w[reboot power_cycle shutdown power_off power_on
8
+ password_reset enable_ipv6 enable_backups disable_backups
9
+ enable_private_networking].freeze
10
10
 
11
- TAG_ACTIONS = %w(
11
+ TAG_ACTIONS = %w[
12
12
  enable_backups disable_backups power_cycle power_on power_off shutdown
13
13
  enable_private_networking enable_ipv6 snapshot
14
- )
14
+ ].freeze
15
15
 
16
16
  resources do
17
17
  default_handler(422) { |response| ErrorMapping.fail_with(FailedCreate, response.body) }
@@ -45,13 +45,13 @@ module DropletKit
45
45
  handler(204) { |_| true }
46
46
  end
47
47
 
48
- action :add_tags, 'POST /v2/firewalls/:id/tags' do
49
- body { |tags| { tags: tags}.to_json }
48
+ action :add_tags, 'POST /v2/firewalls/:id/tags' do
49
+ body { |tags| { tags: tags }.to_json }
50
50
  handler(204) { |_| true }
51
51
  end
52
52
 
53
53
  action :remove_tags, 'DELETE /v2/firewalls/:id/tags' do
54
- body { |tags| { tags: tags}.to_json }
54
+ body { |tags| { tags: tags }.to_json }
55
55
  handler(204) { |_| true }
56
56
  end
57
57
 
@@ -19,7 +19,7 @@ module DropletKit
19
19
  end
20
20
 
21
21
  action :update, 'PUT /v2/images/:id' do
22
- body {|image| ImageMapping.representation_for(:update, image) }
22
+ body { |image| ImageMapping.representation_for(:update, image) }
23
23
  handler(200) { |response| ImageMapping.extract_single(response.body, :read) }
24
24
  end
25
25
  end
@@ -15,17 +15,15 @@ module DropletKit
15
15
  end
16
16
 
17
17
  action :create, 'POST /v2/kubernetes/clusters' do
18
- body do |object|
18
+ body do |object|
19
19
  # This ensures that both a hash and an instance of KubernetesNodePool can be passed
20
20
  # into the node_pools array
21
- #
21
+ #
22
22
  # Ex:
23
23
  # KubernetesCluster.new(node_pools: [{}])
24
24
  # or
25
25
  # KubernetesCluster.new(node_pools: [KubernetesNodePool.new()])
26
- if object.respond_to?(:node_pools) && object.node_pools.respond_to?(:map)
27
- object.node_pools = object.node_pools.map(&:to_hash)
28
- end
26
+ object.node_pools = object.node_pools.map(&:to_hash) if object.respond_to?(:node_pools) && object.node_pools.respond_to?(:map)
29
27
 
30
28
  KubernetesClusterMapping.representation_for(:create, object)
31
29
  end
@@ -21,7 +21,7 @@ module DropletKit
21
21
  end
22
22
 
23
23
  action :update, 'PUT /v2/load_balancers/:id' do
24
- body {|load_balancer| LoadBalancerMapping.representation_for(:update, load_balancer) }
24
+ body { |load_balancer| LoadBalancerMapping.representation_for(:update, load_balancer) }
25
25
  handler(200) { |response| LoadBalancerMapping.extract_single(response.body, :read) }
26
26
  handler(422) { |response| ErrorMapping.fail_with(FailedUpdate, response.body) }
27
27
  end
@@ -54,7 +54,7 @@ module DropletKit
54
54
  elsif resource.respond_to?(:urn) && resource.urn && DropletKit::BaseModel.valid_urn?(resource.urn)
55
55
  resource.urn
56
56
  else
57
- raise DropletKit::Error.new("cannot assign resource without valid urn: #{resource}")
57
+ raise DropletKit::Error, "cannot assign resource without valid urn: #{resource}"
58
58
  end
59
59
  end
60
60
  end
@@ -5,7 +5,7 @@ module DropletKit
5
5
  include ErrorHandlingResourcable
6
6
 
7
7
  resources do
8
- default_handler(:ok, :created) {|r| SSHKeyMapping.extract_single(r.body, :read) }
8
+ default_handler(:ok, :created) { |r| SSHKeyMapping.extract_single(r.body, :read) }
9
9
 
10
10
  action :all, 'GET /v2/account/keys' do
11
11
  query_keys :per_page, :page
@@ -13,14 +13,14 @@ module DropletKit
13
13
  end
14
14
 
15
15
  action :create, 'POST /v2/account/keys' do
16
- body {|object| SSHKeyMapping.representation_for(:create, object) }
16
+ body { |object| SSHKeyMapping.representation_for(:create, object) }
17
17
  end
18
18
 
19
19
  action :find, 'GET /v2/account/keys/:id'
20
20
  action :delete, 'DELETE /v2/account/keys/:id'
21
21
 
22
22
  action :update, 'PUT /v2/account/keys/:id' do
23
- body {|ssh_key| SSHKeyMapping.representation_for(:update, ssh_key) }
23
+ body { |ssh_key| SSHKeyMapping.representation_for(:update, ssh_key) }
24
24
  end
25
25
  end
26
26
 
@@ -11,7 +11,7 @@ module DropletKit
11
11
  type: 'attach',
12
12
  droplet_id: hash[:droplet_id],
13
13
  volume_id: hash[:volume_id], # seems redundant to the id in the url?
14
- region: hash[:region], # seems redundant - inferred from the droplet?
14
+ region: hash[:region] # seems redundant - inferred from the droplet?
15
15
  }.to_json
16
16
  end
17
17
  handler(201, 200) { |response| ActionMapping.extract_single(response.body, :read) }
@@ -23,7 +23,7 @@ module DropletKit
23
23
  type: 'detach',
24
24
  droplet_id: hash[:droplet_id],
25
25
  volume_id: hash[:volume_id], # seems redundant to the id in the url?
26
- region: hash[:region], # seems redundant - inferred from the droplet?
26
+ region: hash[:region] # seems redundant - inferred from the droplet?
27
27
  }.to_json
28
28
  end
29
29
  handler(201, 200) { |response| ActionMapping.extract_single(response.body, :read) }
@@ -34,7 +34,7 @@ module DropletKit
34
34
  {
35
35
  type: 'resize',
36
36
  size_gigabytes: hash[:size_gigabytes],
37
- region: hash[:region],
37
+ region: hash[:region]
38
38
  }.to_json
39
39
  end
40
40
  handler(201, 200) { |response| ActionMapping.extract_single(response.body, :read) }
@@ -26,16 +26,16 @@ module DropletKit
26
26
  end
27
27
 
28
28
  action :update, 'PUT /v2/vpcs/:id' do
29
- body {|vpc| VPCMapping.representation_for(:update, vpc) }
29
+ body { |vpc| VPCMapping.representation_for(:update, vpc) }
30
30
  handler(200) { |response| VPCMapping.extract_single(response.body, :read) }
31
31
  handler(422) { |response| ErrorMapping.fail_with(FailedUpdate, response.body) }
32
32
  end
33
33
 
34
34
  action :patch, 'PATCH /v2/vpcs/:id' do
35
- body {|vpc| VPCMapping.representation_for(:patch, vpc) }
36
- handler(200) { |response| VPCMapping.extract_single(response.body, :read) }
37
- handler(422) { |response| ErrorMapping.fail_with(FailedUpdate, response.body) }
38
- end
35
+ body { |vpc| VPCMapping.representation_for(:patch, vpc) }
36
+ handler(200) { |response| VPCMapping.extract_single(response.body, :read) }
37
+ handler(422) { |response| ErrorMapping.fail_with(FailedUpdate, response.body) }
38
+ end
39
39
 
40
40
  action :delete, 'DELETE /v2/vpcs/:id' do
41
41
  handler(204) { |_| true }
@@ -5,29 +5,29 @@ module DropletKit
5
5
  def self.camelize(term)
6
6
  string = term.to_s
7
7
  string.sub!(/^[a-z\d]*/, &:capitalize)
8
- string.gsub!(%r{(?:_|(/))([a-z\d]*)}i) { $2.capitalize }
9
- string.gsub!('/'.freeze, '::'.freeze)
8
+ string.gsub!(%r{(?:_|(/))([a-z\d]*)}i) { Regexp.last_match(2).capitalize }
9
+ string.gsub!('/', '::')
10
10
  string
11
11
  end
12
12
 
13
13
  def self.underscore(term)
14
- return term unless /[A-Z-]|::/ =~ term
14
+ return term unless /[A-Z-]|::/.match?(term)
15
15
 
16
- word = term.to_s.gsub('::'.freeze, '/'.freeze)
17
- word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2'.freeze)
18
- word.gsub!(/([a-z\d])([A-Z])/, '\1_\2'.freeze)
19
- word.tr!('-'.freeze, '_'.freeze)
16
+ word = term.to_s.gsub('::', '/')
17
+ word.gsub!(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
18
+ word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
19
+ word.tr!('-', '_')
20
20
  word.downcase!
21
21
  word
22
22
  end
23
23
 
24
24
  def self.transform_keys(hash, &block)
25
25
  return hash.transform_keys(&block) if hash.respond_to?(:transform_keys)
26
- return to_enum(__caller__) unless block_given?
26
+ return to_enum(__caller__) unless block
27
27
 
28
28
  {}.tap do |result|
29
29
  hash.each do |key, value|
30
- result[block.call(key)] = value
30
+ result[yield(key)] = value
31
31
  end
32
32
  end
33
33
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DropletKit
4
- VERSION = "3.17.0"
4
+ VERSION = '3.18.0'
5
5
  end
data/lib/droplet_kit.rb CHANGED
@@ -185,11 +185,11 @@ module DropletKit
185
185
  attr_writer :limit, :remaining
186
186
 
187
187
  def limit
188
- @limit.to_i if @limit
188
+ @limit&.to_i
189
189
  end
190
190
 
191
191
  def remaining
192
- @remaining.to_i if @remaining
192
+ @remaining&.to_i
193
193
  end
194
194
  end
195
195
  end
@@ -4,17 +4,16 @@ require 'droplet_kit'
4
4
  require 'droplet_kit/utils'
5
5
 
6
6
  namespace :doc do
7
+ desc 'Generate a resource documentation'
7
8
  task :resources do
8
9
  resources = DropletKit::Client.resources
9
10
 
10
11
  resources.each do |key, klass|
11
- if (ENV['SKIP_CLASSES'] || '').split(',').include?(klass.name)
12
- next
13
- end
12
+ next if ENV.fetch('SKIP_CLASSES', '').split(',').include?(klass.name)
14
13
 
15
- class_name = DropletKit::Utils.underscore klass.name.split('::'.freeze).last
14
+ class_name = DropletKit::Utils.underscore klass.name.split('::').last
16
15
  human_name = class_name.dup
17
- human_name.tr!('_'.freeze, ' '.freeze)
16
+ human_name.tr!('_', ' ')
18
17
  human_name.gsub!(/([a-z\d]*)/i) { |match| match.downcase }
19
18
  human_name.gsub!(/\A\w/) { |match| match.upcase }
20
19
 
@@ -23,13 +22,13 @@ namespace :doc do
23
22
  puts " client = DropletKit::Client.new(access_token: 'TOKEN')"
24
23
  puts " client.#{key} #=> #{klass.name}"
25
24
  puts
26
- puts "Actions supported: "
25
+ puts 'Actions supported: '
27
26
  puts
28
27
  klass._resources.each do |action|
29
- action_options = action.path.scan(/\:[\w_\-]+/i)
28
+ action_options = action.path.scan(/:[\w_\-]+/i)
30
29
  params = []
31
30
 
32
- if action.body && action.body.arity > 0
31
+ if action.body&.arity&.positive?
33
32
  resource = class_name.dup
34
33
  resource.gsub!('_resource', '')
35
34
  resource.downcase!
@@ -38,7 +37,7 @@ namespace :doc do
38
37
 
39
38
  if action_options.any?
40
39
  action_string = action_options.map do |option|
41
- option.gsub!(/^\:/, '')
40
+ option.gsub!(/^:/, '')
42
41
  "#{option}: '#{option}'"
43
42
  end.join(', ')
44
43