File: /home/austral3d/fourdplan.com/fdpforge/php/loadModel.php
<?php
// ------- Importante -----
// Descargar un certificado de seguridad para que curl pueda conectarse a la página de forge
//
session_start();
require_once("comun/conexion_mysqli.php");
require_once("comun/encodings.php");
require_once("comun/httpMethods.php");
$db = fdp_connect();
$assembly_id = "";
if(!isset($_POST["assembly_id"])) {
die("Debe seleccionar un assembly.");
}
$assembly_id = $_POST["assembly_id"];
// Archivo con los datos para conectar a forge y ejecutar la app
$config = fdp_read_file("forge");
$cert_path = $config["cert_path"];
$client_id = $config["client_id"];
$client_secret = $config["client_secret"];
$access_token = "";
// Autentica al cliente para que pueda ejecutar la aplicación. Se guarda en SESSION para no
// pedir autorización cada vez
$url_auth = $config["author_url"];
$scopes = "data:read data:write data:create bucket:create bucket:read";
$data = array(
"params" => array(
"client_id" => $client_id,
"client_secret" => $client_secret,
"grant_type" => "client_credentials",
"scope" => $scopes)
);
$auth = fdp_request($url_auth, $data);
$access_token = json_decode($auth)->access_token;
// Esta llave debe ser única. La mejor manera es usar la id del cliente.
//$bucketKey = toLowerCase($client_id) . $assembly_id;
//$policyKey = 'transient';
$data = array(
"headers" => array(
"Authorization: Bearer " . $access_token,)
);
$url_bucket = $config["bucket_url"];
$buckets = json_decode(fdp_request($url_bucket, $data, GET));
$test_bucket_id = $buckets->items[1]->bucketKey;
$url_object = $url_bucket . "/" . encodeURIComponent($test_bucket_id) . "/objects";
$objects = json_decode(fdp_request($url_object, $data, GET));
$test_object_urn = $objects->items[1]->objectId;
$result["token"] = $access_token;
$result["urn"] = base64url_encode($test_object_urn);
echo json_encode($result);
// Envía una petición a una dirección de la api de forge con parametros.
// Opcionalmente se puede especificar si la petición es POST o no
function fdp_request($url, $data, $m = POST) {
global $cert_path;
// curl es una extensión de php para descargar archivos desde servidores remotos
$curl = curl_init($url);
if(isset($data['headers'])) {
curl_setopt($curl, CURLOPT_HTTPHEADER, $data['headers']);
}
if($m == POST && isset($data["params"])) {
$postFields = http_build_query($data['params']);
curl_setopt($curl, CURLOPT_POST, sizeof($data['params']));
curl_setopt($curl, CURLOPT_POSTFIELDS, $postFields);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CAINFO, $cert_path . "/cacert.pem");
$response = curl_exec($curl);
if(!$response)
{
trigger_error(curl_error($curl));
}
curl_close($curl);
return $response;
}
?>