coap 0.0.16 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.travis.yml +13 -2
  4. data/Gemfile +0 -1
  5. data/LICENSE +2 -2
  6. data/README.md +37 -33
  7. data/Rakefile +12 -3
  8. data/bin/coap +111 -0
  9. data/coap.gemspec +34 -29
  10. data/lib/coap.rb +3 -34
  11. data/lib/core.rb +11 -0
  12. data/lib/core/coap.rb +42 -0
  13. data/lib/core/coap/block.rb +98 -0
  14. data/lib/core/coap/client.rb +314 -0
  15. data/lib/core/coap/coap.rb +26 -0
  16. data/lib/core/coap/coding.rb +146 -0
  17. data/lib/core/coap/fsm.rb +82 -0
  18. data/lib/core/coap/message.rb +203 -0
  19. data/lib/core/coap/observer.rb +40 -0
  20. data/lib/core/coap/options.rb +44 -0
  21. data/lib/core/coap/registry.rb +32 -0
  22. data/lib/core/coap/registry/content_formats.yml +7 -0
  23. data/lib/core/coap/resolver.rb +17 -0
  24. data/lib/core/coap/transmission.rb +165 -0
  25. data/lib/core/coap/types.rb +69 -0
  26. data/lib/core/coap/utility.rb +34 -0
  27. data/lib/core/coap/version.rb +5 -0
  28. data/lib/core/core_ext/socket.rb +19 -0
  29. data/lib/core/hexdump.rb +18 -0
  30. data/lib/core/link.rb +97 -0
  31. data/lib/core/os.rb +15 -0
  32. data/spec/block_spec.rb +160 -0
  33. data/spec/client_spec.rb +86 -0
  34. data/spec/fixtures/coap.me.link +1 -0
  35. data/spec/link_spec.rb +98 -0
  36. data/spec/registry_spec.rb +39 -0
  37. data/spec/resolver_spec.rb +19 -0
  38. data/spec/spec_helper.rb +17 -0
  39. data/spec/transmission_spec.rb +70 -0
  40. data/test/helper.rb +15 -0
  41. data/test/test_client.rb +99 -228
  42. data/test/test_message.rb +99 -71
  43. metadata +140 -37
  44. data/bin/client +0 -42
  45. data/lib/coap/block.rb +0 -45
  46. data/lib/coap/client.rb +0 -364
  47. data/lib/coap/coap.rb +0 -273
  48. data/lib/coap/message.rb +0 -187
  49. data/lib/coap/mysocket.rb +0 -81
  50. data/lib/coap/observer.rb +0 -41
  51. data/lib/coap/version.rb +0 -3
  52. data/lib/misc/hexdump.rb +0 -17
  53. data/test/coap_test_helper.rb +0 -2
  54. data/test/disabled_econotag_blck.rb +0 -33
data/test/test_message.rb CHANGED
@@ -1,126 +1,154 @@
1
- # -*- encoding: utf-8 -*-
2
- require_relative 'coap_test_helper'
1
+ # encoding: utf-8
3
2
 
4
- class TestMessage < Test::Unit::TestCase
3
+ require 'helper'
4
+
5
+ class TestMessage < Minitest::Test
5
6
  def test_number_of_bits_up_to
6
- assert_equal 0, CoAP.number_of_bits_up_to(1)
7
- assert_equal 4, CoAP.number_of_bits_up_to(16)
8
- assert_equal 5, CoAP.number_of_bits_up_to(32)
9
- assert_equal 7, CoAP.number_of_bits_up_to(128)
7
+ assert_equal 0, CoRE::CoAP.number_of_bits_up_to(1)
8
+ assert_equal 4, CoRE::CoAP.number_of_bits_up_to(16)
9
+ assert_equal 5, CoRE::CoAP.number_of_bits_up_to(32)
10
+ assert_equal 7, CoRE::CoAP.number_of_bits_up_to(128)
11
+ end
12
+
13
+ def test_path_encode
14
+ assert_equal "/", CoRE::CoAP.path_encode([])
15
+ assert_equal "/foo", CoRE::CoAP.path_encode(["foo"])
16
+ assert_equal "/foo/bar", CoRE::CoAP.path_encode(["foo", "bar"])
17
+ assert_equal "/f.o/b-r", CoRE::CoAP.path_encode(["f.o", "b-r"])
18
+ assert_equal "/f(o/b)r", CoRE::CoAP.path_encode(["f(o", "b)r"])
19
+ assert_equal "/foo/b%2Fr", CoRE::CoAP.path_encode(["foo", "b/r"])
20
+ assert_equal "/foo/b&r", CoRE::CoAP.path_encode(["foo", "b&r"])
21
+ assert_equal "/f%C3%B8o/b%C3%A4r", CoRE::CoAP.path_encode(["føo", "bär"])
10
22
  end
