Разобрать строку DN LDAP в пары ключ-значение в ruby - PullRequest
0 голосов
/ 11 мая 2018

У меня есть такая строка DN как часть результата запроса:

uid=xyz.abc,ou=Users,o=abc,dc=org,dc=com

Я не могу получить их как отдельные части через запрос, потому что строка возвращает вложенное значение для атрибута в запросе. И, похоже, библиотека LDAP для Ruby не имеет возможности парсинга строки DN или инициализации экземпляра Net::LDAP::DN из строки.

Я мог бы использовать .split(',') и .split('=') для синтаксического анализа строки в пары значений ключа, но это не обеспечивало бы экранирование, как описано в исходном коде метода each_pair .

Есть ли способ использовать логику escape в методе each_pair библиотеки Ruby LDAP для анализа строки DN? Или есть простой альтернативный способ реализации логики escape для DN?

Ответы [ 2 ]

0 голосов
/ 08 августа 2019

Вот полное решение:

require 'net/ldap/dn'
dn = Net::LDAP::DN.new('uid=xyz.abc,ou=Users,o=abc,dc=org,dc=com')
dn.enum_for(:each_pair).map { |key, value| [key, value] }.to_h
0 голосов
/ 11 мая 2018

Вы должны быть в состоянии сделать что-то вроде:

dn_string.each_pair.to_a.to_h

чтобы получить массив хэшей, например:

[
  { 'uid' => 'xyz' },
  { 'dc' => 'org' },
  { 'dc' => 'com' }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...