Sha256: 6dd84bffd473b7a078b79185f79f12ee4bdbd5774f5924db0b959f6234ab072a

Contents?: true

Size: 1.97 KB

Versions: 3

Compression:

Stored size: 1.97 KB

Contents

require 'sinatra/extension'

module Telemetry
  module Snmp
    module Controller
      module OIDGroups
        extend Sinatra::Extension

        get '' do
          groups = {}
          Telemetry::Snmp::Data::Model::OIDGroup.all.each do |group|
            groups[group.values[:id]] = group.values
          end

          groups
        end

        get '/:id' do
          group = Telemetry::Snmp::Data::Model::OIDGroup[params[:id]]
          status 404 if group.nil?
          { error: true, message: "#{params[:id]} not found" } if group.nil?

          group.values
        end

        post '' do
          body = MultiJson.load(request.body.read, symbolize_keys: true)
          if body[:name].nil?
            status 400
            { error: true, message: 'name cannot be null for new record' }
          end

          {
            id: Telemetry::Snmp::Data::Model.OIDGroup.insert(
              name: body[:name],
              active: body[:active] || 1,
              created: Sequel::CURRENT_TIMESTAMP
            ),
            name: body[:name]
          }
        end

        put '/:id' do
          group = Telemetry::Snmp::Data::Model::OIDGroup[params[:id]]
          status 404 if group.nil?
          { error: true, message: "#{params[:id]} not found" } if group.nil?

          status 405
          { error: true, message: 'puts not supported', id: params[:id] }
        end

        patch '/:id' do
          group = Telemetry::Snmp::Data::Model::OIDGroup[params[:id]]
          status 404 if group.nil?
          { error: true, message: "#{params[:id]} not found" } if group.nil?

          status 405
          { error: true, message: 'patch not supported', id: params[:id] }
        end

        delete '/:id' do
          group = Telemetry::Snmp::Data::Model::OIDGroup[params[:id]]
          status 404 if group.nil?
          { error: true, message: "#{params[:id]} not found" } if group.nil?

          { success: !group.delete, id: params[:id] }
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
telemetry-snmp-0.3.0 lib/telemetry/snmp/controllers/oid_groups.rb
telemetry-snmp-0.2.0 lib/telemetry/snmp/controllers/oid_groups.rb
telemetry-snmp-0.1.0 lib/telemetry/snmp/controllers/oid_groups.rb