glance-project / egroup-service
基于 e-groups 网络服务的抽象层
v2.0.0
2024-05-16 06:26 UTC
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.0
- psr/http-message: ^1.0
- vlucas/phpdotenv: ^5.5
Requires (Dev)
- phpunit/phpunit: ^11.1
This package is auto-updated.
Last update: 2024-09-16 07:20:33 UTC
README
这是对 CERN e-groups 网络服务的一个抽象。
入门指南
官方文档可以在以下网址找到
- 文档: https://aisdocs.web.cern.ch/display/ED/6. Web Service
- WSDL: https://foundservices.cern.ch/ws/egroups/v1/EgroupsWebService/EgroupsWebService.wsdl
- 模式: https://foundservices.cern.ch/ws/egroups/v1/EgroupsWebService/EgroupsServicesSchema.xsd
用法
使用用户凭据创建 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 名称),一个数组(此数组可以包含 Person、StaticEgroup 和 DynamicEgroup 对象)和 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 名称)和一个数组作为参数(此数组可以包含 Person、StaticEgroup 和 DynamicEgroup 对象)。
$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