11
23
 
12
24
  def test_query_encode
13
- assert_equal '', CoAP.query_encode([])
14
- assert_equal '?', CoAP.query_encode([''])
15
- assert_equal '?foo', CoAP.query_encode(['foo'])
16
- assert_equal '?foo&bar', CoAP.query_encode(%w(foo bar))
17
- assert_equal '?f.o&b-r', CoAP.query_encode(['f.o', 'b-r'])
18
- assert_equal '?f(o&b)r', CoAP.query_encode(['f(o', 'b)r'])
19
- assert_equal '?foo&b/r', CoAP.query_encode(['foo', 'b/r'])
20
- assert_equal '?foo&b%26r', CoAP.query_encode(['foo', 'b&r'])
21
- assert_equal '?f%C3%B8o&b%C3%A4r', CoAP.query_encode(['føo', 'bär'])
25
+ assert_equal "", CoRE::CoAP.query_encode([])
26
+ assert_equal "?", CoRE::CoAP.query_encode([""])
27
+ assert_equal "?foo", CoRE::CoAP.query_encode(["foo"])
28
+ assert_equal "?foo&bar", CoRE::CoAP.query_encode(["foo", "bar"])
29
+ assert_equal "?f.o&b-r", CoRE::CoAP.query_encode(["f.o", "b-r"])
30
+ assert_equal "?f(o&b)r", CoRE::CoAP.query_encode(["f(o", "b)r"])
31
+ assert_equal "?foo&b/r", CoRE::CoAP.query_encode(["foo", "b/r"])
32
+ assert_equal "?foo&b%26r", CoRE::CoAP.query_encode(["foo", "b&r"])
33
+ assert_equal "?f%C3%B8o&b%C3%A4r", CoRE::CoAP.query_encode(["føo", "bär"])
22
34
  end
23
35
 
24
36
  # XXX: now properly checks for trailing slashes, how much trouble?
25
37
  def test_path_decode
26
- assert_equal [], CoAP.path_decode('/')
27
- assert_equal ['foo'], CoAP.path_decode('/foo')
28
- assert_equal ['foo', ''], CoAP.path_decode('/foo/') # confusing!
29
- assert_equal %w(foo bar), CoAP.path_decode('/foo/bar')
30
- assert_equal ['f.o', 'b-r'], CoAP.path_decode('/f.o/b-r')
31
- assert_equal ['f(o', 'b)r'], CoAP.path_decode('/f(o/b)r')
32
- assert_equal ['foo', 'b/r'], CoAP.path_decode('/foo/b%2Fr')
33
- assert_equal ['foo', 'b&r'], CoAP.path_decode('/foo/b&r')
34
- assert_equal ['føo', 'bär'], CoAP.path_decode('/f%C3%B8o/b%C3%A4r')
38
+ assert_equal [], CoRE::CoAP.path_decode("/")
39
+ assert_equal ["foo"], CoRE::CoAP.path_decode("/foo")
40
+ assert_equal ["foo", ""], CoRE::CoAP.path_decode("/foo/") # confusing!
41
+ assert_equal ["foo", "bar"], CoRE::CoAP.path_decode("/foo/bar")
42
+ assert_equal ["f.o", "b-r"], CoRE::CoAP.path_decode("/f.o/b-r")
43
+ assert_equal ["f(o", "b)r"], CoRE::CoAP.path_decode("/f(o/b)r")
44
+ assert_equal ["foo", "b/r"], CoRE::CoAP.path_decode("/foo/b%2Fr")
45
+ assert_equal ["foo", "b&r"], CoRE::CoAP.path_decode("/foo/b&r")
46
+ assert_equal ["føo", "bär"], CoRE::CoAP.path_decode("/f%C3%B8o/b%C3%A4r")
35
47
  end
36
48
 
37
49
  # XXX: now checks for trailing ampersands
