spice 0.8.0 → 1.0.0.pre

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.
@@ -0,0 +1,27 @@
1
+ require 'faraday'
2
+ # require 'spice/request/auth'
3
+ require 'spice/response/parse_json'
4
+ require 'spice/response/client_error'
5
+
6
+ module Spice
7
+ module Request
8
+ def request(options={})
9
+ default_options = {
10
+ :headers => {
11
+ :accept => 'application/json',
12
+ :content_type => 'application/json',
13
+ :user_agent => Spice.user_agent
14
+ }
15
+ }
16
+
17
+ Faraday.new(
18
+ default_options.deep_merge(Spice.connection_options).deep_merge(options)
19
+ ) do |builder|
20
+ # builder.use Spice::Request::Auth
21
+ builder.use Spice::Response::ClientError
22
+ builder.use Spice::Response::ParseJSON
23
+ builder.adapter(:net_http)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,14 @@
1
+ module Spice
2
+ module Request
3
+ class Auth < Faraday::Middleware
4
+
5
+ def initialize(app, options)
6
+ @app, @options = app, options
7
+ end
8
+
9
+ def call(env)
10
+
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,30 @@
1
+ require 'faraday'
2
+
3
+ module Spice
4
+ module Response
5
+ class ClientError < Faraday::Response::Middleware
6
+
7
+ def on_complete(env)
8
+ case env[:status].to_i
9
+ when 400
10
+ raise Spice::BadRequest.new(error(env[:body]), env[:request_headers])
11
+ when 401
12
+ raise Spice::Unauthorized.new(error(env[:body]), env[:request_headers])
13
+ when 403
14
+ raise Spice::Forbidden.new(error(env[:body]), env[:request_headers])
15
+ when 404
16
+ raise Spice::NotFound.new(error(env[:body]), env[:request_headers])
17
+ when 406
18
+ raise Spice::NotAcceptable.new(error(env[:body]), env[:request_headers])
19
+ when 409
20
+ raise Spice::Conflict.new(error(env[:body]), env[:request_headers])
21
+ end
22
+ end
23
+
24
+ def error(body)
25
+ body["error"].join(',')
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,24 @@
1
+ require 'faraday'
2
+ require 'yajl'
3
+
4
+ module Spice
5
+ module Response
6
+ class ParseJSON < Faraday::Response::Middleware
7
+
8
+ def parse(body)
9
+ case body
10
+ when ''
11
+ nil
12
+ when 'true'
13
+ true
14
+ when 'false'
15
+ false
16
+ else
17
+ Yajl.load(body)
18
+ end
19
+
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -1,30 +1,23 @@
1
+ require 'spice/persistence'
2
+
1
3
  module Spice
2
- class Role < Spice::Chef
3
- def self.all(options={})
4
- connection.get("/roles")
5
- end
4
+ class Role
5
+ include Toy::Store
6
+ include Spice::Persistence
7
+ extend Spice::Persistence
6
8
 
7
- def self.[](name)
8
- connection.get("/roles/#{name}")
9
- end
9
+ store :memory, {}
10
+ endpoint "roles"
10
11
 
11
- def self.show(options={})
12
- name = options.delete(:name)
13
- connection.get("/roles/#{name}")
14
- end
15
-
16
- def self.create(options={})
17
- connection.post("/roles", options)
18
- end
19
-
20
- def self.update(options={})
21
- name = options.delete(:name)
22
- connection.put("/roles/#{name}", options)
23
- end
24
-
25
- def self.delete(options={})
26
- name = options.delete(:name)
27
- connection.delete("/roles/#{name}", options)
28
- end
12
+ attribute :name, String
13
+ attribute :description, String
14
+ attribute :run_list, Array, :default => []
15
+ attribute :default_attributes, Hash, :default => {}
16
+ attribute :override_attributes, Hash, :default => {}
17
+ attribute :json_class, String, :default => "Chef::Role"
18
+ attribute :chef_type, String, :default => "role"
19
+
20
+ validates_presence_of :name, :description
21
+
29
22
  end
30
23
  end
@@ -1,3 +1,3 @@
1
1
  module Spice
2
- VERSION = "0.8.0"
2
+ VERSION = "1.0.0.pre"
3
3
  end
@@ -10,7 +10,6 @@ Spork.prefork do
10
10
  require 'rspec'
11
11
  require 'webmock/rspec'
12
12
  require 'timecop'
13
- require 'rest-client'
14
13
  require 'fakefs'
15
14
  require 'fileutils'
16
15
 
@@ -14,10 +14,11 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.rubyforge_project = "spice"
16
16
 
17
- s.add_dependency "rake", ">= 0.9.2"
18
- s.add_dependency "rest-client", '>= 1.6.6'
17
+ s.add_dependency "toystore", ">= 0.8.2"
18
+ s.add_dependency "adapter", ">= 0.5.2"
19
+ s.add_dependency "faraday"
19
20
  s.add_dependency "mixlib-authentication", '>= 1.1.4'
