bimbly 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/bimbly.rb +77 -12
- data/lib/{errors_by_name.yml → error_codes.yml} +0 -0
- data/lib/object_sets_v2.yml +7048 -0
- metadata +4 -5
- data/lib/errors_by_code.yml +0 -2137
- data/lib/object_sets.yml +0 -6162
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c3e11a328ed271b7f1c97eef441d9c7b50c6952e
|
4
|
+
data.tar.gz: c64b8e7607dab495c1af4417f8659d4e1ad44cc8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91700face2b8c4d46599420e760087a616488b661522d4c58e8245f861e196bf97268ee98c1d8bd29f9c2a6ef2f94efad2c29a2d8b55ecc2cc3ce6b88099b731
|
7
|
+
data.tar.gz: 65c2d30304aa5b3943474623f7429f477ddcd781bbd15e4c6cedea8c4c60bb7d386b7c287abc111864425651c26ade0cc9c0182065574066e3f9d8729f869532
|
data/lib/bimbly.rb
CHANGED
@@ -6,20 +6,26 @@ require 'pp'
|
|
6
6
|
|
7
7
|
class Bimbly
|
8
8
|
attr_reader :data_type, :error_codes, :error_names, :obj_sets
|
9
|
-
attr_accessor :array, :base_url, :cert, :doc_pointer, :file, :file_select, :headers, :
|
10
|
-
:param_pointer, :password, :pointer, :port, :user, :verb
|
9
|
+
attr_accessor :array, :base_url, :cert, :doc_pointer, :file, :file_select, :headers, :meth_name,
|
10
|
+
:menu, :param_pointer, :password, :pointer, :port, :req_pointer, :user, :verb
|
11
11
|
|
12
12
|
def initialize(opts = {})
|
13
13
|
# Read in setup files
|
14
|
-
|
15
|
-
|
16
|
-
@
|
14
|
+
#@error_codes = YAML.load(File.read("#{File.dirname(__FILE__)}/errors_by_code.yml"))
|
15
|
+
#@error_names = YAML.load(File.read("#{File.dirname(__FILE__)}/errors_by_name.yml"))
|
16
|
+
@error_codes = YAML.load(File.read("#{File.dirname(__FILE__)}/error_codes.yml"))
|
17
|
+
#@obj_sets = YAML.load(File.read("#{File.dirname(__FILE__)}/object_sets.yml"))
|
18
|
+
@obj_sets = YAML.load(File.read("#{File.dirname(__FILE__)}/object_sets_v2.yml"))
|
17
19
|
@data_type = YAML.load(File.read("#{File.dirname(__FILE__)}/data_types.yml"))
|
18
20
|
|
21
|
+
@meth_name = nil
|
22
|
+
|
19
23
|
@base_url = "NotConnected"
|
20
24
|
@menu = []
|
21
25
|
@param_pointer = @obj_sets
|
22
26
|
@doc_pointer = @obj_sets
|
27
|
+
@req_pointer = @obj_sets
|
28
|
+
|
23
29
|
gen_methods
|
24
30
|
new_connection(opts)
|
25
31
|
end
|
@@ -52,9 +58,9 @@ class Bimbly
|
|
52
58
|
puts "Response Headers:"
|
53
59
|
pp e.response.headers
|
54
60
|
puts "Response Body:"
|
55
|
-
pp e.response.body
|
61
|
+
pp error_format(e.response.body)
|
56
62
|
puts "Response Object:"
|
57
|
-
|
63
|
+
puts e.response.request.inspect
|
58
64
|
end
|
59
65
|
|
60
66
|
begin
|
@@ -64,6 +70,16 @@ class Bimbly
|
|
64
70
|
end
|
65
71
|
end
|
66
72
|
|
73
|
+
def error_format(messages)
|
74
|
+
message_array = []
|
75
|
+
JSON.parse(messages)["messages"].each { |message|
|
76
|
+
message.merge!(@error_names[message["code"]])
|
77
|
+
message.delete("Error_Desc")
|
78
|
+
message_array << message
|
79
|
+
}
|
80
|
+
message_array
|
81
|
+
end
|
82
|
+
|
67
83
|
def new_connection(opts = {})
|
68
84
|
@file = opts[:file]
|
69
85
|
@file_select = opts[:file_select]
|
@@ -126,14 +142,22 @@ class Bimbly
|
|
126
142
|
@verb = nil
|
127
143
|
@payload = nil
|
128
144
|
@uri = nil
|
145
|
+
@meth_name = nil
|
129
146
|
@doc_pointer = @obj_sets
|
130
147
|
@param_pointer = @obj_sets
|
131
148
|
end
|
132
149
|
|
133
150
|
def details
|
151
|
+
puts "Method Selected: #{@meth_name}"
|
134
152
|
puts "URI: #{@uri}"
|
135
153
|
puts "Verb: #{@verb}"
|
136
|
-
|
154
|
+
if not @payload.nil?
|
155
|
+
puts "Payload:"
|
156
|
+
pp @payload
|
157
|
+
else
|
158
|
+
puts "Payload: n/a"
|
159
|
+
end
|
160
|
+
return
|
137
161
|
end
|
138
162
|
|
139
163
|
def doc
|
@@ -143,6 +167,10 @@ class Bimbly
|
|
143
167
|
def parameters
|
144
168
|
@param_pointer
|
145
169
|
end
|
170
|
+
|
171
|
+
def request
|
172
|
+
puts @req_pointer.to_yaml
|
173
|
+
end
|
146
174
|
|
147
175
|
def available_methods
|
148
176
|
self.methods - Object.methods
|
@@ -202,6 +230,7 @@ class Bimbly
|
|
202
230
|
hash[:verb] = verb.downcase.to_sym
|
203
231
|
hash[:url_suffix] = url_suffix
|
204
232
|
hash[:avail_params] = value
|
233
|
+
hash[:request] = @obj_sets[obj_key][op_key]["Request"]
|
205
234
|
hash[:object] = obj_key
|
206
235
|
hash[:op] = op_key
|
207
236
|
|
@@ -218,20 +247,56 @@ class Bimbly
|
|
218
247
|
method_hash = gen_method_hash
|
219
248
|
method_hash.each { |method_name, hash|
|
220
249
|
define_singleton_method(method_name) { |opts = {}|
|
250
|
+
@param_pointer = hash[:avail_params]
|
251
|
+
@doc_pointer = @obj_sets[hash[:object]][hash[:op]]
|
252
|
+
@req_pointer = @obj_sets[hash[:object]][hash[:op]]["Request"]
|
253
|
+
@meth_name = method_name
|
254
|
+
|
221
255
|
raise ArgumentError, "Please provide id" if method_name.match(/id/) and opts[:id].nil?
|
222
256
|
url_suffix = hash[:url_suffix]
|
223
257
|
url_suffix = url_suffix.gsub(/\/id/, "/#{opts[:id]}") if method_name.match(/id/)
|
224
258
|
|
225
|
-
@param_pointer = hash[:avail_params]
|
226
|
-
|
227
259
|
uri = gen_uri(url_suffix: url_suffix,
|
228
260
|
params: opts[:params])
|
229
261
|
|
230
262
|
@uri = uri
|
231
263
|
@verb = hash[:verb]
|
232
|
-
@payload = opts[:payload]
|
233
|
-
|
264
|
+
@payload = opts[:payload]
|
265
|
+
|
266
|
+
if not opts[:params].nil?
|
267
|
+
opts[:params].each { |key, value|
|
268
|
+
raise ArgumentError,
|
269
|
+
"Invalid parameter for #{method_name}: #{key}" unless hash[:avail_params].include?(key)
|
270
|
+
}
|
271
|
+
end
|
234
272
|
|
273
|
+
# Maybe pull this out into its own method
|
274
|
+
# Check for mandatory payload info
|
275
|
+
mando_array = []
|
276
|
+
if not hash[:request].nil?
|
277
|
+
hash[:request].each { |key, value|
|
278
|
+
mando_array << key
|
279
|
+
}
|
280
|
+
end
|
281
|
+
|
282
|
+
raise ArgumentError,
|
283
|
+
"Must supply :payload with attributes #{mando_array} on #{method_name}" if
|
284
|
+
not mando_array.empty? and opts[:payload].nil?
|
285
|
+
|
286
|
+
mando_array.each { |ele|
|
287
|
+
raise ArgumentError,
|
288
|
+
"\'#{ele}\' is a mandatory attribute in the payload for #{method_name}: Please supply these attributes #{mando_array}" unless
|
289
|
+
opts[:payload].keys.to_s.include?(ele)
|
290
|
+
}
|
291
|
+
|
292
|
+
if not opts[:payload].nil?
|
293
|
+
opts[:payload].keys.each { |key|
|
294
|
+
raise ArgumentError,
|
295
|
+
"The attribute \'#{key}\' is not an available attribute for #{method_name}" unless
|
296
|
+
hash[:request].keys.include?(key.to_s)
|
297
|
+
}
|
298
|
+
end
|
299
|
+
|
235
300
|
self
|
236
301
|
}
|
237
302
|
}
|
File without changes
|