38
50
  def test_query_decode
39
- assert_equal [], CoAP.query_decode('')
40
- assert_equal [''], CoAP.query_decode('?')
41
- assert_equal ['foo'], CoAP.query_decode('?foo')
42
- assert_equal ['foo', ''], CoAP.query_decode('?foo&')
43
- assert_equal %w(foo bar), CoAP.query_decode('?foo&bar')
44
- assert_equal ['f.o', 'b-r'], CoAP.query_decode('?f.o&b-r')
45
- assert_equal ['f(o', 'b)r'], CoAP.query_decode('?f(o&b)r')
46
- assert_equal ['foo', 'b/r'], CoAP.query_decode('?foo&b/r')
47
- assert_equal ['foo', 'b&r'], CoAP.query_decode('?foo&b%26r')
48
- assert_equal ['føo', 'bär'], CoAP.query_decode('?f%C3%B8o&b%C3%A4r')
51
+ assert_equal [], CoRE::CoAP.query_decode("")
52
+ assert_equal [], CoRE::CoAP.query_decode("?")
53
+ assert_equal ["foo"], CoRE::CoAP.query_decode("?foo")
54
+ assert_equal ["foo", ""], CoRE::CoAP.query_decode("?foo&")
55
+ assert_equal ["foo", "bar"], CoRE::CoAP.query_decode("?foo&bar")
56
+ assert_equal ["f.o", "b-r"], CoRE::CoAP.query_decode("?f.o&b-r")
57
+ assert_equal ["f(o", "b)r"], CoRE::CoAP.query_decode("?f(o&b)r")
58
+ assert_equal ["foo", "b/r"], CoRE::CoAP.query_decode("?foo&b/r")
59
+ assert_equal ["foo", "b&r"], CoRE::CoAP.query_decode("?foo&b%26r")
60
+ assert_equal ["føo", "bär"], CoRE::CoAP.query_decode("?f%C3%B8o&b%C3%A4r")
49
61
  end
50
62
 
51
63
  def test_scheme_and_authority_encode
52
- assert_equal 'coap://foo.bar:4711', CoAP.scheme_and_authority_encode('foo.bar', 4711)
53
- assert_equal 'coap://foo.bar:4711', CoAP.scheme_and_authority_encode('foo.bar', '4711')
54
- assert_raise ArgumentError do
55
- CoAP.scheme_and_authority_encode('foo.bar', 'baz')
64
+ assert_equal "coap://foo.bar:4711", CoRE::CoAP.scheme_and_authority_encode("foo.bar", 4711)
65
+ assert_equal "coap://foo.bar:4711", CoRE::CoAP.scheme_and_authority_encode("foo.bar", "4711")
66
+ assert_raises ArgumentError do
67
+ CoRE::CoAP.scheme_and_authority_encode("foo.bar", "baz")
56
68
  end
57
- assert_equal 'coap://bar.baz', CoAP.scheme_and_authority_encode('bar.baz', 5683)
58
- assert_equal 'coap://bar.baz', CoAP.scheme_and_authority_encode('bar.baz', '5683')
69
+ assert_equal "coap://bar.baz", CoRE::CoAP.scheme_and_authority_encode("bar.baz", 5683)
70
+ assert_equal "coap://bar.baz", CoRE::CoAP.scheme_and_authority_encode("bar.baz", "5683")
59
71
  end
60
72
 
61
73
  def test_scheme_and_authority_decode
62
- assert_equal ['foo.bar', 4711, nil], CoAP.scheme_and_authority_decode('coap://foo.bar:4711')
63
- assert_equal ['foo.bar', 5683, nil], CoAP.scheme_and_authority_decode('coap://foo.bar')
64
- assert_equal ['foo:bar', 4711, nil], CoAP.scheme_and_authority_decode('coap://[foo:bar]:4711')
65
- assert_equal ['foo:bar', 5683, nil], CoAP.scheme_and_authority_decode('coap://%5Bfoo:bar%5D')
74
+ assert_equal [nil, "foo.bar", 4711], CoRE::CoAP.scheme_and_authority_decode("coap://foo.bar:4711")
75
+ assert_equal [nil, "foo.bar", 5683], CoRE::CoAP.scheme_and_authority_decode("coap://foo.bar")
76
+ assert_equal [nil, "foo:bar", 4711], CoRE::CoAP.scheme_and_authority_decode("coap://[foo:bar]:4711")
77
+ assert_equal [nil, "foo:bar", 5683], CoRE::CoAP.scheme_and_authority_decode("coap://%5Bfoo:bar%5D")
66
78
  end
