jakubboucek / openwhisk-runtime
OpenWhisk runtime tools for PHP, eg. with DigitalOcean Serverless Functions
Package info
github.com/jakubboucek/php-openwhisk-runtime
pkg:composer/jakubboucek/openwhisk-runtime
v0.1.0
2023-09-09 09:53 UTC
Requires
- php: ^8.2
- psr/http-message: ^1.0 || ^2.0
Requires (Dev)
- phpstan/phpstan: 1.10.33
This package is auto-updated.
Last update: 2026-03-17 13:37:03 UTC
README
This library provide tools for more clean handling responses for PHP apps running inside OpenWhisk runtime.
In raw OpenWhisk action you need to return clearly defined Array - that's missing type control and it's liitle dirty.
This library provides tools to build responses for most of usually cases (HTTP, HTML, JSON responses, etc.).
Install
composer require jakubboucek/openwhisk-runtime
Usage
Sending OpenWhisk runtime's response without this library
<?php
function main(array $args) : array
{
$name = $args['name'] ?? 'stranger';
$greeting = "Hello $name!";
return ['body' => $greeting, 'headers' => ['Content-Type' => 'text/html; charset=utf-8']];
}
Raw Response (just only for back compatibility with OpenWhisk's raw)
<?php
use JakubBoucek\OpenWhisk\Runtime\Response;
function main(array $args) : array
{
$name = $args['name'] ?? 'stranger';
$greeting = "Hello $name!";
return new Response\RawResponse(['body' => $greeting, 'headers' => ['Content-Type' => 'text/html; charset=utf-8']]);
}
Raw JSON Response (just only for back compatibility with OpenWhisk's raw)
<?php
use JakubBoucek\OpenWhisk\Runtime\Response;
function main(array $args) : array
{
$name = $args['name'] ?? 'stranger';
$greeting = "Hello $name!";
return new Response\RawJsonResponse(['message' => $greeting]);
}
HTTP Response
<?php
use JakubBoucek\OpenWhisk\Runtime\Response;
function main(array $args) : array
{
if (!isset($args['name'])) {
return (new Response\HttpResponse("Error: Missing required field 'name'."))
->setStatusCode(400)
->setContentType(Response\HttpHeader::PlainContentType);
}
$greeting = "Hello {$args['name']}!";
return (new Response\HttpResponse($greeting))
->setContentType(Response\HttpHeader::PlainContentType);
}
HTML Response
<?php
use JakubBoucek\OpenWhisk\Runtime\Response;
function main(array $args) : array
{
$name = $args['name'] ?? 'stranger';
$greeting = sprintf('Hello <strong>%s</strong>!', htmlspecialchars($name));
return new Response\HtmlResponse($greeting);
}
JSON Response
<?php
use JakubBoucek\OpenWhisk\Runtime\Response;
function main(array $args) : array
{
if (!isset($args['name'])) {
return (new Response\JsonResponse(['error' =>"Error: Missing required field 'name'."))
->setStatusCode(400);
}
$greeting = "Hello {$args['name']}!";
return new Response\JsonResponse(['message' => $greeting]);
}
Catching standard Output Buffer Response
<?php
use JakubBoucek\OpenWhisk\Runtime\Response;
use JakubBoucek\OpenWhisk\Runtime\Source;
function main(array $args) : array
{
$response = new Response\DynamicResponse(new Source\OutputBuffer());
echo 'Dumping $args variable:' . "\n";
var_dump($args);
return $response;
}