Class: S2Netbox::ApiRequest
- Inherits:
-
Object
- Object
- S2Netbox::ApiRequest
show all
- Includes:
- Helpers
- Defined in:
- lib/s2_netbox/api_request.rb
Class Method Summary
collapse
Methods included from Helpers
#blank?, included
Class Method Details
.build_command(name, params = nil) ⇒ Object
75
76
77
|
# File 'lib/s2_netbox/api_request.rb', line 75
def self.build_command(name, params=nil)
"<COMMAND name='#{name}' num='1'>#{params ? build_params(params) : ''}</COMMAND>"
end
|
.build_params(params = {}) ⇒ Object
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/s2_netbox/api_request.rb', line 53
def self.build_params(params={})
res = '<PARAMS>'
params.each do |k, v|
if v.is_a?(Hash)
res << "<#{k}>"
singular = v[:singular_node_name]
v[:values].each do |inner_value|
res << "<#{singular}>#{inner_value}</#{singular}>"
end
res << "</#{k}>"
else
res << "<#{k}>#{v}</#{k}>"
end
end
res << '</PARAMS>'
end
|
.command_for_method(method_name) ⇒ Object
45
46
47
48
49
50
51
|
# File 'lib/s2_netbox/api_request.rb', line 45
def self.command_for_method(method_name)
if command_map && command_map[method_name]
return command_map[method_name]
else
return "#{method_name.to_s.tr('_', ' ').titlecase.delete(' ')}#{name.split('::').last}"
end
end
|
.command_map ⇒ Object
37
38
39
|
# File 'lib/s2_netbox/api_request.rb', line 37
def self.command_map
nil
end
|
.map_attributes(attributes) ⇒ Object
79
80
81
82
83
|
# File 'lib/s2_netbox/api_request.rb', line 79
def self.map_attributes(attributes)
return unless attributes
attributes.map { |k, v| [k.to_s.delete('_').upcase, blank?(v) ? '' : v] }.to_h
end
|
.method_missing(method_name, *arguments, &block) ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/s2_netbox/api_request.rb', line 16
def self.method_missing(method_name, *arguments, &block)
return super unless supported_operations.include?(method_name)
attributes = arguments[0]
session_id = arguments[1]
if arguments.length == 1 && !arguments[0].is_a?(Hash)
attributes = nil
session_id = arguments[0]
end
send_request(command_for_method(method_name), attributes, session_id)
end
|
.provides_command(*command_names) ⇒ Object
6
7
8
9
10
|
# File 'lib/s2_netbox/api_request.rb', line 6
def self.provides_command(*command_names)
define_singleton_method(:supported_operations) do
Array.wrap(command_names)
end
end
|
.respond_to_missing?(method_name, include_private = false) ⇒ Boolean
31
32
33
34
35
|
# File 'lib/s2_netbox/api_request.rb', line 31
def self.respond_to_missing?(method_name, include_private = false)
return true if supported_operations.include?(method_name.to_s)
super
end
|
.send_request(command_name, attributes, session_id = nil) ⇒ Object
12
13
14
|
# File 'lib/s2_netbox/api_request.rb', line 12
def self.send_request(command_name, attributes, session_id=nil)
S2Netbox.request(S2Netbox::BASIC_ENDPOINT, build_command(command_name, map_attributes(attributes)), session_id)
end
|
.supported_operations ⇒ Object
41
42
43
|
# File 'lib/s2_netbox/api_request.rb', line 41
def self.supported_operations
[]
end
|