67
79
 
68
80
  def test_coap_message
69
- input = "\x44\x02\x12\xA0abcd\x41A\x7B.well-known\x04core\x0D\x04rhabarbersaftglas\xFFfoobar".force_encoding('BINARY')
70
- output = CoAP.parse(input)
81
+ input = "\x44\x02\x12\xA0abcd\x41A\x7B.well-known\x04core\x0D\x04rhabarbersaftglas\xFFfoobar".force_encoding("BINARY")
82
+ Log.debug input.hexdump('input ')
83
+ output = CoRE::CoAP.parse(input)
84
+ Log.debug output
85
+ Log.debug "critical?: #{output.options.map { |k, v| [k, CoRE::CoAP.critical?(k)]}.inspect}"
71
86
  w = output.to_wire
87
+ Log.debug w.hexdump('output ')
72
88
  assert_equal input, w
73
89
  end
74
90
 
75
- # XXX TODO add token tests
91
+ # XXX TODO add token tests
76
92
 
77
93
  def test_fenceposting
78
- m = CoAP::Message.new(:con, :get, 4711, 'Hello', {})
79
- m.options = { max_age: 987_654_321, if_none_match: true }
94
+ m = CoRE::CoAP::Message.new(:con, :get, 4711, "Hello")
95
+ Log.debug m
96
+ m.options = { max_age: 987654321, if_none_match: true }
97
+ Log.debug m
80
98
  me = m.to_wire
81
- m2 = CoAP.parse(me)
82
- m.options = CoAP::DEFAULTING_OPTIONS.merge(m.options)
99
+ Log.debug me.inspect
100
+ m2 = CoRE::CoAP::parse(me)
101
+ Log.debug m2
102
+ m.options = CoRE::CoAP::DEFAULTING_OPTIONS.merge(m.options)
83
103
  assert_equal m2, m
84
104
  end
85
105
 
86
106
  def test_fenceposting2
87
- m = CoAP::Message.new(:con, :get, 4711, 'Hello', {})
88
- m.options = { 4711 => ['foo'], 256 => ['bar'] }
107
+ m = CoRE::CoAP::Message.new(:con, :get, 4711, "Hello")
108
+ Log.debug m
109
+ m.options = { 4711 => ["foo"], 256 => ["bar"] }
110
+ Log.debug m
89
111
  me = m.to_wire
90
- m2 = CoAP.parse(me)
91
- m.options = CoAP::DEFAULTING_OPTIONS.merge(m.options)
112
+ Log.debug me.inspect
113
+ m2 = CoRE::CoAP::parse(me)
114
+ Log.debug m2
115
+ m.options = CoRE::CoAP::DEFAULTING_OPTIONS.merge(m.options)
92
116
  assert_equal m2, m
93
117
  end
94
118
 
95
119
  def test_emptypayload
96
- m = CoAP::Message.new(:con, :get, 4711, '', {})
97
- m.options = { 4711 => ['foo'], 256 => ['bar'], 65_535 => ['abc' * 100] }
120
+ m = CoRE::CoAP::Message.new(:con, :get, 4711, "")
121
+ Log.debug m
122
+ m.options = { 4711 => ["foo"], 256 => ["bar"], 65535 => ["abc" * 100] }
123
+ Log.debug m
98
124
  me = m.to_wire
99
- m2 = CoAP.parse(me)
100
- m.options = CoAP::DEFAULTING_OPTIONS.merge(m.options)
125
+ Log.debug me.inspect
126
+ m2 = CoRE::CoAP::parse(me)
127
+ Log.debug m2
128
+ m.options = CoRE::CoAP::DEFAULTING_OPTIONS.merge(m.options)
101
129
  assert_equal m2, m
102
130
  end
103
131
 
104
132
  def test_option_numbers
105
- (0...65_536).each do |on|
106
- unless CoAP::OPTIONS[on] # those might have special semantics
107
- m = CoAP::Message.new(:con, :get, 4711, 'Hello', {})
108
- m.options = { on => [''] }
133
+ (0...65536).each do |on|
134
+ unless CoRE::CoAP::OPTIONS[on] # those might have special semantics
135
+ m = CoRE::CoAP::Message.new(:con, :get, 4711, "Hello")
136
+ m.options = { on => [""] }
109
137
  me = m.to_wire
