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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57076d2c384ab1c50540030c459ff640bed9000a
4
- data.tar.gz: e6b593dd302e9be306fab974337ef312fd3c4951
3
+ metadata.gz: c3e11a328ed271b7f1c97eef441d9c7b50c6952e
4
+ data.tar.gz: c64b8e7607dab495c1af4417f8659d4e1ad44cc8
5
5
  SHA512:
6
- metadata.gz: f9cb1b8d88ce6f6bc1bfc3f895466f3daa7cd9aee020113e1bb533c9b05339f7b3e93bb00010c3e75a248e10a7116213b1a977cfd312a1d41e5e8f6d9416e40f
7
- data.tar.gz: afde0b5c8333ba97968c1a0ac571cd1c4ba213b5ce286ce5068f19545889a8e35721b91ab94b81130ca208619c1188012ae3014d151d86ac15a6506e1a15cfe1
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, :menu,
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
- @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
- @obj_sets = YAML.load(File.read("#{File.dirname(__FILE__)}/object_sets.yml"))
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
- pp e.response.request.inspect
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
- puts "Payload: #{@payload}"
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
- @doc_pointer = @obj_sets[hash[:object]][hash[:op]]
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