Class: Dennis::Group
- Inherits:
-
Object
- Object
- Dennis::Group
- Defined in:
- lib/dennis/group.rb
Class Method Summary collapse
- .all(client, page: nil, per_page: nil) ⇒ Object
- .create(client, name:, external_reference: nil, nameservers: nil) ⇒ Object
- .find_by(client, field, value) ⇒ Object
Instance Method Summary collapse
- #create_or_update_zone(**properties) ⇒ Object
- #create_zone(**properties) ⇒ Object
- #created_at ⇒ Object
- #delete ⇒ Object
- #external_reference ⇒ Object
- #id ⇒ Object
-
#initialize(client, hash) ⇒ Group
constructor
A new instance of Group.
- #name ⇒ Object
- #nameservers ⇒ Object
- #tagged_records(tags) ⇒ Object
- #update(properties) ⇒ Object
- #updated_at ⇒ Object
- #zone(id, field: :id) ⇒ Object
- #zones(**options) ⇒ Object
Constructor Details
#initialize(client, hash) ⇒ Group
Returns a new instance of Group.
46 47 48 49 |
# File 'lib/dennis/group.rb', line 46 def initialize(client, hash) @client = client @hash = hash end |
Class Method Details
.all(client, page: nil, per_page: nil) ⇒ Object
12 13 14 15 16 17 18 19 |
# File 'lib/dennis/group.rb', line 12 def all(client, page: nil, per_page: nil) request = client.api.create_request(:get, 'groups') request.arguments[:page] = page if page request.arguments[:per_page] = per_page if per_page PaginatedArray.create(request.perform.hash, 'groups') do |hash| new(client, hash) end end |
.create(client, name:, external_reference: nil, nameservers: nil) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/dennis/group.rb', line 29 def create(client, name:, external_reference: nil, nameservers: nil) request = client.api.create_request(:post, 'groups') request.arguments[:properties] = { name: name, external_reference: external_reference, nameservers: nameservers } Group.new(client, request.perform.hash['group']) rescue ApiaClient::RequestError => e raise NameserverNotFoundError, e.detail['errors'] if e.code == 'nameserver_not_found' raise ValidationError, e.detail['errors'] if e.code == 'validation_error' raise end |
.find_by(client, field, value) ⇒ Object
21 22 23 24 25 26 27 |
# File 'lib/dennis/group.rb', line 21 def find_by(client, field, value) request = client.api.create_request(:get, 'groups/:group') request.arguments[:group] = { field => value } Group.new(client, request.perform.hash['group']) rescue ApiaClient::RequestError => e e.code == 'group_not_found' ? nil : raise end |
Instance Method Details
#create_or_update_zone(**properties) ⇒ Object
87 88 89 |
# File 'lib/dennis/group.rb', line 87 def create_or_update_zone(**properties) Zone.create_or_update(@client, group: { id: id }, **properties) end |
#create_zone(**properties) ⇒ Object
83 84 85 |
# File 'lib/dennis/group.rb', line 83 def create_zone(**properties) Zone.create(@client, group: { id: id }, **properties) end |
#created_at ⇒ Object
63 64 65 66 67 68 |
# File 'lib/dennis/group.rb', line 63 def created_at return nil if @hash['created_at'].nil? return @hash['created_at'] if @hash['created_at'].is_a?(Time) Time.at(@hash['created_at']) end |
#delete ⇒ Object
119 120 121 122 123 124 |
# File 'lib/dennis/group.rb', line 119 def delete req = @client.api.create_request(:delete, 'groups/:group') req.arguments['group'] = { id: id } req.perform true end |
#external_reference ⇒ Object
59 60 61 |
# File 'lib/dennis/group.rb', line 59 def external_reference @hash['external_reference'] end |
#id ⇒ Object
51 52 53 |
# File 'lib/dennis/group.rb', line 51 def id @hash['id'] end |
#name ⇒ Object
55 56 57 |
# File 'lib/dennis/group.rb', line 55 def name @hash['name'] end |
#nameservers ⇒ Object
77 78 79 80 81 |
# File 'lib/dennis/group.rb', line 77 def nameservers @nameservers ||= @hash['nameservers'].map do |hash| Nameserver.new(@client, hash) end end |
#tagged_records(tags) ⇒ Object
103 104 105 |
# File 'lib/dennis/group.rb', line 103 def tagged_records() Record.all_by_tag(@client, , group: { id: id }) end |
#update(properties) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/dennis/group.rb', line 107 def update(properties) req = @client.api.create_request(:patch, 'groups/:group') req.arguments['group'] = { id: id } req.arguments['properties'] = properties @hash = req.perform.hash['group'] true rescue ApiaClient::RequestError => e raise ValidationError, e.detail['errors'] if e.code == 'validation_error' raise end |
#updated_at ⇒ Object
70 71 72 73 74 75 |
# File 'lib/dennis/group.rb', line 70 def updated_at return nil if @hash['updated_at'].nil? return @hash['updated_at'] if @hash['updated_at'].is_a?(Time) Time.at(@hash['updated_at']) end |
#zone(id, field: :id) ⇒ Object
95 96 97 98 99 100 101 |
# File 'lib/dennis/group.rb', line 95 def zone(id, field: :id) zone = Zone.find_by(@client, field, id) return nil if zone.nil? return nil if zone.group.id != self.id zone end |
#zones(**options) ⇒ Object
91 92 93 |
# File 'lib/dennis/group.rb', line 91 def zones(**) Zone.all_for_group(@client, { id: id }, **) end |