Floppy-amee 2.0.15 → 2.0.16
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.
- data/lib/amee.rb +2 -0
- data/lib/amee/item_definition.rb +65 -0
- data/lib/amee/pager.rb +59 -0
- data/lib/amee/profile.rb +19 -9
- data/lib/amee/profile_item.rb +6 -4
- data/lib/amee/version.rb +1 -1
- metadata +4 -2
data/lib/amee.rb
CHANGED
@@ -0,0 +1,65 @@
|
|
1
|
+
module AMEE
|
2
|
+
module Admin
|
3
|
+
class ItemDefinition < AMEE::Object
|
4
|
+
|
5
|
+
def initialize(data = {})
|
6
|
+
@name = data[:name]
|
7
|
+
super
|
8
|
+
end
|
9
|
+
|
10
|
+
attr_reader :name
|
11
|
+
|
12
|
+
def self.from_json(json)
|
13
|
+
# Read JSON
|
14
|
+
doc = JSON.parse(json)
|
15
|
+
data = {}
|
16
|
+
data[:uid] = doc['itemDefinition']['uid']
|
17
|
+
data[:created] = DateTime.parse(doc['itemDefinition']['created'])
|
18
|
+
data[:modified] = DateTime.parse(doc['itemDefinition']['modified'])
|
19
|
+
data[:name] = doc['itemDefinition']['name']
|
20
|
+
# Create object
|
21
|
+
ItemDefinition.new(data)
|
22
|
+
rescue
|
23
|
+
raise AMEE::BadData.new("Couldn't load ItemDefinition from JSON. Check that your URL is correct.")
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.from_xml(xml)
|
27
|
+
# Parse data from response into hash
|
28
|
+
doc = REXML::Document.new(xml)
|
29
|
+
data = {}
|
30
|
+
data[:uid] = REXML::XPath.first(doc, "/Resources/ItemDefinitionResource/ItemDefinition/@uid").to_s
|
31
|
+
data[:created] = DateTime.parse(REXML::XPath.first(doc, "/Resources/ItemDefinitionResource/ItemDefinition/@created").to_s)
|
32
|
+
data[:modified] = DateTime.parse(REXML::XPath.first(doc, "/Resources/ItemDefinitionResource/ItemDefinition/@modified").to_s)
|
33
|
+
data[:name] = REXML::XPath.first(doc, '/Resources/ItemDefinitionResource/ItemDefinition/Name').text
|
34
|
+
# Create object
|
35
|
+
ItemDefinition.new(data)
|
36
|
+
rescue
|
37
|
+
raise AMEE::BadData.new("Couldn't load ItemDefinition from XML. Check that your URL is correct.")
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.get(connection, path, options = {})
|
41
|
+
# Load data from path
|
42
|
+
response = connection.get(path, options).body
|
43
|
+
# Parse data from response
|
44
|
+
if response.is_json?
|
45
|
+
item_definition = ItemDefinition.from_json(response)
|
46
|
+
else
|
47
|
+
item_definition = ItemDefinition.from_xml(response)
|
48
|
+
end
|
49
|
+
# Store connection in object for future use
|
50
|
+
item_definition.connection = connection
|
51
|
+
# Done
|
52
|
+
return item_definition
|
53
|
+
rescue
|
54
|
+
raise AMEE::BadData.new("Couldn't load ItemDefinition. Check that your URL is correct.")
|
55
|
+
end
|
56
|
+
|
57
|
+
def update(options = {})
|
58
|
+
response = connection.put(full_path, options).body
|
59
|
+
rescue
|
60
|
+
raise AMEE::BadData.new("Couldn't update ItemDefinition. Check that your information is correct.")
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/lib/amee/pager.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
module AMEE
|
2
|
+
class Pager
|
3
|
+
|
4
|
+
def initialize(data)
|
5
|
+
@start = data[:start]
|
6
|
+
@from = data[:from]
|
7
|
+
@to = data[:to]
|
8
|
+
@items = data[:items]
|
9
|
+
@current_page = data[:current_page]
|
10
|
+
@requested_page = data[:requested_page]
|
11
|
+
@next_page = data[:next_page]
|
12
|
+
@previous_page = data[:previous_page]
|
13
|
+
@last_page = data[:last_page]
|
14
|
+
@items_per_page = data[:items_per_page]
|
15
|
+
@items_found = data[:items_found]
|
16
|
+
end
|
17
|
+
|
18
|
+
attr_reader :start
|
19
|
+
attr_reader :from
|
20
|
+
attr_reader :to
|
21
|
+
attr_reader :items
|
22
|
+
attr_reader :current_page
|
23
|
+
attr_reader :requested_page
|
24
|
+
attr_reader :next_page
|
25
|
+
attr_reader :previous_page
|
26
|
+
attr_reader :last_page
|
27
|
+
attr_reader :items_per_page
|
28
|
+
attr_reader :items_found
|
29
|
+
|
30
|
+
def self.from_xml(node)
|
31
|
+
return Pager.new({:start => node.elements["Start"].text.to_i,
|
32
|
+
:from => node.elements["From"].text.to_i,
|
33
|
+
:to => node.elements["To"].text.to_i,
|
34
|
+
:items => node.elements["Items"].text.to_i,
|
35
|
+
:current_page => node.elements["CurrentPage"].text.to_i,
|
36
|
+
:requested_page => node.elements["RequestedPage"].text.to_i,
|
37
|
+
:next_page => node.elements["NextPage"].text.to_i,
|
38
|
+
:previous_page => node.elements["PreviousPage"].text.to_i,
|
39
|
+
:last_page => node.elements["LastPage"].text.to_i,
|
40
|
+
:items_per_page => node.elements["ItemsPerPage"].text.to_i,
|
41
|
+
:items_found => node.elements["ItemsFound"].text.to_i})
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.from_json(node)
|
45
|
+
return Pager.new({:start => node["start"],
|
46
|
+
:from => node["from"],
|
47
|
+
:to => node["to"],
|
48
|
+
:items => node["items"],
|
49
|
+
:current_page => node["currentPage"],
|
50
|
+
:requested_page => node["requestedPage"],
|
51
|
+
:next_page => node["nextPage"],
|
52
|
+
:previous_page => node["previousPage"],
|
53
|
+
:last_page => node["lastPage"],
|
54
|
+
:items_per_page => node["itemsPerPage"],
|
55
|
+
:items_found => node["itemsFound"]})
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
data/lib/amee/profile.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
module AMEE
|
2
2
|
module Profile
|
3
|
-
class
|
4
|
-
|
5
|
-
def
|
3
|
+
class ProfileList < Array
|
4
|
+
|
5
|
+
def initialize(connection, options = {})
|
6
6
|
# Load data from path
|
7
|
-
response = connection.get('/profiles').body
|
7
|
+
response = connection.get('/profiles', options).body
|
8
8
|
# Parse data from response
|
9
|
-
profiles = []
|
10
9
|
if response.is_json?
|
11
10
|
# Read JSON
|
12
11
|
doc = JSON.parse(response)
|
12
|
+
@pager = AMEE::Pager.from_json(doc['pager'])
|
13
13
|
doc['profiles'].each do |p|
|
14
14
|
data = {}
|
15
15
|
data[:uid] = p['uid']
|
@@ -20,11 +20,12 @@ module AMEE
|
|
20
20
|
# Create profile
|
21
21
|
profile = Profile.new(data)
|
22
22
|
# Store in array
|
23
|
-
|
23
|
+
self << profile
|
24
24
|
end
|
25
25
|
else
|
26
26
|
# Read XML
|
27
27
|
doc = REXML::Document.new(response)
|
28
|
+
@pager = AMEE::Pager.from_xml(REXML::XPath.first(doc, '/Resources/ProfilesResource/Pager'))
|
28
29
|
REXML::XPath.each(doc, '/Resources/ProfilesResource/Profiles/Profile') do |p|
|
29
30
|
data = {}
|
30
31
|
data[:uid] = p.attributes['uid'].to_s
|
@@ -37,14 +38,23 @@ module AMEE
|
|
37
38
|
# Store connection in profile object
|
38
39
|
profile.connection = connection
|
39
40
|
# Store in array
|
40
|
-
|
41
|
+
self << profile
|
41
42
|
end
|
42
43
|
end
|
43
|
-
# Done
|
44
|
-
return profiles
|
45
44
|
rescue
|
46
45
|
raise AMEE::BadData.new("Couldn't load Profile list.")
|
47
46
|
end
|
47
|
+
|
48
|
+
attr_reader :pager
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
class Profile < AMEE::Profile::Object
|
53
|
+
|
54
|
+
# backwards compatibility
|
55
|
+
def self.list(connection)
|
56
|
+
ProfileList.new(connection)
|
57
|
+
end
|
48
58
|
|
49
59
|
def self.create(connection)
|
50
60
|
# Create new profile
|
data/lib/amee/profile_item.rb
CHANGED
@@ -283,15 +283,17 @@ 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)
|
286
|
+
def self.create_batch(category, items, options = {})
|
287
287
|
create_batch_without_category(category.connection, category.full_path, items)
|
288
288
|
end
|
289
289
|
|
290
|
-
def self.create_batch_without_category(connection, category_path, items)
|
290
|
+
def self.create_batch_without_category(connection, category_path, items, options = {})
|
291
291
|
if connection.format == :json
|
292
|
-
|
292
|
+
options.merge! :profileItems => items
|
293
|
+
post_data = options.to_json
|
293
294
|
else
|
294
|
-
|
295
|
+
options.merge!({:ProfileItems => items})
|
296
|
+
post_data = options.to_xml(:root => "ProfileCategory", :skip_types => true, :skip_nil => true)
|
295
297
|
end
|
296
298
|
# Post to category
|
297
299
|
response = connection.raw_post(category_path, post_data).body
|
data/lib/amee/version.rb
CHANGED
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.
|
4
|
+
version: 2.0.16
|
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-05-
|
12
|
+
date: 2009-05-12 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -60,6 +60,8 @@ files:
|
|
60
60
|
- lib/amee/shell.rb
|
61
61
|
- lib/amee/drill_down.rb
|
62
62
|
- lib/amee/rails.rb
|
63
|
+
- lib/amee/pager.rb
|
64
|
+
- lib/amee/item_definition.rb
|
63
65
|
- bin/ameesh
|
64
66
|
- examples/list_profiles.rb
|
65
67
|
- examples/create_profile.rb
|