Sha256: b0cd154de31d5bd48f230fdfe07f4165be3a6a013cf624d82168858902023e42

Contents?: true

Size: 1.44 KB

Versions: 3

Compression:

Stored size: 1.44 KB

Contents

require 'sauce_whisk/rest_request_builder'

module SauceWhisk
  class Tunnels
    extend RestRequestBuilder

    def self.resource
      "#{SauceWhisk.username}/tunnels"
    end

    def self.all(opts = {:fetch_each => true})
      all_tunnels = JSON.parse get
      fetch_each = opts[:fetch_each]

      unless fetch_each
        return all_tunnels
      end

      tunnels = all_tunnels.map do |tunnel|
        fetch tunnel
      end

      return tunnels
    end

    def self.open(opts, wait_until_ready = true)
      new_tunnel_parameters = JSON.parse((post :payload => opts), :symbolize_names => true)
      new_tunnel = fetch new_tunnel_parameters[:id]

      while(["starting", "booting"].include? new_tunnel.status)

        new_tunnel = fetch new_tunnel_parameters[:id]
      end

      return new_tunnel
    end

    def self.stop tunnel_id
      delete tunnel_id
    end

    def self.fetch tunnel_id
      unless tunnel_id
        raise ArgumentError, "Can't fetch a tunnel without an id (you provided blank or nil)"
      end
      tunnel_parameters = JSON.parse(get(tunnel_id), :symbolize_names => true)
      Tunnel.new tunnel_parameters
    end
  end

  class Tunnel
    attr_reader :id, :owner, :status, :host, :creation_time, :ssh_port, :tunnel_identifier

    def initialize(params)
      params.each do |param, val|
        self.instance_variable_set("@#{param}", val)
      end
    end

    def stop
      SauceWhisk::Tunnels.stop self.id
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sauce_whisk-0.3.2 lib/sauce_whisk/tunnels.rb
sauce_whisk-0.2.2 lib/sauce_whisk/tunnels.rb
sauce_whisk-0.2.1 lib/sauce_whisk/tunnels.rb