Class: WebApi

Inherits:
Object
  • Object
show all
Defined in:
lib/web_api.rb,
lib/web_api/web_api.rb

Overview

This Gem

Constant Summary collapse

VERSION =
'2.0.221220'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base = '', type: :get, data: {}, header: {}, dumper: WebApi.get_dumper, parser: WebApi.get_parsers, &block) ⇒ WebApi

Returns a new instance of WebApi.



14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/web_api/web_api.rb', line 14

def initialize(base =  '',
               type:   :get,
               data:   {},
               header: {},
               dumper: WebApi.get_dumper,
               parser: WebApi.get_parsers,
               &block)
  @base, @type, @data, @header, @dumper, @parser, @block =
   base,  type,  data,  header,  dumper,  parser,  block
  @strict = false
  @webmethods = {}
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(symbol, extension = '', type: nil, data: {}, header: {}, dumper: nil, parser: nil, &block) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/web_api/web_api.rb', line 47

def method_missing(symbol , extension =  '',
                            type:   nil,
                            data:   {},
                            header: {},
                            dumper: nil,
                            parser: nil,
                            &block)
  unless @webmethods.has_key? symbol
    super if @strict
    add symbol
  end
  # user passed data as first argument?
  extension, data = '', extension unless extension.is_a? String
  @webmethods[symbol].run(extension, type, data, header, dumper, parser,
                          &block)
end

Class Method Details

.get_dumperObject



2
3
4
# File 'lib/web_api/web_api.rb', line 2

def WebApi.get_dumper
  (defined? JSON)? JSON.method(:dump) : :none
end

.get_parsersObject



6
7
8
9
10
11
12
# File 'lib/web_api/web_api.rb', line 6

def WebApi.get_parsers
  parsers = Hash.new :none
  parsers['application/json'] = JSON.method(:parse)    if defined? JSON
  parsers['text/csv']  = CSV.method(:parse)            if defined? CSV
  parsers['text/html'] = Nokogiri::HTML.method(:parse) if defined? Nokogiri
  return parsers
end

Instance Method Details

#add(method, target = method.to_s, type: @type, data: {}, header: {}, dumper: @dumper, parser: @parser, &block) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/web_api/web_api.rb', line 31

def add(method, target =  method.to_s,
                type:   @type,
                data:   {},
                header: {},
                dumper: @dumper,
                parser: @parser,
                &block)
  @webmethods[method] = WebApiMethod.new(@base+target,
                                         type,
                                         @data.merge(data),
                                         @header.merge(header),
                                         dumper,
                                         parser,
                                         &(block || @block))
end

#strict!(t = true) ⇒ Object



27
28
29
# File 'lib/web_api/web_api.rb', line 27

def strict!(t = true)
  @strict = t
end