Package Data | |
---|---|
Maintainer Username: | appkr |
Maintainer Contact: | juwonkim@me.com (appkr) |
Package Create Date: | 2017-06-02 |
Package Last Update: | 2017-07-04 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-21 03:01:40 |
Package Statistics | |
---|---|
Total Downloads: | 23 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 2 |
Total Watchers: | 3 |
Total Forks: | 1 |
Total Open Issues: | 0 |
Manipulates application(Laravel/Lumen) server's time arbitrarily for a given minutes.
CAVEAT
USE THIS ONLY FOR TEST PURPOSE. DO NOT MAKE THIS AVAILABLE IN PUBLICLY ACCESSIBLE SERVICES.
- Provided apis are not protected by authz.
- While setting is alive, it affects all time related functions of the application. e.g.
created_at
written in the DB tables.
Pull the library to your project.
composer install appkr/timemachine
Append service provider in the providers array.
<?php // config/app.php (Laravel)
return [
'providers' => [
Appkr\Timemachine\TimemachineServiceProvider::class,
],
];
// boostrap/app.php (Lumen)
$app->register(Appkr\Timemachine\TimemachineServiceProvider::class);
Optionally publish config.
php artisan vendor:publish --provider="Appkr\Timemachine\TimemachineServiceProvider"
There are three APIs. For conveniences, a Postman collection is provided.
Returns time diff from current server time when target_server_time
parameter is given. Or print current server time when nothing is given.
GET /timemachine
Accept: application/json
Content-Type: application/json
field|type|required|description
---|---|---|---
target_server_time
|date(Y-m-d H:i:s)
|optional|e.g. 2017-06-01 12:05:00
HTTP/1.1 200 OK
Content-Type: application/json
Date: Thu, 01 Jun 2017 12:00:00 +0900
{
"current_server_time": "2017-06-01T12:00:00+0900",
"target_server_time": "2017-06-01T12:05:00+0900",
"add_days": 0,
"add_minutes": 5,
"sub_days": null,
"sub_minutes": null
}
Manipulates server's time for the given ttl.
PUT /timemachine
Accept: application/json
Content-Type: application/json
{
"add_minutes": 5,
"ttl": 5
}
field|type|required|description
---|---|---|---
add_days
|int
|optional(max:365)|Number of days to add to current time
sub_days
|int
|optional(max:365)|Number of days to subtract from current time
add_minutes
|int
|optional(max:1440)|Number of minutes to add to current time
sub_minutes
|int
|optional(max:1440)|Number of minutes to subtract from current time
ttl
|int
|optional(default:5, max:60)|Number of minutes for settings to live
HTTP/1.1 200 OK
Content-Type: application/json
Date: Thu, 01 Jun 2017 12:00:00 +0900
{
"current_server_time": "2017-06-01T12:00:00+0900",
"message": "Success. The settings will be effective from next request on for 5 minutes."
}
Removes time setting and restore back to the machine time.
DELETE /timemachine
Accept: application/json
Content-Type: application/json
HTTP/1.1 200 OK
Content-Type: application/json
Date: Thu, 01 Jun 2017 12:00:00 +0900
{
"current_server_time": "2017-06-01T12:00:00+0900",
"message": "Success. Settings removed."
}
This library is a by-product of a company project. Thanks MeshKorea.
Open source version was created using IntelliJ IDE sponsored by JetBrains.
In Nginx, Date
header can be settable from application side. So the following was possible:
<?php
header('Date: ' . Carbon\Carbon::now()->addMinutes(5)->toRfc2822String());
echo $httpResponseBody;
While in Apache, it is not doable. https://laracasts.com/discuss/channels/servers/how-can-i-override-http-date-response-header-under-apache24