droplet_kit 3.17.0 → 3.18.0

Sign up to get free protection for your applications and to get access to all the features.
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