ribeye 0.0.0 → 0.1.0

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NGU1NzIyY2IzZmE3YTQ2YWFmZmUyNWE4ZjlhN2U0Y2ViMDY2MWU1Mg==
4
+ NDdkYTJlMDkwNjM1ZDEzZThjMDhkYmEwMmNhZDA5MGNkNWM4NmE3Yw==
5
5
  data.tar.gz: !binary |-
6
- MzI0NzRjOWUwNThmYmU2Mjc2MzA5N2YzOGU1YjliYmVjNTBkOTcyMQ==
6
+ YmIwODRiN2Y2MzNhMjg5ODZhYjI5YmRjNGYyMzFiZGIzNTM3OGJiMA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- OTI5NzBmZTM0ODY0MDBkNDQ4YTA4MWNjMWVlZDVmNzQyMThiMDA0MmY5MGM2
10
- YjYyZTE0MTU4MTE4NmQyNjRhZGVlNGQyNDNhOWEyNWMwNjZmM2FmYTlhNzhl
11
- NmI2MGE1YmUwZGUyNDA1NWZiMGY1YWI3NDcyZmFlYzc5ZjRkYTU=
9
+ YzlkOWIyYjVmMGFjOTRkM2RjNjQyYTM5ODdkNTc0Y2ExODNhN2Y4N2E2MWI1
10
+ NzgwNzRlY2I1MjlhOWI3MGE0NDJjNzBhYTc4NDM5ZWJmNTc1NzQ3NjU4ZDk2
11
+ ZGVhNjYxMjMxZjFhM2I2NjBhYjNlZDlkMzBhYTE2NTYyNjc3Yjc=
12
12
  data.tar.gz: !binary |-
13
- YjQwNTdjOWVmYTg2N2Q0OWI5YTI1Njc1ODJiMjdiZGRkMWFhZmM5MWJkZjk3
14
- OTYzODhjYjI2MTYxNTZiY2Y4ODVlMGUzNTVmZmY3MmQ4M2IzMTM0YmY3ZjQ4
15
- MDBiNWE0YmQxY2JjYjhjNDg3YjdkMmU3YzFlZTBhYjMxMWU3ODY=
13
+ NTQzNGQ1MmFlZTk5ZDBiODhkYTA5MTI0YjViN2JiYzBlOGRjY2M5NDlkMWFk
14
+ NDYzMWU4NWI3ZDllNTJjMzNkNzQ2OTY0NTRhYzY3M2ViNTBmZDI1ZGQyZTFl
15
+ NzJhOWY5MTc1ODllY2E3NDg2NGEzNTgyZmRmMTU1Mjg3YWM0N2I=
data/Gemfile CHANGED
@@ -1,5 +1,7 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
+ gem 'httpclient', '~> 2.3.4.1'
4
+
3
5
  group :development do
4
6
  gem 'rspec', '~> 2.8.0'
5
7
  gem 'bundler', '~> 1.3.5'
data/Gemfile.lock CHANGED
@@ -17,6 +17,7 @@ GEM
17
17
  hashie (2.0.5)
18
18
  highline (1.6.20)
19
19
  httpauth (0.2.0)
20
+ httpclient (2.3.4.1)
20
21
  jeweler (1.8.8)
21
22
  builder
22
23
  bundler (~> 1.0)
@@ -58,5 +59,6 @@ PLATFORMS
58
59
 
59
60
  DEPENDENCIES
60
61
  bundler (~> 1.3.5)
62
+ httpclient (~> 2.3.4.1)
61
63
  jeweler (~> 1.8.4)
