coap 0.0.16 → 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.
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