Floppy-amee 2.0.7 → 2.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -171,7 +171,7 @@ module AMEE
171
171
 
172
172
  def response_ok?(response)
173
173
  case response.code
174
- when '200'
174
+ when '200', '201'
175
175
  return true
176
176
  when '403'
177
177
  raise AMEE::PermissionDenied.new("You do not have permission to perform the requested operation. AMEE Response: #{response.body}")
@@ -190,8 +190,8 @@ module AMEE
190
190
  begin
191
191
  response = send_request(request, format)
192
192
  end while !response_ok?(response)
193
- # Return body of response
194
- return response.body
193
+ # Return response
194
+ return response
195
195
  rescue SocketError
196
196
  raise AMEE::ConnectionFailed.new("Connection failed. Check server name or network connection.")
197
197
  ensure
@@ -34,9 +34,9 @@ module AMEE
34
34
  if doc['children']['dataItems']['rows']
35
35
  doc['children']['dataItems']['rows'].each do |item|
36
36
  item_data = {}
37
- item_data[:label] = item['label']
38
- item_data[:path] = item['path']
39
- item_data[:uid] = item['uid']
37
+ item.each_pair do |key, value|
38
+ item_data[key.to_sym] = value
39
+ end
40
40
  data[:items] << item_data
41
41
  end
42
42
  end
@@ -67,8 +67,12 @@ module AMEE
67
67
  REXML::XPath.each(doc, '/Resources/DataCategoryResource//Children/DataItems/DataItem') do |item|
68
68
  item_data = {}
69
69
  item_data[:uid] = item.attributes['uid'].to_s
70
- item_data[:label] = item.elements['label'].text
71
- item_data[:path] = item.elements['path'] ? item.elements['path'].text : item_data[:uid]
70
+ item.elements.each do |element|
71
+ item_data[element.name.to_sym] = element.text
72
+ end
73
+ if item_data[:path].nil?
74
+ item_data[:path] = item_data[:uid]
75
+ end
72
76
  data[:items] << item_data
73
77
  end
74
78
  # Create object
@@ -79,7 +83,7 @@ module AMEE
79
83
 
80
84
  def self.get(connection, path, items_per_page = 10)
81
85
  # Load data from path
82
- response = connection.get(path, :itemsPerPage => items_per_page)
86
+ response = connection.get(path, :itemsPerPage => items_per_page).body
83
87
  # Parse data from response
84
88
  if response.is_json?
85
89
  cat = Category.from_json(response)
@@ -108,4 +112,4 @@ module AMEE
108
112
 
109
113
  end
110
114
  end
111
- end
115
+ end
@@ -92,7 +92,7 @@ module AMEE
92
92
 
93
93
  def self.get(connection, path, options = {})
94
94
  # Load data from path
95
- response = connection.get(path, options)
95
+ response = connection.get(path, options).body
96
96
  # Parse data from response
97
97
  if response.is_json?
98
98
  item = Item.from_json(response)
@@ -108,7 +108,7 @@ module AMEE
108
108
  end
109
109
 
110
110
  def update(options = {})
111
- connection.put(full_path, options)
111
+ response = connection.put(full_path, options).body
112
112
  rescue
113
113
  raise AMEE::BadData.new("Couldn't update DataItem. Check that your information is correct.")
114
114
  end
@@ -71,7 +71,7 @@ module AMEE
71
71
 
72
72
  def self.get(connection, path)
73
73
  # Load data from path
74
- response = connection.get(path)
74
+ response = connection.get(path).body
75
75
  # Parse data from response
76
76
  data = {}
77
77
  if response.is_json?
@@ -88,7 +88,7 @@ module AMEE
88
88
  end
89
89
 
90
90
  def save!
91
- response = @connection.put(full_path, :value => value)
91
+ response = @connection.put(full_path, :value => value).body
92
92
  end
93
93
 
94
94
  end
@@ -80,7 +80,7 @@ module AMEE
80
80
 
81
81
  def self.get(connection, path)
82
82
  # Load data from path
83
- response = connection.get(path)
83
+ response = connection.get(path).body
84
84
  # Parse data from response
85
85
  if response.is_json?
86
86
  drill = DrillDown.from_json(response)
data/lib/amee/profile.rb CHANGED
@@ -4,7 +4,7 @@ module AMEE
4
4
 
5
5
  def self.list(connection)
6
6
  # Load data from path
7
- response = connection.get('/profiles')
7
+ response = connection.get('/profiles').body
8
8
  # Parse data from response
