Add initial support for PHP7 (#97)
* Add initial support for PHP7 * Update PHP env with now an PSR3 logger (Monolog). Now you can also create a handler function with PSR7 Http message and PSR3 logger in parameter. * Add examples for PHP7 environement * For development you can create a function in this path /app/userfuncdev.php it will be loaded * Switch to alpine base image * handler now receive an array with request, response and logger object
This commit is contained in:
committed by
Soam Vasani
parent
c353e7f230
commit
2725da6b1b
@@ -2,3 +2,4 @@
|
|||||||
|
|
||||||
# Pycharm IDE
|
# Pycharm IDE
|
||||||
.idea
|
.idea
|
||||||
|
environments/php7/vendor/
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
FROM php:7.1-alpine
|
||||||
|
|
||||||
|
ENV PATH="/root/.composer/vendor/bin:${PATH}" \
|
||||||
|
COMPOSER_ALLOW_SUPERUSER=1
|
||||||
|
|
||||||
|
RUN echo '#!/bin/sh' > /usr/local/bin/apk-install \
|
||||||
|
&& echo 'apk add --update "$@" && rm -rf /var/cache/apk/*' >> /usr/local/bin/apk-install \
|
||||||
|
&& chmod +x /usr/local/bin/apk-install
|
||||||
|
|
||||||
|
RUN echo 'http://dl-4.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories \
|
||||||
|
&& apk update \
|
||||||
|
&& apk-install \
|
||||||
|
git \
|
||||||
|
curl \
|
||||||
|
curl-dev \
|
||||||
|
libcurl \
|
||||||
|
zlib-dev \
|
||||||
|
freetype-dev \
|
||||||
|
jpeg-dev \
|
||||||
|
libjpeg-turbo-dev \
|
||||||
|
postgresql-dev \
|
||||||
|
libmcrypt-dev \
|
||||||
|
libpng-dev \
|
||||||
|
icu-dev \
|
||||||
|
gettext-dev \
|
||||||
|
vim \
|
||||||
|
libxml2-dev \
|
||||||
|
freetype-dev \
|
||||||
|
unzip \
|
||||||
|
libc6-compat \
|
||||||
|
openssl \
|
||||||
|
gcc \
|
||||||
|
autoconf
|
||||||
|
|
||||||
|
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
|
||||||
|
|
||||||
|
# Install useful extensions
|
||||||
|
RUN docker-php-ext-install \
|
||||||
|
opcache \
|
||||||
|
bcmath \
|
||||||
|
ctype \
|
||||||
|
curl \
|
||||||
|
dom \
|
||||||
|
iconv \
|
||||||
|
fileinfo \
|
||||||
|
gd \
|
||||||
|
gettext \
|
||||||
|
intl \
|
||||||
|
json \
|
||||||
|
mcrypt \
|
||||||
|
mysqli \
|
||||||
|
pgsql \
|
||||||
|
pcntl \
|
||||||
|
pdo \
|
||||||
|
ftp \
|
||||||
|
pdo_mysql \
|
||||||
|
pdo_pgsql \
|
||||||
|
phar \
|
||||||
|
simplexml \
|
||||||
|
xmlrpc \
|
||||||
|
zip
|
||||||
|
|
||||||
|
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
||||||
|
|
||||||
|
COPY . /app
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN composer install
|
||||||
|
|
||||||
|
EXPOSE 8888
|
||||||
|
|
||||||
|
ENTRYPOINT ["php"]
|
||||||
|
CMD ["-S","0.0.0.0:8888","index.php"]
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
# Fission: PHP Environment
|
||||||
|
|
||||||
|
This is the PHP environment for Fission.
|
||||||
|
|
||||||
|
It's a Docker image containing a PHP 7.1 runtime. This image use php:7.1-cli base image with the built-in PHP server
|
||||||
|
|
||||||
|
This environment didn't force you to use class or create a main function.
|
||||||
|
|
||||||
|
A few common extensions are included :
|
||||||
|
- curl
|
||||||
|
- gd
|
||||||
|
- json
|
||||||
|
- mcrypt
|
||||||
|
- PDO (pdo_mysql, pdo_pgsql, pdo_sqlite)
|
||||||
|
- OPcache
|
||||||
|
- ftp
|
||||||
|
- iconv
|
||||||
|
- phar
|
||||||
|
- mysqli
|
||||||
|
- pgsql
|
||||||
|
- SimpleXML
|
||||||
|
- xmlrpc
|
||||||
|
- zip
|
||||||
|
|
||||||
|
## Customizing this image
|
||||||
|
|
||||||
|
To add other extensions or packages(composer.json) you need to edit the Dockerfile and rebuild this image (instructions below).
|
||||||
|
|
||||||
|
## Rebuilding and pushing the image
|
||||||
|
|
||||||
|
You'll need access to a Docker registry to push the image: you can
|
||||||
|
sign up for Docker hub at hub.docker.com, or use registries from
|
||||||
|
gcr.io, quay.io, etc. Let's assume you're using a docker hub account
|
||||||
|
called USER. Build and push the image to the the registry:
|
||||||
|
|
||||||
|
```
|
||||||
|
docker build -t USER/php7-env . && docker push USER/php7-env
|
||||||
|
```
|
||||||
|
|
||||||
|
## Using the image in fission
|
||||||
|
|
||||||
|
You can add this customized image to fission with "fission env
|
||||||
|
create":
|
||||||
|
|
||||||
|
```
|
||||||
|
fission env create --name php7 --image USER/php7-env
|
||||||
|
```
|
||||||
|
|
||||||
|
Or, if you already have an environment, you can update its image:
|
||||||
|
|
||||||
|
```
|
||||||
|
fission env update --name php7 --image USER/php7-env
|
||||||
|
```
|
||||||
|
|
||||||
|
After this, fission functions that have the env parmeter set to the
|
||||||
|
same environment name as this command will use this environment.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"PHPEnv\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"zendframework/zend-diactoros": "^1.3",
|
||||||
|
"monolog/monolog": "^1.22"
|
||||||
|
}
|
||||||
|
}
|
||||||
Generated
+244
@@ -0,0 +1,244 @@
|
|||||||
|
{
|
||||||
|
"_readme": [
|
||||||
|
"This file locks the dependencies of your project to a known state",
|
||||||
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||||
|
"This file is @generated automatically"
|
||||||
|
],
|
||||||
|
"hash": "26efb7d1cc58e9ecdc8765fac5eca4e1",
|
||||||
|
"content-hash": "c0c5cd003c9c3ca4cf3346b232e86258",
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"name": "monolog/monolog",
|
||||||
|
"version": "1.22.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/Seldaek/monolog.git",
|
||||||
|
"reference": "bad29cb8d18ab0315e6c477751418a82c850d558"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/Seldaek/monolog/zipball/bad29cb8d18ab0315e6c477751418a82c850d558",
|
||||||
|
"reference": "bad29cb8d18ab0315e6c477751418a82c850d558",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.0",
|
||||||
|
"psr/log": "~1.0"
|
||||||
|
},
|
||||||
|
"provide": {
|
||||||
|
"psr/log-implementation": "1.0.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
|
||||||
|
"doctrine/couchdb": "~1.0@dev",
|
||||||
|
"graylog2/gelf-php": "~1.0",
|
||||||
|
"jakub-onderka/php-parallel-lint": "0.9",
|
||||||
|
"php-amqplib/php-amqplib": "~2.4",
|
||||||
|
"php-console/php-console": "^3.1.3",
|
||||||
|
"phpunit/phpunit": "~4.5",
|
||||||
|
"phpunit/phpunit-mock-objects": "2.3.0",
|
||||||
|
"ruflin/elastica": ">=0.90 <3.0",
|
||||||
|
"sentry/sentry": "^0.13",
|
||||||
|
"swiftmailer/swiftmailer": "~5.3"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
|
||||||
|
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
|
||||||
|
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
|
||||||
|
"ext-mongo": "Allow sending log messages to a MongoDB server",
|
||||||
|
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
|
||||||
|
"mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
|
||||||
|
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
|
||||||
|
"php-console/php-console": "Allow sending log messages to Google Chrome",
|
||||||
|
"rollbar/rollbar": "Allow sending log messages to Rollbar",
|
||||||
|
"ruflin/elastica": "Allow sending log messages to an Elastic Search server",
|
||||||
|
"sentry/sentry": "Allow sending log messages to a Sentry server"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "2.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Monolog\\": "src/Monolog"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Jordi Boggiano",
|
||||||
|
"email": "j.boggiano@seld.be",
|
||||||
|
"homepage": "http://seld.be"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Sends your logs to files, sockets, inboxes, databases and various web services",
|
||||||
|
"homepage": "http://github.com/Seldaek/monolog",
|
||||||
|
"keywords": [
|
||||||
|
"log",
|
||||||
|
"logging",
|
||||||
|
"psr-3"
|
||||||
|
],
|
||||||
|
"time": "2016-11-26 00:15:39"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/http-message",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/http-message.git",
|
||||||
|
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
|
||||||
|
"reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Http\\Message\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "http://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for HTTP messages",
|
||||||
|
"homepage": "https://github.com/php-fig/http-message",
|
||||||
|
"keywords": [
|
||||||
|
"http",
|
||||||
|
"http-message",
|
||||||
|
"psr",
|
||||||
|
"psr-7",
|
||||||
|
"request",
|
||||||
|
"response"
|
||||||
|
],
|
||||||
|
"time": "2016-08-06 14:39:51"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "psr/log",
|
||||||
|
"version": "1.0.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/php-fig/log.git",
|
||||||
|
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
|
||||||
|
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=5.3.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.0.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Psr\\Log\\": "Psr/Log/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "PHP-FIG",
|
||||||
|
"homepage": "http://www.php-fig.org/"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Common interface for logging libraries",
|
||||||
|
"homepage": "https://github.com/php-fig/log",
|
||||||
|
"keywords": [
|
||||||
|
"log",
|
||||||
|
"psr",
|
||||||
|
"psr-3"
|
||||||
|
],
|
||||||
|
"time": "2016-10-10 12:19:37"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "zendframework/zend-diactoros",
|
||||||
|
"version": "1.3.10",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/zendframework/zend-diactoros.git",
|
||||||
|
"reference": "83e8d98b9915de76c659ce27d683c02a0f99fa90"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/83e8d98b9915de76c659ce27d683c02a0f99fa90",
|
||||||
|
"reference": "83e8d98b9915de76c659ce27d683c02a0f99fa90",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": "^5.4 || ^7.0",
|
||||||
|
"psr/http-message": "~1.0"
|
||||||
|
},
|
||||||
|
"provide": {
|
||||||
|
"psr/http-message-implementation": "~1.0.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"phpunit/phpunit": "^4.6 || ^5.5",
|
||||||
|
"zendframework/zend-coding-standard": "~1.0.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "1.3-dev",
|
||||||
|
"dev-develop": "1.4-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Zend\\Diactoros\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"BSD-2-Clause"
|
||||||
|
],
|
||||||
|
"description": "PSR HTTP Message implementations",
|
||||||
|
"homepage": "https://github.com/zendframework/zend-diactoros",
|
||||||
|
"keywords": [
|
||||||
|
"http",
|
||||||
|
"psr",
|
||||||
|
"psr-7"
|
||||||
|
],
|
||||||
|
"time": "2017-01-23 04:53:24"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"packages-dev": [],
|
||||||
|
"aliases": [],
|
||||||
|
"minimum-stability": "stable",
|
||||||
|
"stability-flags": [],
|
||||||
|
"prefer-stable": false,
|
||||||
|
"prefer-lowest": false,
|
||||||
|
"platform": [],
|
||||||
|
"platform-dev": []
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?php
|
||||||
|
require __DIR__ . '/vendor/autoload.php';
|
||||||
|
$server = new PHPEnv\Server();
|
||||||
|
$server->run();
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PHPEnv;
|
||||||
|
|
||||||
|
use Monolog\Logger;
|
||||||
|
use Monolog\Handler\StreamHandler;
|
||||||
|
use Zend\Diactoros\ServerRequest;
|
||||||
|
use Zend\Diactoros\Response;
|
||||||
|
use Zend\Diactoros\Server as ZendServer;
|
||||||
|
|
||||||
|
class Server {
|
||||||
|
private $server;
|
||||||
|
|
||||||
|
public function __construct(){
|
||||||
|
$codepath = '/userfunc/user';
|
||||||
|
|
||||||
|
//if i have a local function i use it
|
||||||
|
$devcodepath = '/app/userfuncdev.php';
|
||||||
|
if(file_exists($devcodepath))
|
||||||
|
$codepath = $devcodepath;
|
||||||
|
|
||||||
|
$logger = new Logger("Function");
|
||||||
|
$logger->pushHandler(new StreamHandler('php://stdout', Logger::DEBUG));
|
||||||
|
|
||||||
|
$this->server = ZendServer::createServer(
|
||||||
|
function (ServerRequest $request, Response $response) use ($logger, $codepath) {
|
||||||
|
$path = parse_url($request->getUri(), PHP_URL_PATH);
|
||||||
|
|
||||||
|
if($path == "/specialize" && $request->getMethod() == "POST"){
|
||||||
|
//Nothing to do
|
||||||
|
return new Response\EmptyResponse(201);
|
||||||
|
}else{
|
||||||
|
if(!file_exists($codepath)){
|
||||||
|
$response = $response->withStatus(500);
|
||||||
|
$response->getBody()->write("Generic container: no requests supported");
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
ob_start();
|
||||||
|
include($codepath);
|
||||||
|
//If the function as an handler class it will be called with request, response and logger
|
||||||
|
if(function_exists("handler")){
|
||||||
|
ob_end_clean();
|
||||||
|
return handler(array("request"=>$request, "response"=>$response,"logger"=>$logger));
|
||||||
|
}
|
||||||
|
//php code didn't have handler function, i will return the content
|
||||||
|
$bodyRowContent = ob_get_contents();
|
||||||
|
ob_end_clean();
|
||||||
|
return $response->getBody()->write($bodyRowContent);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
$_SERVER,
|
||||||
|
$_GET,
|
||||||
|
$_POST,
|
||||||
|
$_COOKIE,
|
||||||
|
$_FILES
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function run(){
|
||||||
|
$this->server->listen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
@@ -41,5 +41,5 @@ Or, if you already have an environment, you can update its image:
|
|||||||
fission env update --name python --image USER/python-env
|
fission env update --name python --image USER/python-env
|
||||||
```
|
```
|
||||||
|
|
||||||
After this, fission functions that have the env parmeter set to the
|
After this, fission functions that have the env parameter set to the
|
||||||
same environment name as this command will use this environment.
|
same environment name as this command will use this environment.
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<?php
|
||||||
|
echo "Hello from PHP";
|
||||||
|
$logger->warning("Hello logger");
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
function handler($context){
|
||||||
|
/** @var \Psr\Http\Message\ResponseInterface $response */
|
||||||
|
$response = $context["response"];
|
||||||
|
/** @var \Psr\Http\Message\ServerRequestInterface $request */
|
||||||
|
$request = $context["request"];
|
||||||
|
/** @var \Psr\Log\LoggerInterface $logger */
|
||||||
|
$logger = $context["logger"];
|
||||||
|
|
||||||
|
$response->getBody()->write("Hello from handler PHP");
|
||||||
|
$logger->warning("Hello logger");
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
use \Psr\Http\Message\ResponseInterface;
|
||||||
|
use \Psr\Http\Message\ServerRequestInterface;
|
||||||
|
use \Psr\Log\LoggerInterface;
|
||||||
|
|
||||||
|
function sendError($response,$message){
|
||||||
|
$response = $response->withStatus(500);
|
||||||
|
$response->getBody()->write($message);
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handler($context){
|
||||||
|
/** @var ResponseInterface $response */
|
||||||
|
$response = $context["response"];
|
||||||
|
/** @var ServerRequestInterface $request */
|
||||||
|
$request = $context["request"];
|
||||||
|
/** @var LoggerInterface $logger */
|
||||||
|
$logger = $context["logger"];
|
||||||
|
|
||||||
|
$logger->debug("Request : ",$request->getParsedBody());
|
||||||
|
if($request->getMethod() != "POST")
|
||||||
|
return sendError($response,"You must use POST method");
|
||||||
|
|
||||||
|
$body = $request->getParsedBody();
|
||||||
|
if(!isset($body["currency"]))
|
||||||
|
return sendError($response,"'currency' is not present in the POST request");
|
||||||
|
|
||||||
|
$allowedCurrency = ["ltc","btc"];
|
||||||
|
if(!in_array($body["currency"],$allowedCurrency))
|
||||||
|
return sendError($response,"'currency' is non allowed. Use one of them : ".implode(",",$allowedCurrency));
|
||||||
|
|
||||||
|
$curl = curl_init();
|
||||||
|
curl_setopt_array($curl, array(
|
||||||
|
CURLOPT_RETURNTRANSFER => 1,
|
||||||
|
CURLOPT_URL => 'https://api.cryptonator.com/api/ticker/'.$body["currency"].'-usd'
|
||||||
|
));
|
||||||
|
$result = curl_exec($curl);
|
||||||
|
curl_close($curl);
|
||||||
|
|
||||||
|
$result = json_decode($result,true);
|
||||||
|
if($result){
|
||||||
|
$logger->debug("Response API",$result);
|
||||||
|
$response->getBody()->write(json_encode(array("text"=>sprintf("%s-USB = %02f",$body["currency"],$result["ticker"]["price"]))));
|
||||||
|
}else
|
||||||
|
return sendError($response,"Cryptonator API not available");
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user