lib-dhcp 0.2.4 → 0.2.5

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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ffe82d84dae72c2b9d49014d81d49a095c2e259ea294d9259d9f5580981382b
4
- data.tar.gz: '058fb612148cce29c0753ac7340a45c0d2a34fd7031c474f9854b49ce2def7ac'
3
+ metadata.gz: b0d4ea6b825ace1374de09fc3122931fcfbb953b97997a97e9e32a3d990a325d
4
+ data.tar.gz: 45a0e45100f0af8704ba1c8b60211faae6ef257e1741d385a1e7128277003b4a
5
5
  SHA512:
6
- metadata.gz: 8a4f90d0b532df2c5de523e94e588082073c5347699504839ed918a4f4824d6bc6ffbcf0c3384e211593b2cf4337f1a7e6fe5ee8302a45a9f32a1c0119f3a365
7
- data.tar.gz: 49896f14cf677a0258825d1c68bebb10f2c3b69ba856dfc153d6abe9501f6c898f58e3366e16a6ba757cd4849124ec9581cf208d4a8909b32b442291c25e0c90
6
+ metadata.gz: 139d298457dda5815cefaa97ab7c79880a6e83d8f5c8c5512ec9daaf5c453be2809d9c2b93374b7bf887ecb51fb8ac4284aa2eaef3ceca19d89cfee6b30f673f
7
+ data.tar.gz: 1bd83b155964d62d34573d10d5751a0cf5dfb3dc93b1a9e530c8ff0850a2620db6a92a40ce96382fbef20e64ac6496518c2b75394dfa0e744950224d068f6bac
@@ -59,8 +59,10 @@ module Lib
59
59
  end
60
60
 
61
61
  def self.from_json(json)
62
- json = json.is_a?(Hash) ? json : JSON.parse(json)
63
- self.new(json.transform_keys(&:to_sym)[:oid], json.transform_keys(&:to_sym)[:value])
62
+ json = json.is_a?(Hash) ? JSON.parse(json.to_json, symbolize_names: true) : JSON.parse(json, symbolize_names: true)
63
+ Lib::DHCP.const_get("Option#{json.transform_keys(&:to_sym)[:oid].to_i}").new(
64
+ json.transform_keys(&:to_sym)[:value]
65
+ )
64
66
  end
65
67
 
66
68
  def self.unpack(packet)
@@ -17,16 +17,21 @@ module Lib
17
17
  end
18
18
 
19
19
  def initialize(*sub_option)
20
+ sub_option = sub_option.first if sub_option.first.is_a?(Array) && sub_option.first.first.is_a?(Hash)
20
21
  oid = self.class.name.split('::').last.sub(/Option/, '').to_i
21
22
  sub_options = []
22
23
  sub_option.each do |sub|
23
- if sub.is_a? Lib::DHCP::SubOption
24
- opt = sub
25
- elsif sub.is_a? Array
24
+ case sub
25
+ when Array
26
26
  opt = Lib::DHCP::SubOption.new(sub[0], sub[1])
27
+ when Lib::DHCP::SubOption
28
+ opt = sub
29
+ when Hash
30
+ opt = Lib::DHCP::SubOption.new(sub[:oid], sub[:value])
27
31
  else
28
32
  raise ArgumentError, 'Unknown SubOption parameter type'
29
33
  end
34
+
30
35
  sub_options << opt
31
36
  define_singleton_method("option#{opt.oid.to_i}".to_sym) { opt }
32
37
  #define_singleton_method(:option1) {opt}
@@ -79,11 +79,14 @@ module Lib
79
79
  dhcp
80
80
  end
81
81
 
82
- # def self.from_json(json)
83
- # #json = json.is_a?(Hash) ? json : JSON.parse(json)
84
- # super
85
- # #self.options = json['options']
86
- # end
82
+ def self.from_json(json)
83
+ json = json.is_a?(Hash) ? json : JSON.parse(json, symbolize_names: true)
84
+ message = super
85
+ json[:options].each do |option|
86
+ message.options.add Lib::DHCP::Option.from_json(option.to_json)
87
+ end
88
+ message
89
+ end
87
90
 
88
91
  def pack
89
92
  # TODO Max Message Size support
@@ -1,5 +1,5 @@
1
1
  module Lib
2
2
  module DHCP
3
- VERSION = '0.2.4'
3
+ VERSION = '0.2.5'
4
4
  end
5
5
  end
data/lib-dhcp.gemspec CHANGED
@@ -26,6 +26,6 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency 'rake'
27
27
  spec.add_development_dependency 'minitest'
28
28
 
29
- spec.add_dependency 'lib-bootp', '~> 0.2.5'
30
- spec.add_dependency 'net-address', '~> 0.2.2'
29
+ spec.add_dependency 'lib-bootp', '~> 0.2.6'
30
+ spec.add_dependency 'net-address', '~> 0.2.3'
31
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lib-dhcp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Wojcieszonek
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-02-20 00:00:00.000000000 Z
11
+ date: 2025-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,28 +58,28 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.2.5
61
+ version: 0.2.6
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.2.5
68
+ version: 0.2.6
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: net-address
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.2.2
75
+ version: 0.2.3
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.2.2
82
+ version: 0.2.3
83
83
  description: Set of classes to low level handle the BOOTP protocol.
84
84
  email:
85
85
  - piotr@wojcieszonek.pl