Sha256: 71942a51b6848624637f6ff6aae62ae4792868c162e08066a99aa98b82f8f1fb

Contents?: true

Size: 714 Bytes

Versions: 1

Compression:

Stored size: 714 Bytes

Contents

require 'open-uri'
require 'cymbal'

module Linodians
  ##
  # Employee object
  class Employee
    def initialize(params = {})
      @data = Cymbal.symbolize params
      @data.freeze
    end

    def photo
      @photo ||= open(PHOTO_URL % username, &:read)
    end

    def [](value)
      @data[value.to_sym]
    end

    def to_json(*args, &block)
      @data.to_json(*args, &block)
    end

    def respond_to?(method, _ = false)
      @data.key?(method) || super
    end

    def to_h
      @data.dup
    end

    private

    def method_missing(method, *args, &block)
      return super unless @data.key?(method)
      define_singleton_method(method) { @data[method] }
      send(method)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
linodians-1.0.1 lib/linodians/employee.rb