Class: Riddl::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby/riddl/client.rb

Overview

}}}

Defined Under Namespace

Classes: HTTPRequest, Resource, XMPPRequest

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base, riddl = nil, options = {}) ⇒ Client

{{{



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/ruby/riddl/client.rb', line 87

def initialize(base, riddl=nil, options={})
  @base = base.nil? ? '' : base.gsub(/\/+$/,'')
  @options = options
  @wrapper = nil
  if @base !~ RIDDL_URL_PATTERN
    raise ConnectionError, 'An RFC 3986 URI as target is required. Pro tip: (http|https|xmpp)://...'
  end
  if URI.parse(@base).scheme == 'xmpp' && !((@options[:jid] && @options[:pass]) || @options[:xmpp].is_a?(Blather::Client))
    raise ConnectionError, 'XMPP connections need jid/pass or Blather::client object passed as options to be successful.'
  end  
  if URI.parse(@base).scheme == 'xmpp' && @options[:jid] && @options[:pass]
    sig = SignalWait.new
    Thread::abort_on_exception = true
    Thread.new do
      begin
        EM.send EM.reactor_running? ? :defer : :run do
          client = Blather::Client.setup @options[:jid], @options[:pass]
          client.register_handler(:ready) { sig.continue }
          client.connect
          @options[:xmpp] = client
          sig.continue
        end
      rescue
        raise ConnectionError, 'XMPP connection not successful.'
      end  
    end
    sig.wait 2
  end
  unless riddl.nil?
    @wrapper = (riddl.class == Riddl::Wrapper ? riddl : Riddl::Wrapper::new(riddl))
    if @wrapper.declaration? && !base.nil?
      @wrapper = @wrapper.declaration.description
    end
    raise SpecificationError, 'No RIDDL description or declaration found.' if !@wrapper.description? && !@wrapper.declaration?
    raise SpecificationError, 'RIDDL does not conform to specification' unless @wrapper.validate!
    @wrapper.load_necessary_handlers!
    @wrapper.load_necessary_roles!
  end
end

Instance Attribute Details

#baseObject (readonly)

Returns the value of attribute base.



126
127
128
# File 'lib/ruby/riddl/client.rb', line 126

def base
  @base
end

Class Method Details

.facade(riddl, options = {}) ⇒ Object



138
139
140
# File 'lib/ruby/riddl/client.rb', line 138

def self::facade(riddl,options={})
  new(nil,riddl,options)
end

.interface(base, riddl, options = {}) ⇒ Object



135
136
137
# File 'lib/ruby/riddl/client.rb', line 135

def self::interface(base,riddl,options={})
  new(base,riddl,options)
end

.location(base, options = {}) ⇒ Object



132
133
134
# File 'lib/ruby/riddl/client.rb', line 132

def self::location(base,options={})
  new(base,nil,options)
end

Instance Method Details

#close_xmppObject



128
129
130
# File 'lib/ruby/riddl/client.rb', line 128

def close_xmpp
  @options[:xmpp].close if @options[:xmpp]
end

#delete(parameters = []) ⇒ Object



151
# File 'lib/ruby/riddl/client.rb', line 151

def delete(parameters = []);          resource.delete(parameters);          end

#get(parameters = []) ⇒ Object



145
# File 'lib/ruby/riddl/client.rb', line 145

def get(parameters = []);             resource.get(parameters);             end

#post(parameters = []) ⇒ Object



147
# File 'lib/ruby/riddl/client.rb', line 147

def post(parameters = []);            resource.post(parameters);            end

#put(parameters = []) ⇒ Object



149
# File 'lib/ruby/riddl/client.rb', line 149

def put(parameters = []);             resource.put(parameters);             end

#request(what) ⇒ Object



153
# File 'lib/ruby/riddl/client.rb', line 153

def request(what)                     resource.request(what);               end

#resource(path = "") ⇒ Object



142
143
144
# File 'lib/ruby/riddl/client.rb', line 142

def resource(path="")
  Resource.new(@base,@wrapper,path,@options)
end

#simulate_delete(parameters = []) ⇒ Object



152
# File 'lib/ruby/riddl/client.rb', line 152

def simulate_delete(parameters = []); resource.simulate_delete(parameters); end

#simulate_get(parameters = []) ⇒ Object



146
# File 'lib/ruby/riddl/client.rb', line 146

def simulate_get(parameters = []);    resource.simulate_get(parameters);    end

#simulate_post(parameters = []) ⇒ Object



148
# File 'lib/ruby/riddl/client.rb', line 148

def simulate_post(parameters = []);   resource.simulate_post(parameters);   end

#simulate_put(parameters = []) ⇒ Object



150
# File 'lib/ruby/riddl/client.rb', line 150

def simulate_put(parameters = []);    resource.simulate_put(parameters);    end

#simulate_request(what) ⇒ Object



154
# File 'lib/ruby/riddl/client.rb', line 154

def simulate_request(what)            resource.simulate_request(what);      end

#ws(blk) ⇒ Object



155
# File 'lib/ruby/riddl/client.rb', line 155

def ws(blk)                           resource.ws(blk);                     end