Skip to content

Commit 3a63b43

Browse files
committed
wip
1 parent 19875fd commit 3a63b43

File tree

4 files changed

+37
-9
lines changed

4 files changed

+37
-9
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,13 @@ use Meema\CloudFront\Facades\CloudFront;
2121

2222
// run any of the following CloudFront methods:
2323
$client = CloudFront::getClient(); // exposes the AWS CloudFront client
24-
$result = CloudFront::invalidate(array $items, int $quantity = 1, string $distributionId = null);
24+
25+
$items = ['/some-path.jpg', '/another/path.png'];
26+
$result = CloudFront::invalidate($items, string $distributionId = null);
27+
28+
// invalidates everything, which is the equivalent to a item path of `/*`.
29+
$result = CloudFront::reset();
30+
2531
$message = CloudFront::getInvalidation(string $invalidationId, string $distributionId = null);
2632
$messages = CloudFront::listInvalidations(string $distributionId = null)
2733
```

src/CloudFront.php

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,16 @@ public function getClient(): CloudFrontClient
4545
/**
4646
* Bust an item/s in CloudFront's cache.
4747
*
48-
* @param array $items
49-
* @param int $quantity
48+
* @param array|string $items
5049
* @param string|null $distributionId
5150
* @return \Aws\Result
5251
*/
53-
public function invalidate(array $items, int $quantity = 1, string $distributionId = null)
52+
public function invalidate($items, string $distributionId = null)
5453
{
54+
if (is_string($items)) {
55+
$items[] = $items;
56+
}
57+
5558
return $this->client->createInvalidation([
5659
'DistributionId' => $distributionId ?? config('cloudfront.distribution_id'),
5760
'InvalidationBatch' => [
@@ -60,12 +63,23 @@ public function invalidate(array $items, int $quantity = 1, string $distribution
6063
'CallerReference' => microtime(true),
6164
'Paths' => [
6265
'Items' => $items,
63-
'Quantity' => $quantity,
66+
'Quantity' => count($items),
6467
],
6568
],
6669
]);
6770
}
6871

72+
/**
73+
* Remove every item out of your CloudFront distribution.
74+
*
75+
* @param string|null $distributionId
76+
* @return \Aws\Result
77+
*/
78+
public function reset(string $distributionId = null)
79+
{
80+
return $this->invalidate('/*', $distributionId ?? config('cloudfront.distribution_id'));
81+
}
82+
6983
/**
7084
* Get a cache "invalidation".
7185
*

src/Contracts/CloudFront.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,19 @@ interface CloudFront
77
/**
88
* Delete items in your CloudFront cache .
99
*
10-
* @param array $items
11-
* @param int $quantity
10+
* @param array|string $items
1211
* @param string|null $distributionId
1312
* @return \Aws\Result
1413
*/
15-
public function invalidate(array $items, int $quantity = 1, string $distributionId = null);
14+
public function invalidate($items, string $distributionId = null);
15+
16+
/**
17+
* Delete everything in your CloudFront cache .
18+
*
19+
* @param string|null $distributionId
20+
* @return \Aws\Result
21+
*/
22+
public function reset(string $distributionId = null);
1623

1724
/**
1825
* Delete items in your CloudFront cache .

src/Facades/CloudFront.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
/**
88
* @method static \Aws\CloudFront\CloudFrontClient getClient()
9-
* @method static \Aws\Result invalidate(array $items, int $quantity = 1, string $distributionId = null)
9+
* @method static \Aws\Result invalidate(array|string $items, string $distributionId = null)
10+
* @method static \Aws\Result reset(string $distributionId = null)
1011
* @method static string getInvalidation(string $invalidationId, string $distributionId = null)
1112
* @method static array listInvalidations(string $distributionId = null)
1213
*/

0 commit comments

Comments
 (0)