62
64
  rspec (~> 2.8.0)
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  A Ruby client to the [Beef](https://github.com/DavidHuie/beef) bloom filter server.
4
4
 
5
- == Copyright
5
+ ## Copyright
6
6
 
7
7
  Copyright (c) 2013 David Huie. See LICENSE.txt for
8
8
  further details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.0
1
+ 0.1.0
data/lib/ribeye.rb CHANGED
@@ -1 +1,67 @@
1
+ require 'httpclient'
2
+ require 'ribeye/bloom_filter'
1
3
 
4
+ class Ribeye
5
+
6
+ # Response codes
7
+ TRUE_VALUE = 't'
8
+ FALSE_VALUE = 'f'
9
+ SUCCESS = '0'
10
+ INVALID_PARAMETER_VALUE = '1'
11
+ INVALID_PARAMETERS = '2'
12
+ BLOOM_FILTER_EXISTS = '3'
13
+ BLOOM_FILTER_DOES_NOT_EXIST = '4'
14
+
15
+ # Response code exceptions
16
+ class InvalidParameterValue < StandardError; end
17
+ class InvalidParameters < StandardError; end
18
+ class NonExistentBF < StandardError; end
19
+ class BFExists < StandardError; end
20
+
21
+ attr_accessor :uri, :client
22
+
23
+ def initialize(uri = nil)
24
+ @uri = uri || 'http://localhost:8080'
25
+ @client = HTTPClient.new
26
+ end
27
+
28
+ def parse_errors(body)
29
+ case body
30
+ when INVALID_PARAMETER_VALUE
31
+ raise InvalidParameterValue
32
+ when INVALID_PARAMETERS
33
+ raise InvalidParameters
34
+ when BLOOM_FILTER_EXISTS
35
+ raise BFExists
36
+ when BLOOM_FILTER_DOES_NOT_EXIST
37
+ raise NonExistentBF
38
+ end
39
+ end
40
+
41
+ def make_request(path, success_value, params)
42
+ response = client.get(URI.join(uri, path), params)
43
+ parse_errors(response.body)
44
+ response.body == success_value
45
+ end
46
+
47
+ def create(name, size)
48
+ make_request('/create', SUCCESS, name: name, size: size)
49
+ end
50
+
51
+ def delete(name)
52
+ make_request('/delete', SUCCESS, name: name)
53
+ end
54
+
55
+ def exists(name)
56
+ make_request('/exists', TRUE_VALUE, name: name)
57
+ end
58
+
59
+ def insert(name, value)
60
+ make_request('/insert', SUCCESS, name: name, value: value)
61
+ end
62
+
63
+ def check(name, value)
64
+ make_request('/check', TRUE_VALUE, name: name, value: value)
65
+ end
66
+
67
+ end
@@ -0,0 +1,24 @@
1
+ class Ribeye
2
+
3
+ class BloomFilter
4
+
5
+ attr_reader :name, :size
6
+
7
+ def initialize(name, size, opts = {})
8
+ @name = name
9
+ @size = size
10
+ @client = Ribeye.new(opts[:uri])
11
+ @client.create(name, size) unless @client.exists(name)
12
+ end
13
+
14
+ def insert(value)
15
+ @client.insert(name, value)
16
+ end
17
+
18
+ def check(value)
19
+ @client.check(name, value)
20
+ end
21
+
22
+ end
23
+
24
+ end
data/ribeye.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: ribeye 0.0.0 ruby lib
5
+ # stub: ribeye 0.1.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "ribeye"
9
- s.version = "0.0.0"
9
+ s.version = "0.1.0"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.authors = ["David Huie"]
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
28
28
  "Rakefile",
29
29
  "VERSION",
30
30
  "lib/ribeye.rb",
31
+ "lib/ribeye/bloom_filter.rb",
31
32
  "ribeye.gemspec",
32
33
  "spec/spec_helper.rb"
33
34
  ]
@@ -41,15 +42,18 @@ Gem::Specification.new do |s|
41
42
  s.specification_version = 4
42
43
 
43
44
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
45
+ s.add_runtime_dependency(%q<httpclient>, ["~> 2.3.4.1"])
44
46
  s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
45
47
  s.add_development_dependency(%q<bundler>, ["~> 1.3.5"])
46
48
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
47
49
  else
50
+ s.add_dependency(%q<httpclient>, ["~> 2.3.4.1"])
48
51
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
49
52
  s.add_dependency(%q<bundler>, ["~> 1.3.5"])
50
53
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
51
54
  end
52
55
  else
56
+ s.add_dependency(%q<httpclient>, ["~> 2.3.4.1"])
53
57
  s.add_dependency(%q<rspec>, ["~> 2.8.0"])
54
58
  s.add_dependency(%q<bundler>, ["~> 1.3.5"])
55
59
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ribeye
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Huie
@@ -10,6 +10,20 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2013-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httpclient
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 2.3.4.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 2.3.4.1
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rspec
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -72,6 +86,7 @@ files:
72
86
  - Rakefile
73
87
  - VERSION
74
88
  - lib/ribeye.rb
89
+ - lib/ribeye/bloom_filter.rb
75
90
  - ribeye.gemspec
76
91
  - spec/spec_helper.rb
77
92
  homepage: http://github.com/DavidHuie/ribeye