Как пройти аутентификацию при использовании Bugzilla Perl API в скрипте?

Работая с Bugzilla API, я Я написал быстрый Perl-скрипт для клонирования продукта Bugzilla (воссоздание всех компонентов в новом продукте). Bugzilla Perl API довольно легко использовать из командной строки. Я мог бы просто работать с базой данных напрямую, но мне нужно долгосрочное решение. Другим вариантом был веб-сервис, но я подумал, что на этот раз попробую напрямую использовать API.

Единственная проблема, с которой я сталкиваюсь, — это аутентификация в качестве моего пользователя-администратора Bz, чтобы я мог создавать новые компоненты. Глядя на файл Bugzilla.pm Bugzilla, я вижу, что они просто запускают login() из Bugzilla::Auth. объект. Я не уверен, как получить имя пользователя и пароль там. Я полагаю, я мог бы просто добавить скрипт в интерфейс администратора Bugzilla...

Может ли кто-нибудь из вас указать мне правильное направление?


person Allan Anderson    schedule 04.05.2010    source источник
comment
Приведенный выше URL-адрес Bugzilla API теперь выдает ошибку 404.   -  person jeremiah    schedule 24.05.2013
comment
Давайте обратимся к версии для разработчиков, хотя это может быть не совсем то, что кому-то нужно. bugzilla.org/docs/tip/en/html/api или на главной странице документации, bugzilla.org/docs.   -  person Allan Anderson    schedule 30.12.2014


Ответы (3)


О, я сегодня довольно невежественен, я сосредоточился на «веб-сервисах» и не понял, чего вы на самом деле хотели.

Если вы просто используете API для связи с базой данных (в отличие от манипулирования базой данных напрямую), вам действительно нужно аутентифицироваться как любой пользователь?

В исходном дереве 3.2 посмотрите, например, на merge-users.pl, который использует Bugzilla::User объекты. Не могли бы вы сделать то же самое с Bugzilla::Component?

Вы также должны посмотреть на sanitycheck.pl, который использует Bugzilla->set_user.

person David M    schedule 05.05.2010
comment
Спасибо; это очень полезно. Я просто использовал Bugzilla-›set_user() вместе с Bugzilla-›usage_mode(Bugzilla::Constants::USAGE_MODE_CMDLINE), что позволило моему сценарию скопировать все нужные мне компоненты. - person Allan Anderson; 05.05.2010

После версии 3.2 произошло несколько значительных обновлений возможностей веб-сервисов, можете ли вы обновить их?

По крайней мере, в версии 3.6 ознакомьтесь с contrib/bz_webservice_demo.pl, как использовать метод User.login.

http://www.bugzilla.org/docs/tip/en/html/api/Bugzilla/WebService/User.html

person David M    schedule 05.05.2010
comment
Обновление нетривиально из-за некоторых локальных настроек, но я хотел бы сделать это когда-нибудь. Как я смотрю на это, моя реальная проблема с использованием веб-сервисов заключается в том, что я не вижу никакого способа добавить новые продукты или компоненты. [1]: bugzilla.org/docs/ tip/en/html/api/Bugzilla/WebService/ - person Allan Anderson; 05.05.2010

Следующий фрагмент кода может ввести вопрос. Здесь мы также проверяем, что у пользователя есть правильные учетные данные «editcomponents».

my $user = new Bugzilla::User({ name => $login })
  || ThrowUserError('invalid_username', { name => $login });


# Authenticate using this user account.
Bugzilla->set_user($user);
$user->in_group('editcomponents')
      || ThrowUserError("auth_failure", {group  => "editcomponents",
                                         action => "add",
                                         object => "products"});
person LouPascalou    schedule 14.03.2012