Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
fortinet / lib / fortinet / firewallobject.rb
Size: Mime:
# 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