110
- m2 = CoAP.parse(me)
111
- m.options = CoAP::DEFAULTING_OPTIONS.merge(m.options)
138
+ m2 = CoRE::CoAP::parse(me)
139
+ m.options = CoRE::CoAP::DEFAULTING_OPTIONS.merge(m.options)
112
140
  assert_equal m2, m
113
141
  end
114
142
  end
115
143
  end
116
144
 
117
145
  def test_option_lengths
118
- (0...1024).each do |ol|
119
- m = CoAP::Message.new(:con, :get, 4711, 'Hello', {})
120
- m.options = { 99 => ['x' * ol] }
146
+ (0...1035).each do |ol|
147
+ m = CoRE::CoAP::Message.new(:con, :get, 4711, "Hello")
148
+ m.options = { 99 => ["x"*ol] }
121
149
  me = m.to_wire
122
- m2 = CoAP.parse(me)
123
- m.options = CoAP::DEFAULTING_OPTIONS.merge(m.options)
150
+ m2 = CoRE::CoAP::parse(me)
151
+ m.options = CoRE::CoAP::DEFAULTING_OPTIONS.merge(m.options)
124
152
  assert_equal m2, m
125
153
  end
126
154
  end
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
8
  - Simon Frerichs
9
+ - henning mueller
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2014-07-10 00:00:00.000000000 Z
13
+ date: 2015-01-20 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: bundler
@@ -17,56 +18,131 @@ dependencies:
17
18
  requirements:
18
19
  - - "~>"
19
20
  - !ruby/object:Gem::Version
20
- version: '1.5'
21
+ version: '1.6'
21
22
  type: :development
22
23
  prerelease: false
23
24
  version_requirements: !ruby/object:Gem::Requirement
24
25
  requirements:
25
26
  - - "~>"
26
27
  - !ruby/object:Gem::Version
27
- version: '1.5'
28
+ version: '1.6'
29
+ - !ruby/object:Gem::Dependency
30
+ name: coveralls
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '0.7'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '0.7'
43
+ - !ruby/object:Gem::Dependency
44
+ name: faker
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '1.4'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '1.4'
57
+ - !ruby/object:Gem::Dependency
58
+ name: minitest
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '5.4'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '5.4'
28
71
  - !ruby/object:Gem::Dependency
29
72
  name: rake
30
73
  requirement: !ruby/object:Gem::Requirement
31
74
  requirements:
32
- - - ">="
75
+ - - "~>"
33
76
  - !ruby/object:Gem::Version
34
- version: '0'
77
+ version: '10.3'
35
78
  type: :development
36
79
  prerelease: false
37
80
  version_requirements: !ruby/object:Gem::Requirement
38
81
  requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '10.3'
85
+ - !ruby/object:Gem::Dependency
86
+ name: rspec
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '3.0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '3.0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: celluloid-io
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '0.16'
39
106
  - - ">="
40
107
  - !ruby/object:Gem::Version
41
- version: '0'
108
+ version: 0.16.1
109
+ type: :runtime
110
+ prerelease: false
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '0.16'
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: 0.16.1
42
119
  - !ruby/object:Gem::Dependency
43
120
  name: resolv-ipv6favor
44
121
  requirement: !ruby/object:Gem::Requirement
45
122
  requirements:
46
- - - ">="
123
+ - - "~>"
47
124
  - !ruby/object:Gem::Version
48
125
  version: '0'
49
126
  type: :runtime
50
127
  prerelease: false
51
128
  version_requirements: !ruby/object:Gem::Requirement
52
129
  requirements:
53
- - - ">="
130
+ - - "~>"
54
131
  - !ruby/object:Gem::Version
55
132
  version: '0'
56
133
  description: |-