9
9
  profiles = []
10
10
  if response.is_json?
@@ -48,7 +48,7 @@ module AMEE
48
48
 
49
49
  def self.create(connection)
50
50
  # Create new profile
51
- response = connection.post('/profiles', :profile => true)
51
+ response = connection.post('/profiles', :profile => true).body
52
52
  # Parse data from response
53
53
  if response.is_json?
54
54
  # Read JSON
@@ -425,7 +425,7 @@ module AMEE
425
425
  options[:duration] = "PT#{options[:duration] * 86400}S"
426
426
  end
427
427
  # Load data from path
428
- response = connection.get(path, options)
428
+ response = connection.get(path, options).body
429
429
  return Category.parse(connection, response)
430
430
  rescue
431
431
  raise AMEE::BadData.new("Couldn't load ProfileCategory. Check that your URL is correct.")
@@ -228,7 +228,7 @@ module AMEE
228
228
  options[:duration] = "PT#{options[:duration] * 86400}S"
229
229
  end
230
230
  # Load data from path
231
- response = connection.get(path, options)
231
+ response = connection.get(path, options).body
232
232
  return Item.parse(connection, response)
233
233
  rescue
234
234
  raise AMEE::BadData.new("Couldn't load ProfileItem. Check that your URL is correct.")
@@ -265,9 +265,9 @@ module AMEE
265
265
  options.merge! :dataItemUid => data_item_uid
266
266
  response = connection.post(path, options)
267
267
  if response['Location']
268
- location = response['Location']
268
+ location = response['Location'].match("http://.*?(/.*)")[1]
269
269
  else
270
- category = Category.parse(connection, response)
270
+ category = Category.parse(connection, response.body)
271
271
  location = category.full_path + "/" + category.items[0][:path]
272
272
  end
273
273
  if get_item == true
@@ -283,6 +283,10 @@ module AMEE
283
283
  raise AMEE::BadData.new("Couldn't create ProfileItem. Check that your information is correct.")
284
284
  end
285
285
 
286
+ def self.create_batch(category, items)
287
+ create_batch_without_category(category.connection, category.full_path, items)
288
+ end
289
+
286
290
  def self.create_batch_without_category(connection, category_path, items)
287
291
  if connection.format == :json
288
292
  post_data = ({:profileItems => items}).to_json
@@ -296,8 +300,18 @@ module AMEE
296
300
  end
297
301
 
298
302
  def self.update(connection, path, options = {})
303
+ # Do we want to automatically fetch the item afterwards?
304
+ get_item = options.delete(:get_item)
305
+ get_item = true if get_item.nil?
306
+ # Go
299
307
  response = connection.put(path, options)
300
- return Item.parse(connection, response)
308
+ if get_item
309
+ if response.body.empty?
310
+ return Item.get(connection, path)
311
+ else
312
+ return Item.parse(connection, response.body)
313
+ end
314
+ end
301
315
  rescue
302
316
  raise AMEE::BadData.new("Couldn't update ProfileItem. Check that your information is correct.")
303
317
  end
@@ -306,6 +320,22 @@ module AMEE
306
320
  AMEE::Profile::Item.update(connection, full_path, options)
307
321
  end
308
322
 
323
+ def self.update_batch(category, items)
324
+ update_batch_without_category(category.connection, category.full_path, items)
325
+ end
326
+
327
+ def self.update_batch_without_category(connection, category_path, items)
328
+ if connection.format == :json
329
+ put_data = ({:profileItems => items}).to_json
330
+ else
331
+ put_data = ({:ProfileItems => items}).to_xml(:root => "ProfileCategory", :skip_types => true, :skip_nil => true)
332
+ end
333
+ # Post to category
334
+ response = connection.raw_put(category_path, put_data)
335
+ # Send back a category object containing all the created items
336
+ AMEE::Profile::Category.parse(connection, response)
337
+ end
338
+
309
339
  def self.delete(connection, path)
310
340
  connection.delete(path)
311
341
  rescue
data/lib/amee/version.rb CHANGED
@@ -3,7 +3,7 @@ module AMEE
3
3
  module VERSION #:nodoc:
4
4
  MAJOR = 2
5
5
  MINOR = 0
6
- TINY = 7
6
+ TINY = 8
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
9
9
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Floppy-amee
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.7
4
+ version: 2.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Smith
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-04 00:00:00 -08:00
12
+ date: 2009-03-10 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency