hookercookerman-amee 0.0.2

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.
Files changed (80) hide show
  1. data/History.txt +1 -0
  2. data/LICENSE.txt +20 -0
  3. data/Manifest.txt +79 -0
  4. data/README.rdoc +33 -0
  5. data/Rakefile +29 -0
  6. data/features/config.feature +22 -0
  7. data/features/data/data_category.feature +26 -0
  8. data/features/data/data_item.feature +19 -0
  9. data/features/data/data_item_value.feature +17 -0
  10. data/features/data/drill_down.feature +48 -0
  11. data/features/development.feature +13 -0
  12. data/features/profile/create.profile.feature +15 -0
  13. data/features/profile/create.profile_item.feature +12 -0
  14. data/features/profile/delete.profile.feature +12 -0
  15. data/features/profile/delete.profile_item.feature +13 -0
  16. data/features/profile/get.profile.feature +13 -0
  17. data/features/profile/profile_category.feature +14 -0
  18. data/features/profile/profile_item.feature +15 -0
  19. data/features/profile/profiles.feature +15 -0
  20. data/features/profile/update.profile_item.feature +14 -0
  21. data/features/session/reauthenticate.feature +16 -0
  22. data/features/step_definitions/amee_steps.rb +67 -0
  23. data/features/step_definitions/common_steps.rb +194 -0
  24. data/features/step_definitions/config_steps.rb +13 -0
  25. data/features/step_definitions/data_steps.rb +142 -0
  26. data/features/step_definitions/profile_category_steps.rb +23 -0
  27. data/features/step_definitions/profile_item_steps.rb +62 -0
  28. data/features/step_definitions/profile_steps.rb +41 -0
  29. data/features/support/amee/auth/response.json +11 -0
  30. data/features/support/amee/data.json +84 -0
  31. data/features/support/amee/data/transport/car/generic.json +3 -0
  32. data/features/support/amee/data/transport/car/generic/drill.json +66 -0
  33. data/features/support/amee/data/transport/car/generic/drill?fuel=diesel&size=large.json +55 -0
  34. data/features/support/amee/data/transport/car/generic/drill?fuel=diesel.json +59 -0
  35. data/features/support/amee/data/transport/plane/generic.json +225 -0
  36. data/features/support/amee/data/transport/plane/generic/FFC7A05D54AD.json +224 -0
  37. data/features/support/amee/data/transport/plane/generic/FFC7A05D54AD/kgCO2PerPassengerJourney.json +42 -0
  38. data/features/support/amee/data_category.json +84 -0
  39. data/features/support/amee/data_category_with_data_items.json +225 -0
  40. data/features/support/amee/profiles.json +73 -0
  41. data/features/support/amee/profiles/155DD3C63646/transport/motorcycle/generic/D47C465B8157.json +190 -0
  42. data/features/support/amee/profiles/155DD3C63646/transport/motorcycle/generic/D47C465B8157?distance=400&representation=true.json +190 -0
  43. data/features/support/amee/profiles/48B97680BCCF/home/energy/quantity/response.json +9 -0
  44. data/features/support/amee/profiles/7C7D68C2A7CD/home.json +65 -0
  45. data/features/support/amee/profiles/BB1BDB4FDD77/home/energy/quantity/920B54ED665B.json +201 -0
  46. data/features/support/amee/profiles/E0BCB3704D15.json +19 -0
  47. data/features/support/amee/profiles/E0BCB3704D15/Business.json +6 -0
  48. data/features/support/amee/profiles/profile.json +27 -0
  49. data/features/support/env.rb +24 -0
  50. data/init.rb +4 -0
  51. data/lib/amee.rb +37 -0
  52. data/lib/amee/config.rb +59 -0
  53. data/lib/amee/data_api/data_category.rb +50 -0
  54. data/lib/amee/data_api/data_item.rb +28 -0
  55. data/lib/amee/data_api/data_item_value.rb +13 -0
  56. data/lib/amee/data_api/drill_down.rb +23 -0
  57. data/lib/amee/data_api/item_definition.rb +11 -0
  58. data/lib/amee/data_api/item_value_definition.rb +13 -0
  59. data/lib/amee/data_api/value_definition.rb +10 -0
  60. data/lib/amee/logging.rb +43 -0
  61. data/lib/amee/model.rb +128 -0
  62. data/lib/amee/parser.rb +137 -0
  63. data/lib/amee/profile_api/profile.rb +39 -0
  64. data/lib/amee/profile_api/profile_category.rb +42 -0
  65. data/lib/amee/profile_api/profile_item.rb +47 -0
  66. data/lib/amee/service.rb +78 -0
  67. data/lib/amee/session.rb +222 -0
  68. data/lib/amee/utils/string.rb +11 -0
  69. data/script/console +10 -0
  70. data/script/destroy +14 -0
  71. data/script/generate +14 -0
  72. data/script/txt2html +71 -0
  73. data/spec/amee_spec.rb +1 -0
  74. data/spec/service_spec.rb +53 -0
  75. data/spec/session_spec.rb +45 -0
  76. data/spec/spec.opts +1 -0
  77. data/spec/spec_helper.rb +19 -0
  78. data/tasks/rspec.rake +21 -0
  79. data/tasks/yard.rake +4 -0
  80. metadata +184 -0
data/script/destroy ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/destroy'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Destroy.new.run(ARGV)
data/script/generate ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/generate'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Generate.new.run(ARGV)
data/script/txt2html ADDED
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ load File.dirname(__FILE__) + "/../Rakefile"
4
+ require 'rubyforge'
5
+ require 'redcloth'
6
+ require 'syntax/convertors/html'
7
+ require 'erb'
8
+
9
+ download = "http://rubyforge.org/projects/#{$hoe.rubyforge_name}"
10
+ version = $hoe.version
11
+
12
+ def rubyforge_project_id
13
+ RubyForge.new.configure.autoconfig["group_ids"][$hoe.rubyforge_name]
14
+ end
15
+
16
+ class Fixnum
17
+ def ordinal
18
+ # teens
19
+ return 'th' if (10..19).include?(self % 100)
20
+ # others
21
+ case self % 10
22
+ when 1: return 'st'
23
+ when 2: return 'nd'
24
+ when 3: return 'rd'
25
+ else return 'th'
26
+ end
27
+ end
28
+ end
29
+
30
+ class Time
31
+ def pretty
32
+ return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
33
+ end
34
+ end
35
+
36
+ def convert_syntax(syntax, source)
37
+ return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
38
+ end
39
+
40
+ if ARGV.length >= 1
41
+ src, template = ARGV
42
+ template ||= File.join(File.dirname(__FILE__), '/../website/template.html.erb')
43
+ else
44
+ puts("Usage: #{File.split($0).last} source.txt [template.html.erb] > output.html")
45
+ exit!
46
+ end
47
+
48
+ template = ERB.new(File.open(template).read)
49
+
50
+ title = nil
51
+ body = nil
52
+ File.open(src) do |fsrc|
53
+ title_text = fsrc.readline
54
+ body_text_template = fsrc.read
55
+ body_text = ERB.new(body_text_template).result(binding)
56
+ syntax_items = []
57
+ body_text.gsub!(%r!<(pre|code)[^>]*?syntax=['"]([^'"]+)[^>]*>(.*?)</\1>!m){
58
+ ident = syntax_items.length
59
+ element, syntax, source = $1, $2, $3
60
+ syntax_items << "<#{element} class='syntax'>#{convert_syntax(syntax, source)}</#{element}>"
61
+ "syntax-temp-#{ident}"
62
+ }
63
+ title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
64
+ body = RedCloth.new(body_text).to_html
65
+ body.gsub!(%r!(?:<pre><code>)?syntax-temp-(\d+)(?:</code></pre>)?!){ syntax_items[$1.to_i] }
66
+ end
67
+ stat = File.stat(src)
68
+ created = stat.ctime
69
+ modified = stat.mtime
70
+
71
+ $stdout << template.result(binding)
data/spec/amee_spec.rb ADDED
@@ -0,0 +1 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
@@ -0,0 +1,53 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+
4
+ describe "Given FakeRequests Are Setup" do
5
+ before(:each) do
6
+
7
+ FakeWeb.register_uri(:get, "http://stage.amee.com/path",
8
+ {:string => "{}", :status => [200, "OK"]})
9
+ end
10
+
11
+ describe "Service", "when performing a request" do
12
+
13
+ before(:each) do
14
+ @service = Amee::Service.new("whatever token")
15
+ end
16
+
17
+ it "should send a request with headers of AuthToken And Accept" do
18
+ Amee::Service.should_receive(:get).
19
+ with("/path", {:headers => {"authToken" => "whatever token", "Accept" => Amee::Config[:accept]}}).
20
+ and_return(mock("response",:code => 200))
21
+ @service.get("raw", "/path")
22
+ end
23
+
24
+ it "should parse the response" do
25
+ Amee::Parser.should_receive(:parse).with("raw", {})
26
+ @service.get("raw", "/path")
27
+ end
28
+
29
+ it "should raise Amee::Session::PermissionDenied if status code is 403" do
30
+ FakeWeb.register_uri(:get, "http://stage.amee.com/path",
31
+ {:string => "{}", :status => [403, "Permission denied"]})
32
+ lambda{@service.get("raw", "/path")}.should raise_error(Amee::Session::PermissionDenied )
33
+ end
34
+
35
+ it "should raise Amee::Session::Expired if status code is 401" do
36
+ FakeWeb.register_uri(:get, "http://stage.amee.com/path",
37
+ {:string => "{}", :status => [401, "Permission denied"]})
38
+ lambda{@service.get("raw", "/path")}.should raise_error(Amee::Session::Expired )
39
+ end
40
+
41
+ it "should raise Amee::Session::UnknownError if status code is 609" do
42
+ FakeWeb.register_uri(:get, "http://stage.amee.com/path",
43
+ {:string => "{}", :status => [609, "Permission denied"]})
44
+ lambda{@service.get("raw", "/path")}.should raise_error(Amee::Session::UnknownError )
45
+ end
46
+
47
+ it "should raise Amee::NotFound::Expired if status code is 404" do
48
+ FakeWeb.register_uri(:get, "http://stage.amee.com/path",
49
+ {:string => "{}", :status => [404, "Permission denied"]})
50
+ lambda{@service.get("raw", "/path")}.should raise_error(Amee::Session::NotFound )
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,45 @@
1
+ require File.dirname(__FILE__) + '/spec_helper.rb'
2
+
3
+ describe "Given we have setup the fake requests" do
4
+ before(:each) do
5
+ # Auth fake me requester
6
+ Amee::Service.stub!(:auth_token).and_return("random auth token")
7
+ end
8
+
9
+ describe "Amee::Session.create", "given the config has a username and password" do
10
+ before(:each) do
11
+ Amee::Config.set do |config|
12
+ config[:username] = "eat junk"
13
+ config[:password] = "become junk"
14
+ end
15
+ end
16
+
17
+ it "should use the username and password from the config" do
18
+ @amee_session = Amee::Session.create
19
+ @amee_session.instance_variable_get("@username").should == "eat junk"
20
+ @amee_session.instance_variable_get("@password").should == "become junk"
21
+ @amee_session.auth_token.should == "random auth token"
22
+ end
23
+
24
+ it "should try to authenticate the session when creating it" do
25
+ Amee::Service.should_receive(:auth_token)
26
+ Amee::Session.create
27
+ end
28
+
29
+ it "should have a default cache of Moneta::Memory" do
30
+ @amee_session = Amee::Session.create("whatver", "da")
31
+ @amee_session.cache.should be_a(Moneta::Memory)
32
+ end
33
+ end
34
+
35
+ describe "Amee::Session", "#store_resource" do
36
+ before(:each) do
37
+ @amee_session = Amee::Session.create("myname", "mypassword")
38
+ end
39
+
40
+ it "should try to use default cache expires_in if none given" do
41
+ @amee_session.cache.should_receive(:store).with("/path", "result", {:expires_in=>86400})
42
+ @amee_session.store_resource("/path", "result")
43
+ end
44
+ end
45
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --colour
@@ -0,0 +1,19 @@
1
+ begin
2
+ require 'spec'
3
+ rescue LoadError
4
+ require 'rubygems'
5
+ gem 'rspec'
6
+ require 'spec'
7
+ end
8
+
9
+
10
+ $TESTING=true
11
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
12
+ require 'amee'
13
+
14
+
15
+ require "fakeweb"
16
+ FakeWeb.allow_net_connect = false
17
+
18
+ # amee fixtures or canned responses
19
+ AMEE_FIXTURE_PATH = File.dirname(__FILE__) + "/../features/support/amee"
data/tasks/rspec.rake ADDED
@@ -0,0 +1,21 @@
1
+ begin
2
+ require 'spec'
3
+ rescue LoadError
4
+ require 'rubygems'
5
+ require 'spec'
6
+ end
7
+ begin
8
+ require 'spec/rake/spectask'
9
+ rescue LoadError
10
+ puts <<-EOS
11
+ To use rspec for testing you must install rspec gem:
12
+ gem install rspec
13
+ EOS
14
+ exit(0)
15
+ end
16
+
17
+ desc "Run the specs under spec/models"
18
+ Spec::Rake::SpecTask.new do |t|
19
+ t.spec_opts = ['--options', "spec/spec.opts"]
20
+ t.spec_files = FileList['spec/**/*_spec.rb']
21
+ end
data/tasks/yard.rake ADDED
@@ -0,0 +1,4 @@
1
+ require "yard"
2
+ YARD::Rake::YardocTask.new do |t|
3
+ t.files = ['lib/**/*.rb'] # optional
4
+ end
metadata ADDED
@@ -0,0 +1,184 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hookercookerman-amee
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Richard Hooker
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-04-24 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: newgem
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.3.0
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: hoe
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.8.0
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: fakeweb
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: httparty
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "="
52
+ - !ruby/object:Gem::Version
53
+ version: 0.4.3
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: wycats-moneta
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ description: Its a gem to interact with the amee api
66
+ email:
67
+ - richard.hooker@dynamic50.com
68
+ executables: []
69
+
70
+ extensions: []
71
+
72
+ extra_rdoc_files:
73
+ - History.txt
74
+ - LICENSE.txt
75
+ - Manifest.txt
76
+ - README.rdoc
77
+ files:
78
+ - History.txt
79
+ - LICENSE.txt
80
+ - Manifest.txt
81
+ - README.rdoc
82
+ - Rakefile
83
+ - features/config.feature
84
+ - features/data/data_category.feature
85
+ - features/data/data_item.feature
86
+ - features/data/data_item_value.feature
87
+ - features/data/drill_down.feature
88
+ - features/development.feature
89
+ - features/profile/create.profile.feature
90
+ - features/profile/create.profile_item.feature
91
+ - features/profile/delete.profile.feature
92
+ - features/profile/delete.profile_item.feature
93
+ - features/profile/get.profile.feature
94
+ - features/profile/profile_category.feature
95
+ - features/profile/profile_item.feature
96
+ - features/profile/profiles.feature
97
+ - features/profile/update.profile_item.feature
98
+ - features/session/reauthenticate.feature
99
+ - features/step_definitions/amee_steps.rb
100
+ - features/step_definitions/common_steps.rb
101
+ - features/step_definitions/config_steps.rb
102
+ - features/step_definitions/data_steps.rb
103
+ - features/step_definitions/profile_category_steps.rb
104
+ - features/step_definitions/profile_item_steps.rb
105
+ - features/step_definitions/profile_steps.rb
106
+ - features/support/amee/auth/response.json
107
+ - features/support/amee/data.json
108
+ - features/support/amee/data/transport/car/generic.json
109
+ - features/support/amee/data/transport/car/generic/drill.json
110
+ - features/support/amee/data/transport/car/generic/drill?fuel=diesel&size=large.json
111
+ - features/support/amee/data/transport/car/generic/drill?fuel=diesel.json
112
+ - features/support/amee/data/transport/plane/generic.json
113
+ - features/support/amee/data/transport/plane/generic/FFC7A05D54AD.json
114
+ - features/support/amee/data/transport/plane/generic/FFC7A05D54AD/kgCO2PerPassengerJourney.json
115
+ - features/support/amee/data_category.json
116
+ - features/support/amee/data_category_with_data_items.json
117
+ - features/support/amee/profiles.json
118
+ - features/support/amee/profiles/155DD3C63646/transport/motorcycle/generic/D47C465B8157.json
119
+ - features/support/amee/profiles/155DD3C63646/transport/motorcycle/generic/D47C465B8157?distance=400&representation=true.json
120
+ - features/support/amee/profiles/48B97680BCCF/home/energy/quantity/response.json
121
+ - features/support/amee/profiles/7C7D68C2A7CD/home.json
122
+ - features/support/amee/profiles/BB1BDB4FDD77/home/energy/quantity/920B54ED665B.json
123
+ - features/support/amee/profiles/E0BCB3704D15.json
124
+ - features/support/amee/profiles/E0BCB3704D15/Business.json
125
+ - features/support/amee/profiles/profile.json
126
+ - features/support/env.rb
127
+ - init.rb
128
+ - lib/amee.rb
129
+ - lib/amee/config.rb
130
+ - lib/amee/data_api/data_category.rb
131
+ - lib/amee/data_api/data_item.rb
132
+ - lib/amee/data_api/data_item_value.rb
133
+ - lib/amee/data_api/drill_down.rb
134
+ - lib/amee/data_api/item_definition.rb
135
+ - lib/amee/data_api/item_value_definition.rb
136
+ - lib/amee/data_api/value_definition.rb
137
+ - lib/amee/logging.rb
138
+ - lib/amee/model.rb
139
+ - lib/amee/parser.rb
140
+ - lib/amee/profile_api/profile.rb
141
+ - lib/amee/profile_api/profile_category.rb
142
+ - lib/amee/profile_api/profile_item.rb
143
+ - lib/amee/service.rb
144
+ - lib/amee/session.rb
145
+ - lib/amee/utils/string.rb
146
+ - script/console
147
+ - script/destroy
148
+ - script/generate
149
+ - script/txt2html
150
+ - spec/amee_spec.rb
151
+ - spec/service_spec.rb
152
+ - spec/session_spec.rb
153
+ - spec/spec.opts
154
+ - spec/spec_helper.rb
155
+ - tasks/rspec.rake
156
+ - tasks/yard.rake
157
+ has_rdoc: true
158
+ homepage: http://www.amee.com
159
+ post_install_message:
160
+ rdoc_options: []
161
+
162
+ require_paths:
163
+ - lib
164
+ required_ruby_version: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: "0"
169
+ version:
170
+ required_rubygems_version: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: "0"
175
+ version:
176
+ requirements: []
177
+
178
+ rubyforge_project: amee
179
+ rubygems_version: 1.2.0
180
+ signing_key:
181
+ specification_version: 3
182
+ summary: Amee
183
+ test_files: []
184
+