consul-kv 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 842a67923f31d892cf220492577113c88ac02d5e
4
- data.tar.gz: 77783ecfb709cc07d99ca71b90a7011ea585912d
3
+ metadata.gz: 2b383e4dd3a63a7ab6d8c45cf5220e291c3fb4ea
4
+ data.tar.gz: 94f82e64a6a81e6be4c2aba92e0083a878ab16cc
5
5
  SHA512:
6
- metadata.gz: 0fb84ba82a9c7c0b5d934cae5e7db2fe3150c41cb473e99d03e992eb54159405198c468fbc6b6280024fa9b013223bbcee32468e263010cb3d55ca61c5244240
7
- data.tar.gz: 652125a6a738bf706aef0df66712059ba6799e5c4d7a9de7aa943917b09f38da860b576c09daf10238a2d7b40dd7eb05e2362a6a3b76c911756f3549a5d2f48b
6
+ metadata.gz: a4d7bae75fce6aef40d140febe77928a6d2204bf96fc5fea5aab7141fcae257044b803880fb9d7ee5fdd24c952c6dde83ed4281ea5d9acdb33fa0e7eb1f591fd
7
+ data.tar.gz: 49b090e9c2c554816934abcd17ac020b8bd904ef132b65b7b78f88ffcfdc1b725348e71ce103975f45f86f48f15cd051c6d157b0e457f6994661905e8ccaa520
data/README.md CHANGED
@@ -33,6 +33,10 @@ store['foo'] #=> { 'foo' => 'bar' }
33
33
  store.delete('foo') #=> true
34
34
  ```
35
35
 
36
+ ## TODO
37
+ 1. Switchable Datacenters
38
+ 2. Atomic operations
39
+
36
40
  ## Contributing
37
41
 
38
42
  1. Fork it ( https://github.com/[my-github-username]/consul-kv/fork )
@@ -8,22 +8,23 @@ module Consul
8
8
  CannotWriteError = Class.new(StandardError)
9
9
  CannotDeleteError = Class.new(StandardError)
10
10
 
11
- def initialize
12
- @mutex = Mutex.new
13
- @conn = Connection.new
11
+ def initialize(prefix = nil)
12
+ @mutex = Mutex.new
13
+ @conn = Connection.new
14
+ @prefix = prefix
14
15
  end
15
16
 
16
17
  def get(key)
17
18
  resp = nil
18
19
  @mutex.synchronize do
19
- resp = conn.get key, true
20
+ resp = conn.get build(key), true
20
21
  end
21
22
  return nil if resp.kind_of?(Net::HTTPNotFound)
22
23
  raise CannotReadError unless resp.kind_of?(Net::HTTPSuccess)
23
24
  json = JSON.parse(resp.body)
24
- if json.size > 1 || json.first['Key'] != key
25
+ if json.size > 1 || json.first['Key'] != build(key)
25
26
  json.each_with_object({}) do |item, hsh|
26
- hsh[item['Key'].gsub(/\A#{key}\//, '')] = Base64.decode64(item['Value'])
27
+ hsh[item['Key'].gsub(/\A#{build(key)}\//, '')] = Base64.decode64(item['Value'])
27
28
  end
28
29
  else
29
30
  Base64.decode64 json.first['Value']
@@ -34,7 +35,7 @@ module Consul
34
35
  def put(key, value)
35
36
  resp = nil
36
37
  @mutex.synchronize do
37
- resp = conn.put key, value
38
+ resp = conn.put build(key), value
38
39
  end
39
40
  raise CannotWriteError unless resp.kind_of?(Net::HTTPSuccess)
40
41
  get key
@@ -44,15 +45,22 @@ module Consul
44
45
  def delete(key)
45
46
  resp = nil
46
47
  @mutex.synchronize do
47
- resp = conn.delete key, true
48
+ resp = conn.delete build(key), true
48
49
  end
49
50
  raise CannotDeleteError unless resp.kind_of?(Net::HTTPSuccess)
51
+ true
50
52
  end
51
53
 
52
54
  private
53
55
 
54
56
  attr_reader :conn
55
57
 
58
+ def build key
59
+ return key unless @prefix
60
+ return @prefix if key == ''
61
+ "#{@prefix}/#{key}"
62
+ end
63
+
56
64
  end
57
65
  end
58
66
  end
@@ -1,5 +1,5 @@
1
1
  module Consul
2
2
  module KV
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: consul-kv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - JGW Maxwell