redis-protocol 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
@@ -6,4 +6,5 @@ module RedisProtocol
6
6
  end
7
7
  end
8
8
 
9
- require 'redis-protocol/request'
9
+ require 'redis-protocol/request'
10
+ require 'redis-protocol/static_request'
@@ -1,5 +1,5 @@
1
1
  class RedisProtocol::StaticRequest
2
- attr_reader :raw_data, :type
2
+ attr_reader :raw_data, :type, :components, :component_count
3
3
  OP_DELIMITER = "\r\n"
4
4
 
5
5
  def initialize(data)
@@ -10,7 +10,7 @@ class RedisProtocol::StaticRequest
10
10
  def parse_request
11
11
  @type = check_request_type
12
12
 
13
- send @type, @raw_data
13
+ send @type
14
14
  end
15
15
 
16
16
  def self.recognize(data)
@@ -29,6 +29,7 @@ class RedisProtocol::StaticRequest
29
29
  data, payload = unpack_payload(payload)
30
30
  components << data
31
31
  end
32
+ @component_count = components.count
32
33
  @components = components
33
34
  end
34
35
 
@@ -47,8 +48,10 @@ class RedisProtocol::StaticRequest
47
48
  next_token payload, field_length
48
49
  end
49
50
 
50
- def inline(data)
51
- data.split
51
+ def inline
52
+ @components = @raw_data.split
53
+ @component_count = @components.count
54
+ @components
52
55
  end
53
56
 
54
57
  def next_token(data, length = 0)
@@ -0,0 +1,54 @@
1
+ require_relative '../spec_helper'
2
+
3
+ describe RedisProtocol::StaticRequest do
4
+ it 'initialize with data' do
5
+ RedisProtocol::StaticRequest.new 'ping'
6
+ end
7
+
8
+ it 'should get raw data as original' do
9
+ request = RedisProtocol::StaticRequest.new 'ping'
10
+ request.raw_data.should eql 'ping'
11
+ end
12
+
13
+ it 'should parse inline command' do
14
+ request = RedisProtocol::StaticRequest.new 'ping'
15
+ request.components[0].should eql 'ping'
16
+ request.component_count.should be 1
17
+ end
18
+
19
+ it 'should parse inline command with parameter' do
20
+ request = RedisProtocol::StaticRequest.new 'keys *'
21
+ request.components[0].should eql 'keys'
22
+ request.component_count.should be 2
23
+ end
24
+
25
+ it 'should parse inline command with multi whitespaces' do
26
+ request = RedisProtocol::StaticRequest.new 'keys *'
27
+ request.components[0].should eql 'keys'
28
+ request.component_count.should be 2
29
+ end
30
+
31
+ it 'should parse standard command' do
32
+ request = RedisProtocol::StaticRequest.new "*1\r\n$4\r\nping"
33
+ request.components[0].should eql 'ping'
34
+ request.component_count.should be 1
35
+ end
36
+
37
+ it 'should parse standard command with parameter' do
38
+ request = RedisProtocol::StaticRequest.new "*2\r\n$4\r\nkeys\r\n$1\r\n*"
39
+ request.components[0].should eql 'keys'
40
+ request.component_count.should be 2
41
+ end
42
+
43
+ it 'should parse standard command with multiple parameters' do
44
+ request = RedisProtocol::StaticRequest.new "*3\r\n$3\r\nset\r\n$4\r\ntest\r\n$5\r\nhello"
45
+ request.components[0].should eql 'set'
46
+ request.component_count.should be 3
47
+ end
48
+
49
+ it 'should parse standard command containing delimiter' do
50
+ request = RedisProtocol::StaticRequest.new "*3\r\n$3\r\nset\r\n$4\r\ntest\r\n$12\r\nhello\r\nworld"
51
+ request.components[2].should eql "hello\r\nworld"
52
+ request.component_count.should be 3
53
+ end
54
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-protocol
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -129,6 +129,7 @@ files:
129
129
  - lib/redis-protocol/request.rb
130
130
  - lib/redis-protocol/static_request.rb
131
131
  - spec/redis-protocol/request_spec.rb
132
+ - spec/redis-protocol/static_request_spec.rb
132
133
  - spec/redis-protocol_spec.rb
133
134
  - spec/spec_helper.rb
134
135
  homepage: http://github.com/astral1/redis-protocol
@@ -146,7 +147,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
146
147
  version: '0'
147
148
  segments:
148
149
  - 0
149
- hash: 1791670625487340402
150
+ hash: 3700473079050196087
150
151
  required_rubygems_version: !ruby/object:Gem::Requirement
151
152
  none: false
152
153
  requirements: