sanford-protocol 0.2.0 → 0.3.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.
data/README.md CHANGED
@@ -42,6 +42,12 @@ Requests are encoded as BSON hashes when transmitted in messages.
42
42
  'name': 'some_service',
43
43
  'params': 'something'
44
44
  }
45
+
46
+ request = Sanford::Protocol::Request.parse(a_bson_request_hash)
47
+ request.version #=> "v1"
48
+ request.name #=> "some_service"
49
+ request.params #=> "something"
50
+ request.to_s #=> "[v1] some_service"
45
51
  ```
46
52
 
47
53
  ## Response
@@ -57,6 +63,16 @@ Responses are encoded as BSON hashes when transmitted in messages.
57
63
  { 'status': [ 200, 'The request was successful.' ]
58
64
  'data': true
59
65
  }
66
+
67
+ response = Sanford::Protocol::Response.parse(a_bson_response_hash)
68
+ response.status.code #=> 200
69
+ response.status.to_i #=> 200
70
+ response.status.name #=> "OK"
71
+ response.status.message #=> "The request was successful."
72
+ response.status.to_s #=> "[200, OK]"
73
+ response.code #=> 200
74
+ response.to_s #=> "[200, OK]"
75
+ response.data #=> true
60
76
  ```
61
77
 
62
78
  ### Status Codes
@@ -17,6 +17,8 @@ module Sanford::Protocol
17
17
  }
18
18
  end
19
19
 
20
+ def to_s; "[#{version}] #{name}"; end
21
+
20
22
  def valid?
21
23
  if !version
22
24
  [ false, "The request doesn't contain a version." ]
@@ -16,6 +16,9 @@ module Sanford::Protocol
16
16
  super(build_status(status), data)
17
17
  end
18
18
 
19
+ def code; status.code; end
20
+ def to_s; status.to_s; end
21
+
19
22
  def to_hash
20
23
  { 'status' => [ status.code, status.message ],
21
24
  'data' => data
@@ -24,9 +27,7 @@ module Sanford::Protocol
24
27
 
25
28
  def inspect
26
29
  reference = '0x0%x' % (self.object_id << 1)
27
- "#<#{self.class}:#{reference}"\
28
- " @status=#{status.inspect}"\
29
- " @data=#{data.inspect}>"
30
+ "#<#{self.class}:#{reference} @status=#{status} @data=#{data.inspect}>"
30
31
  end
31
32
 
32
33
  private
@@ -9,14 +9,14 @@ module Sanford::Protocol
9
9
  end
10
10
 
11
11
  def code; code_obj.number; end
12
+ alias_method :to_i, :code
13
+
12
14
  def name; code_obj.name; end
13
15
  def to_s; code_obj.to_s; end
14
16
 
15
17
  def inspect
16
18
  reference = '0x0%x' % (self.object_id << 1)
17
- "#<#{self.class}:#{reference}"\
18
- " @code=#{code_obj}"\
19
- " @message=#{message.inspect}>"
19
+ "#<#{self.class}:#{reference} @code=#{code_obj} @message=#{message.inspect}>"
20
20
  end
21
21
 
22
22
  class Code < Struct.new(:number, :name)
@@ -1,5 +1,5 @@
1
1
  module Sanford
2
2
  module Protocol
3
- GEM_VERSION = "0.2.0"
3
+ GEM_VERSION = "0.3.0"
4
4
  end
5
5
  end
@@ -13,6 +13,10 @@ class Sanford::Protocol::Request
13
13
  should have_instance_methods :version, :name, :params, :to_hash, :valid?
14
14
  should have_class_methods :parse
15
15
 
16
+ should "return it's version and name with #to_s" do
17
+ assert_equal "[#{subject.version}] #{subject.name}", subject.to_s
18
+ end
19
+
16
20
  should "return an instance of a Sanford::Protocol::Request given a hash using #parse" do
17
21
  # using BSON messages are hashes
18
22
  hash = {
@@ -11,7 +11,7 @@ class Sanford::Protocol::ResponseStatus
11
11
  subject{ @status }
12
12
 
13
13
  should have_readers :code_obj, :message
14
- should have_instance_methods :code, :name
14
+ should have_instance_methods :code, :name, :to_i
15
15
 
16
16
  should "know it's code name" do
17
17
  named = Sanford::Protocol::ResponseStatus.new(200)
@@ -21,7 +21,7 @@ class Sanford::Protocol::ResponseStatus
21
21
  assert_equal nil, unamed.name
22
22
  end
23
23
 
24
- should "know it's code numbers" do
24
+ should "know it's code number" do
25
25
  Code::NUMBERS.each do |name, value|
26
26
  status = Sanford::Protocol::ResponseStatus.new(name)
27
27
  assert_equal value, status.code
@@ -31,6 +31,10 @@ class Sanford::Protocol::ResponseStatus
31
31
  assert_equal 0, unamed.code
32
32
  end
33
33
 
34
+ should "return it's code number with #to_i" do
35
+ assert_equal subject.code, subject.to_i
36
+ end
37
+
34
38
  should "return it's code number and code name with #to_s" do
35
39
  named = Sanford::Protocol::ResponseStatus.new(200)
36
40
  unamed = Sanford::Protocol::ResponseStatus.new(999)
@@ -10,9 +10,17 @@ class Sanford::Protocol::Response
10
10
  end
11
11
  subject{ @response }
12
12
 
13
- should have_instance_methods :status, :data, :to_hash
13
+ should have_instance_methods :status, :code, :data, :to_hash, :to_s
14
14
  should have_class_methods :parse
15
15
 
16
+ should "return its status#code with #code" do
17
+ assert_equal subject.status.code, subject.code
18
+ end
19
+
20
+ should "return its status#to_s with #to_s" do
21
+ assert_equal subject.status.to_s, subject.to_s
22
+ end
23
+
16
24
  should "return an instance of a Sanford::Protocol::Response given a hash using #parse" do
17
25
  # using BSON messages are hashes
18
26
  hash = {
@@ -36,6 +44,7 @@ class Sanford::Protocol::Response
36
44
 
37
45
  assert_equal expected, subject.to_hash
38
46
  end
47
+
39
48
  end
40
49
 
41
50
  # Somewhat of a system test, want to make sure if Response is passed some
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sanford-protocol
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 2
8
+ - 3
9
9
  - 0
10
- version: 0.2.0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Collin Redding
@@ -19,7 +19,7 @@ cert_chain: []
19
19
  date: 2012-11-15 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- prerelease: false
22
+ name: bson
23
23
  version_requirements: &id001 !ruby/object:Gem::Requirement
24
24
  none: false
25
25
  requirements:
@@ -30,11 +30,11 @@ dependencies:
30
30
  - 1
31
31
  - 7
32
32
  version: "1.7"
33
- requirement: *id001
34
- name: bson
35
33
  type: :runtime
36
- - !ruby/object:Gem::Dependency
34
+ requirement: *id001
37
35
  prerelease: false
36
+ - !ruby/object:Gem::Dependency
37
+ name: assert
38
38
  version_requirements: &id002 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
@@ -45,11 +45,11 @@ dependencies:
45
45
  - 0
46
46
  - 8
47
47
  version: "0.8"
48
- requirement: *id002
49
- name: assert
50
48
  type: :development
51
- - !ruby/object:Gem::Dependency
49
+ requirement: *id002
52
50
  prerelease: false
51
+ - !ruby/object:Gem::Dependency
52
+ name: assert-mocha
53
53
  version_requirements: &id003 !ruby/object:Gem::Requirement
54
54
  none: false
55
55
  requirements:
@@ -60,9 +60,9 @@ dependencies:
60
60
  - 0
61
61
  - 1
62
62
  version: "0.1"
63
- requirement: *id003
64
- name: assert-mocha
65
63
  type: :development
64
+ requirement: *id003
65
+ prerelease: false
66
66
  description: Ruby implementation of Sanford's communication protocol.
67
67
  email:
68
68
  - collin.redding@me.com
@@ -127,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  requirements: []
128
128
 
129
129
  rubyforge_project:
130
- rubygems_version: 1.8.15
130
+ rubygems_version: 1.8.24
131
131
  signing_key:
132
132
  specification_version: 3
133
133
  summary: Ruby implementation of Sanford's communication protocol.