vayacondios-server 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
data/app/http_shim.rb CHANGED
@@ -95,4 +95,4 @@ class HttpShim < Goliath::API
95
95
  :delete
96
96
  end
97
97
  end
98
- end
98
+ end
@@ -0,0 +1,57 @@
1
+ require 'net/http'
2
+ require 'multi_json'
3
+
4
+ class Vayacondios
5
+ class Client
6
+ class ItemSet
7
+ def initialize host, port, organization, topic, id
8
+ @host = host
9
+ @port = port
10
+
11
+ @path = "/v1/#{organization}/itemset/#{topic}/#{id}"
12
+ end
13
+
14
+ # Exposed for testing.
15
+ def _req type, ary = nil
16
+ case type
17
+ when :fetch then
18
+ req = Net::HTTP::Get.new(@path)
19
+ when :create then
20
+ (req = Net::HTTP::Put.new(@path)).body = MultiJson.encode(ary)
21
+ when :update then
22
+ (req = Net::HTTP::Put.new(@path, [["http_x_method", "PATCH"]])).body = MultiJson.encode(ary)
23
+ when :remove then
24
+ (req = Net::HTTP::Delete.new(@path)).body = MultiJson.encode(ary)
25
+ end
26
+ req
27
+ end
28
+
29
+ def fetch
30
+ execute_request(_req(:fetch))
31
+ end
32
+
33
+ def update ary
34
+ execute_request(_req(:update, ary))
35
+ end
36
+
37
+ def create ary
38
+ execute_request(_req(:create, ary))
39
+ end
40
+
41
+ def remove ary
42
+ execute_request(_req(:remove, ary))
43
+ end
44
+
45
+
46
+ private
47
+
48
+ def execute_request req
49
+ resp = Net::HTTP.start(@host, @port) do |http|
50
+ http.request(req)
51
+ end.body
52
+ result = MultiJson.decode(resp) unless resp.nil? or resp.empty?
53
+ (result.respond_to?(:has_key?) and result.has_key? "error") ? nil : result
54
+ end
55
+ end
56
+ end
57
+ end
@@ -46,6 +46,10 @@ class Vayacondios::ItemsetDocument < Vayacondios::Document
46
46
  end
47
47
 
48
48
  def update(document)
49
+ if !document.is_a?(Array)
50
+ puts "not an array: #{document}"
51
+ end
52
+
49
53
  raise Vayacondios::Error::BadRequest.new if !document.is_a?(Array)
50
54
 
51
55
  @body = document
@@ -1,3 +1,3 @@
1
1
  class Vayacondios
2
- VERSION = '0.0.9'
2
+ VERSION = '0.0.10'
3
3
  end
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+
3
+ require 'multi_json'
4
+
5
+ require_relative '../../lib/vayacondios/client/itemset'
6
+
7
+ describe Vayacondios::Client::ItemSet do
8
+ context "when initialized" do
9
+ it "can be passed a host, port, organization, topic and id" do
10
+ Vayacondios::Client::ItemSet.new("foohost", 9999, "fooorg", "footopic", "fooid")
11
+ end
12
+ end
13
+
14
+ context "after instantiation" do
15
+
16
+ itemset = Vayacondios::Client::ItemSet.new("foohost", 9999, "fooorg", "footopic", "fooid")
17
+ ary = ["foo", "bar", "baz"]
18
+
19
+ # Actually testing internals here to avoid
20
+
21
+ it "generates a put request without a patch header when asked to create" do
22
+ req = itemset._req :create, ary
23
+
24
+ req.method.should eql('PUT')
25
+ req.body.should eql(ary.to_json)
26
+ req.path.should eql('/v1/fooorg/itemset/footopic/fooid')
27
+ req.each_header.to_a.should_not include(["http_x_method", "PATCH"])
28
+ end
29
+
30
+ it "generates a put request with a patch header when asked to update" do
31
+ req = itemset._req :update, ary
32
+
33
+ req.method.should eql('PUT')
34
+ req.body.should eql(ary.to_json)
35
+ req.path.should eql('/v1/fooorg/itemset/footopic/fooid')
36
+ req.each_header.to_a.should include(["http_x_method", "PATCH"])
37
+ end
38
+
39
+ it "generates a get request when asked to fetch" do
40
+ req = itemset._req :fetch
41
+
42
+ req.method.should eql('GET')
43
+ req.body.should be_nil
44
+ req.path.should eql('/v1/fooorg/itemset/footopic/fooid')
45
+ end
46
+
47
+ it "generates a delete request when asked to remove" do
48
+ req = itemset._req :remove, ary
49
+
50
+ req.method.should eql('DELETE')
51
+ req.body.should eql(ary.to_json)
52
+ req.path.should eql('/v1/fooorg/itemset/footopic/fooid')
53
+ end
54
+ end
55
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vayacondios-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-09-07 00:00:00.000000000 Z
15
+ date: 2012-09-10 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: configliere
@@ -203,6 +203,7 @@ files:
203
203
  - lib/vayacondios-server.rb
204
204
  - lib/vayacondios/client/configliere.rb
205
205
  - lib/vayacondios/client/http_client.rb
206
+ - lib/vayacondios/client/itemset.rb
206
207
  - lib/vayacondios/client/notifier.rb
207
208
  - lib/vayacondios/server/errors/bad_request.rb
208
209
  - lib/vayacondios/server/errors/not_found.rb
@@ -222,6 +223,7 @@ files:
222
223
  - scripts/s3_cataloger/buckets
223
224
  - scripts/s3_cataloger/foreach_bucket
224
225
  - scripts/s3_cataloger/parse_ls.py
226
+ - spec/client/itemset_spec.rb
225
227
  - spec/client/notifier_spec.rb
226
228
  - spec/server/config_spec.rb
227
229
  - spec/server/event_spec.rb
@@ -245,7 +247,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
245
247
  version: '0'
246
248
  segments:
247
249
  - 0
248
- hash: 4400394871557096309
250
+ hash: -1252919032941517735
249
251
  required_rubygems_version: !ruby/object:Gem::Requirement
250
252
  none: false
251
253
  requirements:
@@ -254,7 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
256
  version: '0'
255
257
  segments:
256
258
  - 0
257
- hash: 4400394871557096309
259
+ hash: -1252919032941517735
258
260
  requirements: []
259
261
  rubyforge_project:
260
262
  rubygems_version: 1.8.23
@@ -262,6 +264,7 @@ signing_key:
262
264
  specification_version: 3
263
265
  summary: Data goes in. The right thing happens
264
266
  test_files:
267
+ - spec/client/itemset_spec.rb
265
268
  - spec/client/notifier_spec.rb
266
269
  - spec/server/config_spec.rb
267
270
  - spec/server/event_spec.rb