Floppy-amee 0.0.2 → 0.0.3

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/README CHANGED
@@ -10,7 +10,7 @@ Homepage: http://github.com/Floppy/amee-ruby
10
10
 
11
11
  == INSTALLATION
12
12
 
13
- 1) Enable gems from github, if you haven't already done so:
13
+ 1) Enable gems from github, if you haven't already done so (rubygems >= 1.2):
14
14
  > sudo gem sources -a http://gems.github.com
15
15
 
16
16
  2) Install gem
@@ -18,5 +18,5 @@ Homepage: http://github.com/Floppy/amee-ruby
18
18
 
19
19
  == USAGE
20
20
 
21
- Currently, in this first version, only reading data categories is supported. See
22
- examples/view_data_category.rb for a simple usage example.
21
+ Currently, you can only read data categories, items and itemvalues. See
22
+ examples/view_data_*.rb for simple usage examples.
@@ -32,6 +32,8 @@ module AMEE
32
32
  get['authToken'] = @auth_token
33
33
  get['Accept'] = 'application/xml'
34
34
  response = http.request(get)
35
+ # Handle 404s
36
+ raise AMEE::NotFound.new("URL doesn't exist on server.") if response.code == '404'
35
37
  # If request fails, authenticate and try again
36
38
  if authentication_failed?(response)
37
39
  authenticate
@@ -41,6 +43,8 @@ module AMEE
41
43
  end
42
44
  yield response.body if block_given?
43
45
  response.body
46
+ rescue SocketError
47
+ raise AMEE::ConnectionFailed.new("Connection failed. Check server name or network connection.")
44
48
  end
45
49
 
46
50
  protected
@@ -51,15 +55,20 @@ module AMEE
51
55
 
52
56
  def authenticate
53
57
  unless can_authenticate?
54
- raise "AMEE authentication required. Please provide your username and password."
58
+ raise AMEE::AuthRequired.new("Authentication required. Please provide your username and password.")
55
59
  end
56
60
  response = nil
57
61
  http = Net::HTTP.new(@server)
58
62
  http.start do
59
- response = http.post("/auth", "username=#{@username}&password=#{@password}")
63
+ post = Net::HTTP::Post.new("/auth")
64
+ post.body = "username=#{@username}&password=#{@password}"
65
+ post['Accept'] = 'application/xml'
66
+ response = http.request(post)
60
67
  @auth_token = response['authToken']
61
- raise "AMEE authentication failed. Please check your username and password." unless authenticated?
68
+ raise AMEE::AuthFailed.new("Authentication failed. Please check your username and password.") unless authenticated?
62
69
  end
70
+ rescue SocketError
71
+ raise AMEE::ConnectionFailed.new("Connection failed. Check server name or network connection.")
63
72
  end
64
73
 
65
74
  end
@@ -46,6 +46,8 @@ module AMEE
46
46
  cat.connection = connection
47
47
  # Done
48
48
  return cat
49
+ rescue
50
+ raise AMEE::BadData.new("Couldn't load DataCategory. Check that your URL is correct.")
49
51
  end
50
52
 
51
53
  def self.root(connection)
@@ -39,6 +39,8 @@ module AMEE
39
39
  item.connection = connection
40
40
  # Done
41
41
  return item
42
+ rescue
43
+ raise AMEE::BadData.new("Couldn't load DataItem. Check that your URL is correct.")
42
44
  end
43
45
 
44
46
  end
@@ -9,6 +9,28 @@ module AMEE
9
9
 
10
10
  attr_reader :value
11
11
 
12
+ def self.get(connection, path)
13
+ # Load data from path
14
+ response = connection.get(path)
15
+ # Parse data from response into hash
16
+ doc = REXML::Document.new(response)
17
+ data = {}
18
+ data[:uid] = REXML::XPath.first(doc, "/Resources/DataItemValueResource/ItemValue/@uid").to_s
19
+ data[:created] = DateTime.parse(REXML::XPath.first(doc, "/Resources/DataItemValueResource/ItemValue/@Created").to_s)
20
+ data[:modified] = DateTime.parse(REXML::XPath.first(doc, "/Resources/DataItemValueResource/ItemValue/@Modified").to_s)
21
+ data[:name] = REXML::XPath.first(doc, '/Resources/DataItemValueResource/ItemValue/Name').text
22
+ data[:path] = path
23
+ data[:value] = REXML::XPath.first(doc, '/Resources/DataItemValueResource/ItemValue/Value').text
24
+ # Create item object
25
+ item = ItemValue.new(data)
26
+ # Store connection in object for future use
27
+ item.connection = connection
28
+ # Done
29
+ return item
30
+ rescue
31
+ raise AMEE::BadData.new("Couldn't load DataItemValue. Check that your URL is correct.")
32
+ end
33
+
12
34
  end
13
35
  end
14
36
  end
data/lib/amee.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'rexml/document'
2
+ require 'amee/exceptions'
2
3
  require 'amee/connection'
3
4
  require 'amee/object'
4
5
  require 'amee/data_category'
@@ -10,7 +11,7 @@ module AMEE
10
11
  module VERSION #:nodoc:
11
12
  MAJOR = 0
12
13
  MINOR = 0
13
- TINY = 2
14
+ TINY = 3
14
15
  STRING = [MAJOR, MINOR, TINY].join('.')
15
16
  end
16
17
 
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: 0.0.2
4
+ version: 0.0.3
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: 2008-07-10 00:00:00 -07:00
12
+ date: 2008-07-11 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15