20
- s.add_dependency "yajl-ruby", '>= 0.8.3'
21
+ s.add_dependency "yajl-ruby", '>= 1.1.0'
21
22
 
22
23
  s.add_development_dependency 'rspec', '>= 2.6.0'
23
24
  s.add_development_dependency "webmock", ">= 1.6.2"
metadata CHANGED
@@ -1,41 +1,52 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spice
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
5
- prerelease:
4
+ version: 1.0.0.pre
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Dan Ryan
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-14 00:00:00.000000000Z
12
+ date: 2012-01-16 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rake
16
- requirement: &70290097785760 !ruby/object:Gem::Requirement
15
+ name: toystore
16
+ requirement: &70283810072460 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 0.9.2
21
+ version: 0.8.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70290097785760
24
+ version_requirements: *70283810072460
25
25
  - !ruby/object:Gem::Dependency
26
- name: rest-client
27
- requirement: &70290097785000 !ruby/object:Gem::Requirement
26
+ name: adapter
27
+ requirement: &70283810071860 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
31
31
  - !ruby/object:Gem::Version
32
- version: 1.6.6
32
+ version: 0.5.2
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70290097785000
35
+ version_requirements: *70283810071860
36
+ - !ruby/object:Gem::Dependency
37
+ name: faraday
38
+ requirement: &70283810071480 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70283810071480
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: mixlib-authentication
38
- requirement: &70290097783860 !ruby/object:Gem::Requirement
49
+ requirement: &70283810070940 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,21 +54,21 @@ dependencies:
43
54
  version: 1.1.4
44
55
  type: :runtime
45
56
  prerelease: false
46
- version_requirements: *70290097783860
57
+ version_requirements: *70283810070940
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: yajl-ruby
49
- requirement: &70290097783040 !ruby/object:Gem::Requirement
60
+ requirement: &70283810070300 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
53
64
  - !ruby/object:Gem::Version
54
- version: 0.8.3
65
+ version: 1.1.0
55
66
  type: :runtime
56
67
  prerelease: false
57
- version_requirements: *70290097783040
68
+ version_requirements: *70283810070300
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: rspec
60
- requirement: &70290097782240 !ruby/object:Gem::Requirement
71
+ requirement: &70283810069820 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,10 +76,10 @@ dependencies:
65
76
  version: 2.6.0
66
77
  type: :development
67
78
  prerelease: false
68
- version_requirements: *70290097782240
79
+ version_requirements: *70283810069820
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: webmock
71
- requirement: &70290097780700 !ruby/object:Gem::Requirement
82
+ requirement: &70283810069360 !ruby/object:Gem::Requirement
72
83
  none: false
73
84
  requirements:
74
85
  - - ! '>='
@@ -76,10 +87,10 @@ dependencies:
76
87
  version: 1.6.2
77
88
  type: :development
78
89
  prerelease: false
79
- version_requirements: *70290097780700
90
+ version_requirements: *70283810069360
80
91
  - !ruby/object:Gem::Dependency
81
92
  name: timecop
82
- requirement: &70290097773160 !ruby/object:Gem::Requirement
93
+ requirement: &70283810068880 !ruby/object:Gem::Requirement
83
94
  none: false
84
95
  requirements:
85
96
  - - ! '>='
@@ -87,10 +98,10 @@ dependencies:
87
98
  version: 0.3.5
88
99
  type: :development
89
100
  prerelease: false
90
- version_requirements: *70290097773160
101
+ version_requirements: *70283810068880
91
102
  - !ruby/object:Gem::Dependency
92
103
  name: guard
93
- requirement: &70290097772220 !ruby/object:Gem::Requirement
104
+ requirement: &70283810068280 !ruby/object:Gem::Requirement
94
105
  none: false
95
106
  requirements:
96
107
  - - ! '>='
@@ -98,10 +109,10 @@ dependencies:
98
109
  version: 0.6.2
99
110
  type: :development
100
111
  prerelease: false
101
- version_requirements: *70290097772220
112
+ version_requirements: *70283810068280
102
113
  - !ruby/object:Gem::Dependency
103
114
  name: guard-rspec
104
- requirement: &70290097771180 !ruby/object:Gem::Requirement
115
+ requirement: &70283810067820 !ruby/object:Gem::Requirement
105
116
  none: false
106
117
  requirements:
107
118
  - - ! '>='
@@ -109,10 +120,10 @@ dependencies:
109
120
  version: 0.4.2
110
121
  type: :development
111
122
  prerelease: false
112
- version_requirements: *70290097771180
123
+ version_requirements: *70283810067820
113
124
  - !ruby/object:Gem::Dependency
114
125
  name: guard-spork
115
- requirement: &70290097769520 !ruby/object:Gem::Requirement
126
+ requirement: &70283810067360 !ruby/object:Gem::Requirement
116
127
  none: false
