glance-project/egroup-service

基于 e-groups 网络服务的抽象层

v2.0.0 2024-05-16 06:26 UTC

This package is auto-updated.

Last update: 2024-09-16 07:20:33 UTC


README

这是对 CERN e-groups 网络服务的一个抽象。

入门指南

官方文档可以在以下网址找到

用法

使用用户凭据创建 e-group 提供者。

$egroupProvider = EgroupProvider::createWithUserCredentials(
    $user         = getenv("USER"),
    $password     = getenv("PASSWORD"),
);

每个方法都返回一个 Response 对象。该对象有以下方法

  • transactionId() - 返回事务 id。
  • warnings() - 返回一个警告数组。默认为空。
  • egroup() - 返回一个 Egroup 对象(适用时)。默认为 null。

抛出的任何错误都将是一个 EgroupException 实例。错误消息是网络服务返回的消息。

EgroupProvider::findEgroupByName()

此方法接受一个字符串(e-group 名称)作为参数。

$response = $egroupProvider->findEgroupByName("lhcb-glance-admins");

echo($response->egroup()->name());

// Output:
// lhcb-glance-admins

EgroupProvider::synchronizeEgroup()

synchronizeEgroup 方法可以用来创建或更新 e-group。该方法接受一个 Egroup 对象作为参数。

创建 e-group

$egroup = Egroup::create(
    $name = "foo-bar",
    $topic = "LHCb",
    $owner = Owner::create(851203),
    $members = [
        Person::create(382894),
        StaticEgroup::create("lhcb-static-glance-admins")
        DynamicEgroup::create("lhcb-dynamic-glance-admins")
    ],
    $adminEgroup = "lhcb-glance-admins",
    $description = "This was created as a test",
    $type = Type::staticEgroup(),
    $usage = Usage::securityMailing(),
    $privacy = Privacy::members(),
    $selfSubscription = SelfSubscription::members(),
    $emailProperties = EmailProperties::create(
        MailPostingRestrictions::create(
            $postingRestrictions = PostingRestrictions::ownerAdminsAndOthers(),
            $otherRecipientsAllowedToPost = [
                Person::create(840720)
            ],
        ),
        $senderAuthenticationEnabled = false,
        $whoReceivesDeliveryErrors = WhoReceivesDeliveryErrors::sender(),
        $maxMailSize = MaxMailSize::tenMb(),
        $archiveProperties = ArchiveProperties::active()
    );
    $egroupsWithPrivileges = [
        EgroupWithPrivileges::createWithAdminPrivilegeFromString("lhcb-fence-support"),
    ],
    $selfSubscriptionEgroups = [
        SelfSubscriptionEgroup::createWithApprovalNotNeededFromId(10215717),
    ]
);

$response = $egroupProvider->synchronizeEgroup($egroup);

echo($response->egroup()->name());

// Output:
// foo-bar

更新 e-group

$response = $egroupProvider->findEgroupByName("foo-bar");

$egroup = $response->egroup();

$egroup->updateMembers([
    Person::create(851203)
]);

$response = $egroupProvider->synchronizeEgroup($egroup);

echo(count($response->egroup()->members()));
echo($response->egroup()->members()[0]->personId());

// Output:
// 1
// 851203

EgroupProvider::updateEmailProperties()

该方法接受一个 Egroup 对象作为参数。

$response = $egroupProvider->findEgroupByName("foo-bar");

$egroup = $response->egroup();

$egroup->emailProperties()->updateMaxMailSize(MaxMailSize::fiveMb());

$response = $egroupProvider->updateEmailProperties($egroup);

echo($response->egroup()->emailProperties()->maxMailSize()->toString());

// Output:
// 5

EgroupProvider::addEgroupMembers()

该方法接受一个字符串(e-group 名称),一个数组(此数组可以包含 PersonStaticEgroupDynamicEgroup 对象)和 overwriteMembers(布尔值)作为参数。如果 overwriteMembers 设置为 true,则 e-group 的成员将被参数中传递的成员覆盖。如果 overwriteMembers 设置为 false,则传递的成员将被添加到 e-group 中。默认为 false

$members = [
    Person::create(382894),
];

$response = $egroupProvider->addEgroupMembers("foo-bar", $members, true);

echo(count($response->egroup()->members()));
echo($response->egroup()->members()[0]->personId());

// Output:
// 1
// 382894

EgroupProvider::removeEgroupMembers()

该方法接受一个字符串(e-group 名称)和一个数组作为参数(此数组可以包含 PersonStaticEgroupDynamicEgroup 对象)。

$members = [
    Person::create(382894),
];

$response = $egroupProvider->removeEgroupMembers("foo-bar", $members);

echo(count($response->egroup()->members()));

// Output:
// 0

EgroupProvider::delete()

该方法接受一个字符串(e-group 名称)作为参数。

$response = $egroupProvider->delete("foo-bar");

echo($response->egroup()));

// Output:
// Null