Class: Omnijack::Endpoint

Inherits:
Omnijack show all
Includes:
Chef::Mixin::ParamsValidate, Config
Defined in:
lib/omnijack/endpoint.rb,
lib/omnijack/endpoint/list.rb,
lib/omnijack/endpoint/metadata.rb,
lib/omnijack/endpoint/platforms.rb

Overview

A parent class for Omnijack API endpoints

Author:

Direct Known Subclasses

List, Metadata, Platforms

Defined Under Namespace

Classes: List, Metadata, Platforms

Constant Summary

Constants inherited from Omnijack

VERSION

Instance Attribute Summary

Attributes inherited from Omnijack

#args, #name

Instance Method Summary collapse

Constructor Details

#initialize(name, args = {}) ⇒ Endpoint

Returns a new instance of Endpoint.



38
39
40
41
# File 'lib/omnijack/endpoint.rb', line 38

def initialize(name, args = {})
  super
  base_url(args[:base_url])
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_id, args = nil) ⇒ Object

Make class items accessible via methods

Parameters:

  • method_id (Symbol)


48
49
50
# File 'lib/omnijack/endpoint.rb', line 48

def method_missing(method_id, args = nil)
  args.nil? && to_h[method_id] || super
end

Instance Method Details

#[](key) ⇒ String, NilClass

Make class items accessible via hash keys

@param key

Returns:

  • (String, NilClass)


58
59
60
# File 'lib/omnijack/endpoint.rb', line 58

def [](key)
  to_h[key]
end

#base_url(arg = nil) ⇒ String

The base URL of the Omnitruck API

Parameters:

  • arg (String, NilClass) (defaults to: nil)

Returns:

  • (String)


83
84
85
86
# File 'lib/omnijack/endpoint.rb', line 83

def base_url(arg = nil)
  # TODO: Better URL validation
  set_or_return(:base_url, arg, kind_of: String, default: DEFAULT_BASE_URL)
end

#to_hHash

Offer a hash representation of the object

Returns:

  • (Hash)


67
68
69
70
# File 'lib/omnijack/endpoint.rb', line 67

def to_h
  # TODO: Use a Mash -- some keys are better off addressed as strings
  JSON.parse(raw_data, symbolize_names: true)
end