117
128
  requirements:
118
129
  - - ! '>='
@@ -120,10 +131,10 @@ dependencies:
120
131
  version: 0.2.1
121
132
  type: :development
122
133
  prerelease: false
123
- version_requirements: *70290097769520
134
+ version_requirements: *70283810067360
124
135
  - !ruby/object:Gem::Dependency
125
136
  name: spork
126
- requirement: &70290097768040 !ruby/object:Gem::Requirement
137
+ requirement: &70283810066740 !ruby/object:Gem::Requirement
127
138
  none: false
128
139
  requirements:
129
140
  - - ! '>='
@@ -131,10 +142,10 @@ dependencies:
131
142
  version: 0.9.0.rc8
132
143
  type: :development
133
144
  prerelease: false
134
- version_requirements: *70290097768040
145
+ version_requirements: *70283810066740
135
146
  - !ruby/object:Gem::Dependency
136
147
  name: rb-fsevent
137
- requirement: &70290097759060 !ruby/object:Gem::Requirement
148
+ requirement: &70283810066280 !ruby/object:Gem::Requirement
138
149
  none: false
139
150
  requirements:
140
151
  - - ! '>='
@@ -142,10 +153,10 @@ dependencies:
142
153
  version: 0.4.3.1
143
154
  type: :development
144
155
  prerelease: false
145
- version_requirements: *70290097759060
156
+ version_requirements: *70283810066280
146
157
  - !ruby/object:Gem::Dependency
147
158
  name: growl
148
- requirement: &70290097756480 !ruby/object:Gem::Requirement
159
+ requirement: &70283810065820 !ruby/object:Gem::Requirement
149
160
  none: false
150
161
  requirements:
151
162
  - - ! '>='
@@ -153,7 +164,7 @@ dependencies:
153
164
  version: 1.0.3
154
165
  type: :development
155
166
  prerelease: false
156
- version_requirements: *70290097756480
167
+ version_requirements: *70283810065820
157
168
  description: Spice is a zesty Chef API wrapper. Its primary purpose is to let you
158
169
  easily integrate your apps with a Chef server easily. Spice provides support for
159
170
  the entire released Chef API
@@ -178,15 +189,30 @@ files:
178
189
  - lib/spice/authentication.rb
179
190
  - lib/spice/chef.rb
180
191
  - lib/spice/client.rb
192
+ - lib/spice/config.rb
181
193
  - lib/spice/connection.rb
194
+ - lib/spice/connection/authentication.rb
195
+ - lib/spice/connection/clients.rb
196
+ - lib/spice/connection/cookbooks.rb
197
+ - lib/spice/connection/data_bags.rb
198
+ - lib/spice/connection/environments.rb
199
+ - lib/spice/connection/nodes.rb
200
+ - lib/spice/connection/roles.rb
201
+ - lib/spice/connection/search.rb
182
202
  - lib/spice/cookbook.rb
183
- - lib/spice/core_ext/hash.rb
203
+ - lib/spice/cookbook_version.rb
184
204
  - lib/spice/data_bag.rb
205
+ - lib/spice/data_bag_item.rb
185
206
  - lib/spice/environment.rb
207
+ - lib/spice/error.rb
186
208
  - lib/spice/mock.rb
187
209
  - lib/spice/node.rb
210
+ - lib/spice/persistence.rb
211
+ - lib/spice/request.rb
212
+ - lib/spice/request/auth.rb
213
+ - lib/spice/response/client_error.rb
214
+ - lib/spice/response/parse_json.rb
188
215
  - lib/spice/role.rb
189
- - lib/spice/search.rb
190
216
  - lib/spice/version.rb
191
217
  - spec/spec_helper.rb
192
218
  - spec/spice/authentication_spec.rb
@@ -224,16 +250,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
224
250
  version: '0'
225
251
  segments:
226
252
  - 0
227
- hash: -1280305717282640060
253
+ hash: -3673399458224302804
228
254
  required_rubygems_version: !ruby/object:Gem::Requirement
229
255
  none: false
230
256
  requirements:
231
- - - ! '>='
257
+ - - ! '>'
232
258
  - !ruby/object:Gem::Version
233
- version: '0'
234
- segments:
235
- - 0
236
- hash: -1280305717282640060
259
+ version: 1.3.1
237
260
  requirements: []
238
261
  rubyforge_project: spice
239
262
  rubygems_version: 1.8.10
@@ -1,21 +0,0 @@
1
- module Spice
2
- module CoreExt
3
- module Hash
4
-
5
- def symbolize_keys!
6
- keys.each do |key|
7
- self[(key.to_sym rescue key) || key] = delete(key)
8
- end
9
- self
10
- end
11
- def symbolize_keys
12
- dup.symbolize_keys!
13
- end
14
-
15
- end
16
- end
17
- end
18
-
19
- class Hash
20
- include Spice::CoreExt::Hash
21
- end