Repository URL to install this package:
|
Version:
0.1.1 ▾
|
# frozen_string_literal: true
module Fortinet
# Represents a firewall address object
class FirewallObject
def initialize(data)
@data = data
end
def self.all
Fortinet.do('get', '/api/v2/cmdb/firewall/address')['results'].map { |data| new(data) }
end
def self.get(name)
data = Fortinet.do('get', "/api/v2/cmdb/firewall/address/#{name}")['results'].first
new(data)
rescue RestClient::NotFound
nil
end
def self.create(name)
Fortinet.do('post', '/api/v2/cmdb/firewall/address', { 'name' => name })
get(name)
end
def delete
Fortinet.do('delete', "/api/v2/cmdb/firewall/address/#{@data['name']}")
end
def details
@data
end
def set(what, value)
Fortinet.do('put', "/api/v2/cmdb/firewall/address/#{@data['name']}", { 'name' => @data['name'], what => value })
end
def name
@data['name']
end
def range=(range)
Fortinet.do('put', "/api/v2/cmdb/firewall/address/#{@data['name']}", { 'name' => @data['name'],
'type' => 'iprange',
'subnet' => "#{range.first} #{range.last}" })
end
# Meta program up some nice methods
%w[subnet comment color type].each do |property|
define_method property do
@data[property]
end
define_method "#{property}=" do |value|
set(property, value)
end
end
end
end