Sha256: 7105b7deb57f2a1af1d4415388bb2d76d77f5aeee10dbfce66b949aec623dfef

Contents?: true

Size: 1019 Bytes

Versions: 1

Compression:

Stored size: 1019 Bytes

Contents

require 'active_support/inflector'

module NewRelic
  module RestApi
    class Resource
      include Virtus.model

      def self.all(options = {})
        response = connection.get(path(options), options.delete(:params))
        body = response.body.dig(*resource_name)

        ResponseCollection.new(response, body: body) do |record|
          new(record)
        end
      end

      def self.find(id)
        response = connection.get(path(id: id))
        body = response.body[resource_name.singularize]

        new(body)
      end

      def self.path(options = {})
        [
          NewRelic::RestApi.config.api_version,
          requested_path(options)
        ].compact.join('/').concat('.json')
      end

      def self.requested_path(options = {})
        [resource_name, options[:id]].compact.join('/')
      end

      def self.resource_name
        name.demodulize.underscore.dasherize.pluralize
      end

      def self.connection
        NewRelic::RestApi.connection
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
new_relic-rest_api-0.1.0 lib/new_relic/rest_api/resource.rb