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