57
- Ruby Gem for RFC 7252 - Constrained Application Protocol (CoAP)
58
- The Constrained Application Protocol (CoAP) is a specialized web
59
- transfer protocol for use with constrained nodes and constrained
60
- (e.g., low-power, lossy) networks. The nodes often have 8-bit
61
- microcontrollers with small amounts of ROM and RAM, while constrained
62
- networks such as 6LoWPAN often have high packet error rates and a
63
- typical throughput of 10s of kbit/s. The protocol is designed for
64
- machine-to-machine (M2M) applications such as smart energy and
65
- building automation
66
- email:
67
- - morpheus@morphhome.net
134
+ Pure Ruby implementation of RFC 7252 (Constrained Application
135
+ Protocol (CoAP)). The Constrained Application Protocol (CoAP) is a
136
+ specialized web transfer protocol for use with constrained nodes and
137
+ constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit
138
+ microcontrollers with small amounts of ROM and RAM, while constrained
139
+ networks such as IPv6 over Low-Power Wireless Personal Area Networks
140
+ (6LoWPANs) often have high packet error rates and a typical throughput of
141
+ 10s of kbit/s. The protocol is designed for machine-to-machine (M2M)
142
+ applications such as smart energy and building automation.
143
+ email: henning@orgizm.net
68
144
  executables:
69
- - client
145
+ - coap
70
146
  extensions: []
71
147
  extra_rdoc_files: []
72
148
  files:
@@ -76,22 +152,42 @@ files:
76
152
  - LICENSE
77
153
  - README.md
78
154
  - Rakefile
79
- - bin/client
155
+ - bin/coap
80
156
  - coap.gemspec
81
157
  - lib/coap.rb
82
- - lib/coap/block.rb
83
- - lib/coap/client.rb
84
- - lib/coap/coap.rb
85
- - lib/coap/message.rb
86
- - lib/coap/mysocket.rb
87
- - lib/coap/observer.rb
88
- - lib/coap/version.rb
89
- - lib/misc/hexdump.rb
90
- - test/coap_test_helper.rb
91
- - test/disabled_econotag_blck.rb
158
+ - lib/core.rb
159
+ - lib/core/coap.rb
160
+ - lib/core/coap/block.rb
161
+ - lib/core/coap/client.rb
162
+ - lib/core/coap/coap.rb
163
+ - lib/core/coap/coding.rb
164
+ - lib/core/coap/fsm.rb
165
+ - lib/core/coap/message.rb
166
+ - lib/core/coap/observer.rb
167
+ - lib/core/coap/options.rb
168
+ - lib/core/coap/registry.rb
169
+ - lib/core/coap/registry/content_formats.yml
170
+ - lib/core/coap/resolver.rb
171
+ - lib/core/coap/transmission.rb
172
+ - lib/core/coap/types.rb
173
+ - lib/core/coap/utility.rb
174
+ - lib/core/coap/version.rb
175
+ - lib/core/core_ext/socket.rb
176
+ - lib/core/hexdump.rb
177
+ - lib/core/link.rb
178
+ - lib/core/os.rb
179
+ - spec/block_spec.rb
180
+ - spec/client_spec.rb
181
+ - spec/fixtures/coap.me.link
182
+ - spec/link_spec.rb
183
+ - spec/registry_spec.rb
184
+ - spec/resolver_spec.rb
185
+ - spec/spec_helper.rb
186
+ - spec/transmission_spec.rb
187
+ - test/helper.rb
92
188
  - test/test_client.rb
93
189
  - test/test_message.rb
94
- homepage: https://github.com/SmallLars/coap
190
+ homepage: https://github.com/nning/coap
95
191
  licenses:
96
192
  - MIT
97
193
  metadata: {}
@@ -111,12 +207,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
207
  version: '0'
112
208
  requirements: []
113
209
  rubyforge_project:
114
- rubygems_version: 2.2.2
210
+ rubygems_version: 2.4.5
115
211
  signing_key:
116
212
  specification_version: 4
117
- summary: Ruby Gem for RFC 7252 - Constrained Application Protocol (CoAP)
213
+ summary: Pure Ruby implementation of RFC 7252 (Constrained Application Protocol (CoAP))
118
214
  test_files:
119
- - test/coap_test_helper.rb
120
- - test/disabled_econotag_blck.rb
215
+ - spec/block_spec.rb
216
+ - spec/client_spec.rb
217
+ - spec/fixtures/coap.me.link
218
+ - spec/link_spec.rb
219
+ - spec/registry_spec.rb
220
+ - spec/resolver_spec.rb
221
+ - spec/spec_helper.rb
222
+ - spec/transmission_spec.rb
223
+ - test/helper.rb
121
224
  - test/test_client.rb
122
225
  - test/test_message.rb