Floppy-amee 0.4.10 → 0.4.12

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
@@ -61,4 +61,22 @@ Once that is all set up, you can use AMEE objects within Rails anywhere you like
61
61
  There is a persistent AMEE connection available called $amee, which you can pass
62
62
  into the other objects to fetch data. For instance:
63
63
 
64
- data = AMEE::Data::Category.root($amee)
64
+ data = AMEE::Data::Category.root($amee)
65
+
66
+ There is a helper for ActiveRecord models which should be linked to an AMEE profile.
67
+ By adding:
68
+
69
+ has_amee_profile
70
+
71
+ to your model, and by adding an amee_profile:string field to the model in the
72
+ database, an AMEE profile will be automatically created and destroyed with your
73
+ model. By overriding the function amee_save in your model, you can store data in
74
+ AMEE when your model is saved.
75
+
76
+ == CACHING
77
+
78
+ The AMEE::Connection object implements an optional cache for GET requests. This is
79
+ currently a versy simple implementation which caches the result of all GET requests
80
+ until a POST, PUT, or DELETE is executed, at which point the cache is cleared. To
81
+ enable caching, set the enable_caching parameter of AMEE::Connection.new to true.
82
+ Caching is disabled by default.
@@ -3,7 +3,7 @@ require 'net/http'
3
3
  module AMEE
4
4
  class Connection
5
5
 
6
- def initialize(server, username = nil, password = nil, use_json_if_available = true)
6
+ def initialize(server, username = nil, password = nil, use_json_if_available = true, enable_caching = false)
7
7
  @server = server
8
8
  @username = username
9
9
  @password = password
@@ -12,6 +12,10 @@ module AMEE
12
12
  if (@username || @password) && !valid?
13
13
  raise "Must specify both username and password for authenticated access"
14
14
  end
15
+ @enable_caching = enable_caching
16
+ if @enable_caching
17
+ $cache ||= {}
18
+ end
15
19
  # Make connection to server
16
20
  @http = Net::HTTP.new(@server)
17
21
  #@http.set_debug_output($stdout)
@@ -39,10 +43,13 @@ module AMEE
39
43
  path += "?#{params.join('&')}"
40
44
  end
41
45
  # Send request
42
- do_request Net::HTTP::Get.new(path)
46
+ return $cache[path] if @enable_caching and $cache[path]
47
+ response = do_request Net::HTTP::Get.new(path)
48
+ $cache[path] = response if @enable_caching
43
49
  end
44
50
 
45
51
  def post(path, data = {})
52
+ clear_cache
46
53
  # Create POST request
47
54
  post = Net::HTTP::Post.new(path)
48
55
  body = []
@@ -55,6 +62,7 @@ module AMEE
55
62
  end
56
63
 
57
64
  def put(path, data = {})
65
+ clear_cache
58
66
  # Create PUT request
59
67
  put = Net::HTTP::Put.new(path)
60
68
  body = []
@@ -67,6 +75,7 @@ module AMEE
67
75
  end
68
76
 
69
77
  def delete(path)
78
+ clear_cache
70
79
  # Create DELETE request
71
80
  delete = Net::HTTP::Delete.new(path)
72
81
  # Send request
@@ -136,5 +145,11 @@ module AMEE
136
145
  response
137
146
  end
138
147
 
148
+ def clear_cache
149
+ if @enable_caching
150
+ $cache = {}
151
+ end
152
+ end
153
+
139
154
  end
140
155
  end
@@ -114,7 +114,16 @@ module AMEE
114
114
  history = []
115
115
  num_months.times do
116
116
  date = Date.new(year, month)
117
- history << self.get(connection, path, date)
117
+ data = self.get(connection, path, date)
118
+ # If we get no data items back, there is no data at all before this date, so don't bother fetching it
119
+ if data.items.empty?
120
+ (num_months - history.size).times do
121
+ history << Category.new(:children => [], :items => [])
122
+ end
123
+ break
124
+ else
125
+ history << data
126
+ end
118
127
  month -= 1
119
128
  if (month == 0)
120
129
  year -= 1
data/lib/amee/version.rb CHANGED
@@ -3,7 +3,7 @@ module AMEE
3
3
  module VERSION #:nodoc:
4
4
  MAJOR = 0
5
5
  MINOR = 4
6
- TINY = 10
6
+ TINY = 12
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
9
9
 
data/rails/init.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'amee'
2
+ require 'amee/rails'
2
3
 
3
4
  # Load config/amee.yml
4
5
  amee_config = "#{RAILS_ROOT}/config/amee.yml"
@@ -20,4 +21,7 @@ else
20
21
  end
21
22
  # Inform the user that we've written a file for them
22
23
  raise AMEE::ConnectionFailed.new("config/amee.yml doesn't exist. I've created one for you - please add your API keys to it.")
23
- end
24
+ end
25
+
26
+ # Add AMEE extensions into ActiveRecord::Base
27
+ ActiveRecord::Base.class_eval { include AMEE::Rails }
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.4.10
4
+ version: 0.4.12
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-10-01 00:00:00 -07:00
12
+ date: 2008-10-03 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -39,6 +39,7 @@ files:
39
39
  - lib/amee/object.rb
40
40
  - lib/amee/shell.rb
41
41
  - lib/amee/drill_down.rb
42
+ - lib/rails.rb
42
43
  - bin/ameesh
43
44
  - examples/list_profiles.rb
44
45
  - examples/create_profile.rb