Skip to content

Commit

Permalink
add new method to get extensions by event id, and open access to exte…
Browse files Browse the repository at this point in the history
…nsion setter
  • Loading branch information
frets1700 committed Mar 20, 2024
1 parent 31ce73b commit 7c73978
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 19 deletions.
63 changes: 52 additions & 11 deletions src/Calendar.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
use Microsoft\Graph\Generated\Users\Item\Events\Item\EventItemRequestBuilderDeleteRequestConfiguration;
use Microsoft\Graph\Generated\Users\Item\Events\Item\EventItemRequestBuilderGetQueryParameters;
use Microsoft\Graph\Generated\Users\Item\Events\Item\EventItemRequestBuilderPatchRequestConfiguration;
use Microsoft\Graph\Generated\Users\Item\Events\Item\Extensions\Item\ExtensionItemRequestBuilderGetRequestConfiguration;
use Microsoft\Graph\Generated\Users\Item\Events\Item\Extensions\ExtensionsRequestBuilderPostRequestConfiguration;
use Microsoft\Graph\Generated\Users\Item\Events\Item\Instances\InstancesRequestBuilderGetQueryParameters;
use Microsoft\Kiota\Abstractions\RequestAdapter;
Expand Down Expand Up @@ -346,26 +347,66 @@ public function delete(string $id, array $args = []): void
* @throws \Exception
*/
public function patchExtensionForEvent(string $id, OpenTypeExtension $extension, array $args = []): bool
{
try {
$headers = $args['headers'] ?? [];
$options = $args['options'] ?? [];
$requestConfiguration = new ExtensionsRequestBuilderPostRequestConfiguration($headers, $options);
$requestConfiguration = $this->generateRequestConfiguration(
$requestConfiguration,
$headers,
$options
);

$extension = $this->graphService
->client($args)
->me()
->events()
->byEventId($id)
->extensions()
->post($extension, $requestConfiguration)
->wait();

return $extension instanceof OpenTypeExtension;
} catch (\Exception $e) {
$this->convertToReadableError($e);
}
}

/**
* @param string $extensionId
* @param string $eventId
* @param ExtensionItemRequestBuilderGetRequestConfiguration|null $requestBuilder
* @param array<string, mixed> $args
* @return OpenTypeExtension|null
* @throws ReadError
*/
public function getExtensionBy(string $extensionId, string $eventId, ?ExtensionItemRequestBuilderGetRequestConfiguration $requestBuilder = null, array $args = []): ?OpenTypeExtension
{
$headers = $args['headers'] ?? [];
$options = $args['options'] ?? [];
$requestConfiguration = new ExtensionsRequestBuilderPostRequestConfiguration($headers, $options);
$requestBuilder ??= new ExtensionItemRequestBuilderGetRequestConfiguration();
$requestConfiguration = $this->generateRequestConfiguration(
$requestConfiguration,
$requestBuilder,
$headers,
$options
);

$extension = $this->graphService
->client($args)
->me()
->events()
->byEventId($id)
->extensions()
->post($extension, $requestConfiguration) // @phpstan-ignore-line
->wait();
try {
$extension = $this->graphService
->client($args)
->me()
->events()
->byEventId($eventId)
->extensions()
->byExtensionId($extensionId)
->get($requestConfiguration)
->wait();

return $extension instanceof OpenTypeExtension;
return $extension instanceof OpenTypeExtension ? $extension : null;
} catch (\Exception $e) {
$this->convertToReadableError($e);
}
}

/**
Expand Down
12 changes: 6 additions & 6 deletions src/Entities/Occurrence.php
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,12 @@ public function setSeriesMasterId(?string $seriesMasterId): void
$this->seriesMasterId = $seriesMasterId;
}

/** @param Extension[] $extensions */
public function setExtensions(array $extensions = []): void
{
$this->extensions = $extensions;
}

private function setEventType(?EventType $type): void
{
$this->eventType = $type;
Expand Down Expand Up @@ -202,12 +208,6 @@ protected function setDescription(?string $description): void
$this->description = $description;
}

/** @param Extension[] $extensions */
private function setExtensions(array $extensions = []): void
{
$this->extensions = $extensions;
}

private function setAllDay(bool $allDay): void
{
$this->allDay = $allDay;
Expand Down
2 changes: 1 addition & 1 deletion src/Entities/Reader.php
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ public function setCancelled(bool $cancelled): void
}

/** @param Extension[] $extensions */
protected function setExtensions(?array $extensions = []): ReaderEntityInterface
public function setExtensions(?array $extensions = []): ReaderEntityInterface
{
$this->extensions = $extensions;
return $this;
Expand Down
2 changes: 1 addition & 1 deletion src/RequestConfigurationTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ protected function getCalendarViewRequestConfiguration(CalendarViewParamsInterfa
* @param array<string, string> $headers
* @param RequestOptions[] | null $options
*/
private function generateRequestConfiguration(InstancesRequestBuilderGetRequestConfiguration | EventsRequestBuilderPostRequestConfiguration | EventItemRequestBuilderPatchRequestConfiguration | BatchRequestBuilderPostRequestConfiguration | EventItemRequestBuilderDeleteRequestConfiguration | ExtensionsRequestBuilderPostRequestConfiguration $configuration, array $headers = [], array $options = []): InstancesRequestBuilderGetRequestConfiguration | EventsRequestBuilderPostRequestConfiguration | EventItemRequestBuilderPatchRequestConfiguration | BatchRequestBuilderPostRequestConfiguration | EventItemRequestBuilderDeleteRequestConfiguration | ExtensionsRequestBuilderPostRequestConfiguration
private function generateRequestConfiguration(mixed $configuration, array $headers = [], array $options = []): mixed
{
$configuration->headers = array_merge(
$headers,
Expand Down
19 changes: 19 additions & 0 deletions tests/CalendarTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,25 @@ public function testPatchExtension()
$this->assertTrue($actual);
}

public function testGetExtensionBy()
{
$jsonBody = '{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users(\'foo_bar\')/events(\'abc==\')/extensions/$entity","@odata.type":"#microsoft.graph.openTypeExtension","id":"Microsoft.OutlookServices.OpenTypeExtension.symplicity.test","extensionName":"symplicity.test","id":"123","series_master":true}';

$stream = Utils::streamFor($jsonBody);

$mock = new MockHandler([
new Response(201, ['Content-Type' => 'application/json'], $stream),
]);

$container = [];
$client = self::getClientWithTransactionHandler($container, $mock);

$extension = $this->stub->getExtensionBy('symplicity.test', 'abc==', args: ['client' => $client]);
$this->assertInstanceOf(OpenTypeExtension::class, $extension);
$this->assertTrue($extension->getAdditionalData()['series_master']);
$this->assertSame('123', $extension->getId());
}

protected function getEvents(): array
{
return [
Expand Down

0 comments on commit 7c73978

Please sign in to comment.