Sha256: 66958d23d03a7d34be8346f80527e8b89f96a0ce28724fd68f9b70b1e1d8f0e7

Contents?: true

Size: 735 Bytes

Versions: 2

Compression:

Stored size: 735 Bytes

Contents

module Hcloud
  class IsoResource < AbstractResource
    include Enumerable

    def all
      Oj.load(request("isos").run.body)["isos"].map do |x|
        Iso.new(x, self, client)
      end
    end

    def [](arg)
      case arg
      when Integer
        begin
          find(arg)
        rescue Error::NotFound
        end
      when String
        find_by(name: arg)
      end
    end

    def find(id)
      Iso.new(
        Oj.load(request("isos/#{id.to_i}").run.body)["iso"],
        self,
        client
      )
    end

    def find_by(name:)
      j = Oj.load(request("isos", q: {name: name}).run.body)["isos"]
      return if j.none?
      j.each do |x|
        return Iso.new(x, self, client)
      end
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hcloud-0.1.0.pre.alpha4 lib/hcloud/iso_resource.rb
hcloud-0.1.0.pre.alpha3 lib/hcloud/iso_resource.rb