lom 0.10.0 → 0.11.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6d37a56b9ef6c9dad3ae785439cb49560c641304fdb12f3d3d070541e8bf27b9
4
- data.tar.gz: cd71e20fd089ab2b489bcdb2f857f508b8c283c0d4f2de875b81cfc722fab05b
3
+ metadata.gz: b3a1b6204446324ec92c63443efc8c9578db7628aa4544f42c435a1605ec05aa
4
+ data.tar.gz: 7fa61741e1c85db00a5ab168d2814afcc0a21ba0ba2a914649f7e8ef6f6df815
5
5
  SHA512:
6
- metadata.gz: 956540737ca9944e790aeead959ef079f61f8d9469b22867969858c993bd97897f742fd9ca43ef3b99110e76e81902474f88fd6a95e0bd216fee0b620ca5377e
7
- data.tar.gz: 7340668aaeef6a7821e88d95bf5da772aedfcb4a3dce9ab89d858c08c2b4be9165e127f0c5871decce112edc06337ba0c7e611601d12b56a6cbfe5b52e490202
6
+ metadata.gz: 468294c000324a795a2a3cb67de0436c492e4d08caffea7d14bbc47486b81640fb2c352df233771aefa1cc136e71a1dbcc98efe24c49c7b79d6952f824e1787d
7
+ data.tar.gz: 4add52468b4bb244a215dfa2ac32244417f3b282d615c19f2dcc30cc97601bd9c678180047da6de881bd9952f6423f3d5ac743d0d575dd80079f9d6ddb3e5432
@@ -10,25 +10,25 @@ module Converters
10
10
  #
11
11
  # Integer
12
12
  #
13
-
13
+
14
14
  refine Integer do
15
15
  def to_ldap
16
16
  self.to_s
17
17
  end
18
18
  end
19
-
19
+
20
20
  refine Integer.singleton_class do
21
21
  def from_ldap(v)
22
22
  Integer(v)
23
23
  end
24
24
  end
25
25
 
26
-
26
+
27
27
 
28
28
  #
29
29
  # String
30
30
  #
31
-
31
+
32
32
  refine String do
33
33
  def to_ldap
34
34
  self
@@ -41,15 +41,15 @@ module Converters
41
41
  end
42
42
  end
43
43
 
44
-
44
+
45
45
 
46
46
  #
47
47
  # Date / Time
48
48
  #
49
-
49
+
50
50
  refine Date do
51
51
  def to_ldap
52
- self.to_time.to_ldap
52
+ self.strftime("%Y%m%d%H%M%SZ")
53
53
  end
54
54
  end
55
55
 
@@ -74,12 +74,12 @@ module Converters
74
74
  end
75
75
  end
76
76
 
77
-
77
+
78
78
 
79
79
  #
80
80
  # Boolean
81
81
  #
82
-
82
+
83
83
  refine TrueClass do
84
84
  def to_ldap
85
85
  'TRUE'
@@ -96,20 +96,20 @@ module Converters
96
96
  def to_ldap
97
97
  'FALSE'
98
98
  end
99
- end
99
+ end
100
+
100
101
 
101
102
 
102
-
103
103
  #
104
104
  # Array / Set
105
105
  #
106
-
106
+
107
107
  refine Set do
108
108
  def to_ldap
109
109
  self.to_a.to_ldap
110
110
  end
111
111
  end
112
-
112
+
113
113
  refine Array do
114
114
  def to_ldap
115
115
  self.map { |val|
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
+ require 'uri'
3
4
  require 'net/ldap'
4
5
  require 'net/ldap/dn'
5
6
 
data/lib/lom/mapper.rb CHANGED
@@ -56,6 +56,27 @@ module InstanceMethods
56
56
  lh.add(dn: dn, attributes: attrs)
57
57
  }
58
58
  end
59
+
60
+
61
+ # Delete object from ldap
62
+ #
63
+ # @return [true, false]
64
+ #
65
+ def delete!
66
+ model = self.class
67
+ attrs = instance_exec(self, &model.ldap_to)
68
+ .transform_values {|v|
69
+ # Don't use Array(), not what you think on
70
+ # some classes such as Time
71
+ v = [ ] if v.nil?
72
+ v = [ v ] unless v.is_a?(Array)
73
+ v.to_ldap
74
+ }
75
+ id, _ = Array(attrs[model.ldap_prefix])
76
+ raise MappingError, 'prefix for dn has multiple values' if _
77
+
78
+ model.delete!(id)
79
+ end
59
80
  end
60
81
  end
61
82
 
@@ -296,8 +317,16 @@ module Mapper
296
317
  def list(&rawfilter)
297
318
  each(:id, rawfilter: rawfilter).to_a
298
319
  end
299
-
300
- def get(name)
320
+
321
+ # Fetch the requested entry.
322
+ #
323
+ # @param param [String] entry name
324
+ #
325
+ # @raise [LOM::EntryNotFound] if entry not found
326
+ #
327
+ # @return [Object]
328
+ #
329
+ def fetch(name)
301
330
  dn = ldap_dn_from_id(name)
302
331
  attrs = _ldap_attrs
303
332
  entry = lh.get(:dn => dn, :attributes => attrs)
@@ -310,8 +339,33 @@ module Mapper
310
339
  lh.delete(:dn => dn)
311
340
  end
312
341
 
342
+ # Get the requested entry.
343
+ # Same as #fetch but return nil if not found
344
+ #
345
+ # @param param [String] entry name
346
+ #
347
+ # @return [nil] entry not found
348
+ # @return [Object]
349
+ #
350
+ def get(name)
351
+ fetch(name)
352
+ rescue LOM::EntryNotFound
353
+ nil
354
+ end
355
+
313
356
  alias [] get
314
357
 
358
+ # Test existence of entry
359
+ #
360
+ # @param param [String] entry name
361
+ #
362
+ # @return [Boolean]
363
+ #
364
+ def exists?(name)
365
+ dn = ldap_dn_from_id(name)
366
+ lh.get(:dn => dn, :return_result => false)
367
+ end
368
+
315
369
  private
316
370
 
317
371
  def _ldap_branch
data/lib/lom/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class LOM
2
- VERSION = '0.10.0'
2
+ VERSION = '0.11.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stéphane D'Alu
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2021-06-11 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: net-ldap
@@ -79,7 +78,6 @@ homepage: https://github.com/sdalu/lom
79
78
  licenses:
80
79
  - MIT
81
80
  metadata: {}
82
- post_install_message:
83
81
  rdoc_options: []
84
82
  require_paths:
85
83
  - lib
@@ -94,8 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
92
  - !ruby/object:Gem::Version
95
93
  version: '0'
96
94
  requirements: []
97
- rubygems_version: 3.0.8
98
- signing_key:
95
+ rubygems_version: 3.6.9
99
96
  specification_version: 4
100
97
  summary: LDAP Object Mapper
101
98
  test_files: []