Browse Source

first commit

main
Houssem NOUIRA 2 years ago
commit
323d538e42
12 changed files with 1007 additions and 0 deletions
  1. +2
    -0
      .gitignore
  2. +125
    -0
      README.md
  3. +300
    -0
      SamApiLib/Archive.php
  4. +56
    -0
      SamApiLib/Auth.php
  5. +224
    -0
      SamApiLib/HcpApi.php
  6. +181
    -0
      SamApiLib/SamApi.php
  7. +10
    -0
      composer.json
  8. +18
    -0
      test_hcp/test_delete.php
  9. +24
    -0
      test_hcp/test_get.php
  10. +24
    -0
      test_hcp/test_head.php
  11. +24
    -0
      test_hcp/test_list.php
  12. +19
    -0
      test_hcp/test_put.php

+ 2
- 0
.gitignore View File

@ -0,0 +1,2 @@
composer.lock
vendor/

+ 125
- 0
README.md View File

@ -0,0 +1,125 @@
# SamApiLib
*PHP library to ease requesting SAM via his REST API*
## installation
Copy the `SamApiLib` folder into your autoload library older.
Then you can simply use it with :
use SamApiLib\SamApi;
## usage
use SamApiLib\Archive;
$sam_api = new SamApi("base_url", "api_token");
$sam_archive_api = new Archive($sam_api);
$archives = $sam_archive_api->read();
var_dump($archives);
## result
array(89) {
[0]=>
array(50) {
["description"]=>
string(2) "{}"
["text"]=>
string(39) "BulletinDePaye_123456789012345_2022-03 "
["archiveId"]=>
string(22) "SAM_rak4z8-1xxw-7v88fo"
["archiverArchiveId"]=>
string(20) "FR094080_2022_AE0001"
["originatorArchiveId"]=>
NULL
["depositorArchiveId"]=>
NULL
["archiveName"]=>
string(38) "BulletinDePaye_123456789012345_2022-03"
["filePlanPosition"]=>
NULL
["originatingDate"]=>
NULL
["archivalProfileReference"]=>
NULL
["serviceLevelReference"]=>
string(16) "serviceLevel_002"
["archivalAgreementReference"]=>
NULL
["retentionRuleCode"]=>
NULL
["retentionStartDate"]=>
string(10) "2022-04-19"
["retentionDuration"]=>
NULL
["finalDisposition"]=>
NULL
["disposalDate"]=>
NULL
["retentionRuleStatus"]=>
NULL
["accessRuleCode"]=>
NULL
["accessRuleDuration"]=>
NULL
["accessRuleStartDate"]=>
NULL
["accessRuleComDate"]=>
NULL
["classificationRuleCode"]=>
NULL
["classificationRuleDuration"]=>
NULL
["classificationRuleStartDate"]=>
NULL
["classificationEndDate"]=>
NULL
["classificationLevel"]=>
NULL
["classificationOwner"]=>
NULL
["originatorOrgRegNumber"]=>
string(2) "rh"
["originatorOwnerOrgId"]=>
string(4) "ACME"
["originatorOwnerOrgRegNumber"]=>
string(4) "ACME"
["depositorOrgRegNumber"]=>
NULL
["archiverOrgRegNumber"]=>
string(3) "GIC"
["userOrgRegNumbers"]=>
NULL
["depositDate"]=>
string(25) "2022-04-18T22:54:44+00:00"
["lastCheckDate"]=>
string(25) "2022-09-29T14:45:07+00:00"
["lastDeliveryDate"]=>
NULL
["lastModificationDate"]=>
NULL
["lifeCycleEvent"]=>
NULL
["status"]=>
string(9) "preserved"
["fullTextIndexation"]=>
string(4) "none"
["descriptionClass"]=>
NULL
["descriptionObject"]=>
array(0) {
}
["fileplanLevel"]=>
NULL
["storagePath"]=>
string(73) "/SAM/ACME/rh/_archivalProfileReference_/2022/04/19/SAM_rak4z8-1xxw-7v88fo"
["processingStatus"]=>
NULL
["parentArchiveId"]=>
NULL
["contents"]=>
NULL
["digitalResources"]=>
NULL
["archiveRelationship"]=>
NULL
}
[1]=>
...

+ 300
- 0
SamApiLib/Archive.php View File

@ -0,0 +1,300 @@
<?php
namespace SamApiLib;
class Archive
{
private $sam_api;
function __construct(SamApi $sam_api)
{
$this->sam_api = $sam_api;
}
/**
* list all archives
* http://sam2_dev.localhost/openapi.html#operation/recordsManagement/archives/read
* @return array[]|mixed[]
*/
public function read ()
{
$ws_route = "get /recordsManagement/archives";
$url_params = [];
$query_params = [
"archiveId" => "",
"profileReference" => "",
"status" => "",
"archiveName" => "",
"agreementReference" => "",
"archiveExpired" => "",
"finalDisposition" => "",
"originatorOrgRegNumber" => "",
"originatorOwnerOrgId" => "",
"originatorArchiveId" => "",
"originatingDate" => "",
"filePlanPosition" => "",
"hasParent" => "",
"description" => "",
"partialRetentionRule" => "",
"retentionRuleCode" => "",
"depositStartDate" => "",
"depositEndDate" => "",
"originatingStartDate" => "",
"originatingEndDate" => "",
"archiverArchiveId" => "",
"maxResults" => "",
];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
if(!empty($body))
return $body;
else
null;
}
/**
* list archives only inside an organization / folder
* @param string $registrationNumber
* @param string $folderId
* @return array[]|mixed[]
*/
public function readList ($registrationNumber = "", $folderId = "")
{
$ws_route = "get /recordsManagement/archives/List";
$url_params = [];
$query_params = [
"originatorOrgRegNumber" => $registrationNumber, // registrationNumber : m183129110301321
"filePlanPosition" => $folderId, // folderId : SAM_rak426-6xon-f8ywrz
"archiveUnit" => ""
];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
if(!empty($body))
return $body;
else
null;
}
/**
* get a particular archive
* @param $id
* @return array[]|mixed[]
*/
public function getArchiveById ($id)
{
$ws_route = " get /recordsManagement/archiveDescription/{archiveId}";
$url_params = [
"archiveId" => $id,
];
$query_params = [
"isCommunication" => "",
];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
if(!empty($body))
return $body;
else
null;
}
/**
* get archive metadata
* @param $archive_id
* @return array[]|mixed[]
*/
public function getMetadata ($archive_id)
{
$ws_route = " get /recordsManagement/archive/Metadata/{archiveId}";
$url_params = [
"archiveId" => $archive_id,
];
$query_params = [];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
/**
* get a resoure's content base 64 encoded
* @param $archive_id
* @param $resource_id
* @return array[]|mixed[]
*/
public function getResourceContentBase64 ($archive_id, $resource_id)
{
$ws_route = " get /recordsManagement/archive/Consultation/{archiveId}/Digitalresource/{resId}";
$url_params = [
"archiveId" => $archive_id,
"resId" => $resource_id,
];
$query_params = [
"isCommunication" => "",
"embedded" => "",
];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
return $body; // use ["attachment"]["data"] for direct access to base64 content
}
/**
* create an archive
* @param $archive_name
* @param $originatorOrgRegNumber
* @param $file_plan_position
* @return array[]|mixed[]
*/
public function createArchive ($archive_name, $originatorOrgRegNumber, $file_plan_position)
{
$ws_route = " post /recordsManagement/archive";
$url_params = [];
$query_params = [];
$body_params = [
"archive" => [
"archiveName" => $archive_name,
"filePlanPosition" => $file_plan_position,
],
"zipContainer" => false,
];
$body_params = [
"archive" => [
"archiveName" => $archive_name,
"originatorOrgRegNumber" => $originatorOrgRegNumber,// organization registration number (registrationNumber)
"filePlanPosition" => $file_plan_position, // folder id (folderId), or null if root of an organization
],
"zipContainer" => false,
];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
/**
* create an archive
* @param $archive_name
* @param $originatorOrgRegNumber
* @param $file_plan_position
* @return array[]|mixed[]
*/
public function createArchiveWithResource ($archiveId, $originatorOwnerOrgRegNumber, $originatorOrgRegNumber, $content, $file_name, $hash, $hashAlgorithm)
{
$ws_route = " post /digitalSafe/digitalSafe/$originatorOwnerOrgRegNumber/$originatorOrgRegNumber";
$url_params = [];
$query_params = [];
$body_params = [
"originatorArchiveId" => $archiveId,
"digitalResources" => [
[
"handler" => base64_encode($content),
"fileName" => $file_name,
"hash" => $hash,
"hashAlgorithm" => $hashAlgorithm
]
]
];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
/**
* add resource content (base 64 encoded) to an archive
* @param $archive_id
* @param $content
* @param $file_name
* @return array[]|mixed[]
*/
public function addResourceBase64ToArchive ($archive_id, $content, $file_name)
{
$ws_route = " post /recordsManagement/archive/{archiveId}/Digitalresource";
$url_params = [
"archiveId" => $archive_id,
];
$query_params = [];
$body_params = [
"contents" => $content,
"filename" => $file_name,
];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
/**
* add resource content (raw) to an archive
* @param $archive_id
* @param $content
* @param $file_name
* @return array|mixed[]
*/
public function addResourceToArchive ($archive_id, $content, $file_name)
{
return $this->addResourceBase64ToArchive($archive_id, base64_encode($content), $file_name);
}
/**
* count all archives
* @return array[]|mixed[]
*/
public function count ()
{
$ws_route = "get /recordsManagement/archives/Count";
$url_params = [];
$query_params = [
"originatorOrgRegNumber" => "",
"filePlanPosition" => "",
];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
/**
* ask for an archive destruction
* @param $originatorOwnerOrgRegNumber
* @param $originatorOrgRegNumber
* @param $archiveId
* @return array[]|mixed[]
*/
public function destruct ($originatorOwnerOrgRegNumber, $originatorOrgRegNumber, $archiveId)
{
$ws_route = " delete /digitalSafe/digitalSafe/{originatorOwnerOrgRegNumber}/{originatorOrgRegNumber}/{archiveId}";
$url_params = [
"originatorOwnerOrgRegNumber" => $originatorOwnerOrgRegNumber,
"originatorOrgRegNumber" => $originatorOrgRegNumber,
"archiveId" => $archiveId,
];
$query_params = [];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
/**
* ask for an archive integrity check
* @param $archiveId
* @return array[]|mixed[]
*/
public function checkIntegrity ($archiveId)
{
$ws_route = " get /recordsManagement/archives/Integritycheck";
$url_params = [];
$query_params = [
"archiveIds" => [$archiveId],
];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
}

+ 56
- 0
SamApiLib/Auth.php View File

@ -0,0 +1,56 @@
<?php
namespace SamApiLib;
class Auth
{
private $sam_api;
function __construct(SamApi $sam_api)
{
$this->sam_api = $sam_api;
}
/**
* get all service accounts
* @return array[]|mixed[]
*/
public function serviceAccountList ()
{
$ws_route = "get /auth/serviceAccount/Index";
$url_params = [];
$query_params = [];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
if(!empty($body))
return $body;
else
null;
}
/**
* get detail about a service account
* @param $serviceAccountId
* @return array[]|mixed[]
*/
public function serviceAccountDetail ($serviceAccountId)
{
$ws_route = "get /auth/serviceAccount/{serviceAccountId}";
$url_params = [
"serviceAccountId" => $serviceAccountId, // "SAM_rak3yb-dih2-lp6sua"
];
$query_params = [];
$body_params = [];
list($headers, $body) = $this->sam_api->query($ws_route, $url_params, $query_params, $body_params);
if(!empty($body))
return $body;
else
null;
}
}

+ 224
- 0
SamApiLib/HcpApi.php View File

@ -0,0 +1,224 @@
<?php
namespace SamApiLib;
class HcpApi
{
private $base_url;
private $auth_token;
const cookie_name = "hcp-ns-auth";
function __construct($base_url, $login, $password)
{
$this->base_url = $base_url;
$this->auth_token = base64_encode($login) . ":" . md5($password);
}
public static function create($protocol, $repository_url, $tenant, $namespace, $login, $password)
{
$base_url = "$protocol://$namespace.$tenant.$repository_url";
return new self($base_url, $login, $password);
}
/**
* REST API query helper
* @param $ws_route
* @param $url_params
* @param $query_params
* @param $body_params
* @return array
*/
protected function query($ws_method, $ws_url, $url_params, $query_params, $body_params)
{
$query_string = http_build_query($query_params);
foreach ($url_params as $url_param => $value)
{
$ws_url = str_replace('{'.$url_param.'}', $value, $ws_url);
}
$url = $this->base_url . $ws_url . "?" . $query_string;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
$ws_method = strtoupper($ws_method);
if($ws_method !== "GET")
{
if($ws_method === "POST")
{
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, (json_encode($body_params)));
}
elseif ($ws_method === "PUT")
{
curl_setopt($ch, CURLOPT_PUT, true);
if(file_exists($body_params) && is_readable($body_params))
{
curl_setopt($ch, CURLOPT_INFILE, fopen($body_params, "r"));
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($body_params));
}
else
{
die("file open error");
}
}
elseif ($ws_method === "HEAD")
{
curl_setopt($ch, CURLOPT_NOBODY, true);
}
else
{
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $ws_method);
}
}
curl_setopt($ch, CURLOPT_COOKIE, self::cookie_name . "=" . $this->auth_token);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
if ($res === false)
{
echo "curl error #" . curl_errno($ch) . " : " . curl_error($ch); die;
}
curl_close($ch);
// var_dump($res); die;
list($headers, $body) = explode("\r\n\r\n", $res); // PHP_EOL.PHP_EOL
$headers = explode("\r\n", $headers);
// sometimes headers are in the body
if(count($headers) === 1 && !empty($body))
{
$headers = explode("\r\n", $body);
$body = "";
}
else
{
$body2 = json_decode($body, true);
if(json_last_error() === JSON_ERROR_NONE)
{ // content was really json
$body = $body2; // use decoded content
}
}
$status_row = array_shift($headers);
preg_match("|HTTP/1.1 (\d+) (.+)|", $status_row, $matches);
$status = $matches[1];
$headers2 = [];
foreach ($headers as $header)
{
list($key, $value) = \explode(": ", $header);
$headers2 [$key] = $value;
}
return [$status, $headers2, $body];
}
public function put_file ($filename, $directory)
{
$basename = basename($filename);
list($status, $headers, $body) = $this->query("put", "/rest/$directory/$basename", [], [], $filename);
if($status === "201")
{
// check the hash
$keyword = "X-HCP-Hash";
$algo = "";
$hash = "";
$test = array_filter($headers, function($header) use ($keyword, &$algo, &$hash)
{
if(preg_match("|$keyword: (.+) (.+)|", $header, $matches) === 1)
{
list(,$algo, $hash) = $matches;
return true;
}
else
{
return false;
}
});
if($algo === "SHA-256")
{
$hash_calculated = strtoupper(hash("sha256", file_get_contents($filename)));
if($hash !== $hash_calculated)
{
die("hash mismatch");
}
}
}
//TODO handle 409 ...
return $status;
}
public function get_file ($filename)
{
list($status, $headers, $body) = $this->query("get", "/rest/$filename", [], [], []);
//TODO handle 404 ...
if($status == 200)
{
return $body;
}
else
{
return false;
}
}
public function delete_file ($filename)
{
list($status, $headers, $body) = $this->query("delete", "/rest/$filename", [], [], []);
//TODO handle 403 404 ...
return $status;
}
public function head_file ($filename)
{
list($status, $headers, $body) = $this->query("head", "/rest/$filename", [], [], []);
if($status == 200)
{
return $headers;
}
elseif($status == 404)
{
return false;
}
}
public function list_files ($directory)
{
list($status, $headers, $body) = $this->query("get", "/rest/$directory", [], [/*"type" => "directory"*/], []);
//TODO handle 404 ...
if($status == 200)
{
// echo $body . PHP_EOL;
$res = [];
$xml = \simplexml_load_string($body);
foreach ($xml->entry as $entry)
{
$elem = ((array)$entry->attributes())['@attributes'];
$res [$elem["urlName"]] = $elem;
}
return $res;
}
else
{
return false;
}
}
}

+ 181
- 0
SamApiLib/SamApi.php View File

@ -0,0 +1,181 @@
<?php
namespace SamApiLib;
class SamApi
{
private const ws_accept = "application/json";
private const ws_content_type = "application/json";
private const ws_user_agent = "service";
private $base_url;
private $api_token;
function __construct($base_url, $api_token)
{
$this->base_url = $base_url;
$this->api_token = $api_token;
}
/**
* REST API query helper
* @param $ws_route
* @param $url_params
* @param $query_params
* @param $body_params
* @return array
*/
public function query($ws_route, $url_params, $query_params, $body_params)
{
list($ws_method, $ws_url) = explode(" ", trim($ws_route));
$query_string = http_build_query($query_params);
foreach ($url_params as $url_param => $value)
{
$ws_url = str_replace('{'.$url_param.'}', $value, $ws_url);
}
$url = $this->base_url . $ws_url . "?" . $query_string;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Accept: ".$this::ws_accept, "Content-type: ".$this::ws_content_type]);
curl_setopt($ch, CURLOPT_USERAGENT, $this::ws_user_agent);
$ws_method = strtoupper($ws_method);
if($ws_method !== "GET")
{
if($ws_method === "POST")
{
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, (json_encode($body_params)));
}
else
{
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $ws_method);
}
}
curl_setopt($ch, CURLOPT_COOKIE, "LAABS-AUTH=".urlencode($this->api_token));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = curl_exec($ch);
if ($res === false)
{
echo "curl error #" . curl_errno($ch) . " : " . curl_error($ch); die;
}
curl_close($ch);
list($headers, $body) = explode("\r\n\r\n", $res); // PHP_EOL.PHP_EOL
$headers = explode(PHP_EOL, $headers);
$body2 = json_decode($body, true);
if(json_last_error() === JSON_ERROR_NONE)
{ // content was really json
$body = $body2; // use decoded content
}
return [$headers, $body];
}
/**
* get the file plan (organization structure)
* @return array
*/
public function getFilePlan ()
{
$ws_route = " get /filePlan/filePlan/Tree";
$url_params = [];
$query_params = [];
$body_params = [];
list($headers, $body) = $this->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
/**
* get a user by its login
* @param $login
* @return array
*/
public function getUsersByLogin ($login)
{
$ws_route = " get /auth/userAccount/Search";
$url_params = [];
$query_params = [
"query" => "accountName = '$login'",
];
$body_params = [];
list($headers, $body) = $this->query($ws_route, $url_params, $query_params, $body_params);
if(count($body) > 0)
return $body[0];
else
null;
}
/**
* get the Lifecycle journal
* @param string $eventType
* @param string $objectClass
* @param string $objectId
* @param string $minDate
* @param string $maxDate
* @param string $org
* @param number $maxResults
* @return array
*/
public function getLifeCycleJournals ($eventType="", $objectClass="", $objectId="", $minDate="", $maxDate="", $org="", $maxResults=50)
{
$ws_route = "get /lifeCycle/event/Search";
$url_params = [];
$query_params = [
"eventType" => $eventType,
"objectClass" => $objectClass,
"objectId" => $objectId,
"minDate" => $minDate,
"maxDate" => $maxDate,
"org" => $org,
"maxResults" => $maxResults,
];
$body_params = [];
list($headers, $body) = $this->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
/**
* get the application journal
* @param string $fromDate
* @param string $toDate
* @param string $event
* @param string $accountId
* @param string $status
* @param string $term
* @param number $maxResults
* @return array
*/
public function getApplicationJournals ($fromDate="", $toDate="", $event="", $accountId="", $status="", $term="", $maxResults=50)
{
$ws_route = "get /audit/event/Search";
$url_params = [];
$query_params = [
"fromDate" => $fromDate,
"toDate" => $toDate,
"event" => $event,
"accountId" => $accountId,
"status" => $status,
"term" => $term,
"maxResults" => $maxResults,
];
$body_params = [];
list($headers, $body) = $this->query($ws_route, $url_params, $query_params, $body_params);
return $body;
}
}

+ 10
- 0
composer.json View File

@ -0,0 +1,10 @@
{
"name" : "archives-factory/sam-api-lib",
"description" : "SAM API library",
"type" : "library",
"autoload" : {
"psr-4" : {
"SamApiLib\\" : "SamApiLib"
}
}
}

+ 18
- 0
test_hcp/test_delete.php View File

@ -0,0 +1,18 @@
<?php
use SamApiLib\HcpApi;
require_once __DIR__ . "/../SamApiLib/HcpApi.php";
$protocol = "https";
$repository_url = "af-sam.archivesfactory.cloud";
$tenant = "cfe228";
$namespace = "cfe228";
$url = "https://cfe228.cfe228.af-sam.archivesfactory.cloud";
$login = "cfe228";
$password = "Test-S3-&-Tenant-Suppl";
$filename = "TEST/testdoc.txt";
$api= new HcpApi($protocol, $repository_url, $tenant, $namespace, $login, $password);
echo $api->delete_file($filename);

+ 24
- 0
test_hcp/test_get.php View File

@ -0,0 +1,24 @@
<?php
use SamApiLib\HcpApi;
require_once __DIR__ . "/../SamApiLib/HcpApi.php";
$protocol = "https";
$repository_url = "af-sam.archivesfactory.cloud";
$tenant = "cfe228";
$namespace = "cfe228";
$url = "https://cfe228.cfe228.af-sam.archivesfactory.cloud";
$login = "cfe228";
$password = "Test-S3-&-Tenant-Suppl";
$filename = "TEST/testdoc.txt";
$api= new HcpApi($protocol, $repository_url, $tenant, $namespace, $login, $password);
$res = $api->get_file($filename);
if($res === false)
{
die("ERROR");
}
echo $res;

+ 24
- 0
test_hcp/test_head.php View File

@ -0,0 +1,24 @@
<?php
use SamApiLib\HcpApi;
require_once __DIR__ . "/../SamApiLib/HcpApi.php";
$protocol = "https";
$repository_url = "af-sam.archivesfactory.cloud";
$tenant = "cfe228";
$namespace = "cfe228";
$url = "https://cfe228.cfe228.af-sam.archivesfactory.cloud";
$login = "cfe228";
$password = "Test-S3-&-Tenant-Suppl";
$filename = "TEST/testdoc.txt";
$api= new HcpApi($protocol, $repository_url, $tenant, $namespace, $login, $password);
$res = $api->head_file($filename);
if($res === false)
{
die("file does not exist");
}
var_dump($res);

+ 24
- 0
test_hcp/test_list.php View File

@ -0,0 +1,24 @@
<?php
use SamApiLib\HcpApi;
require_once __DIR__ . "/../SamApiLib/HcpApi.php";
$protocol = "https";
$repository_url = "af-sam.archivesfactory.cloud";
$tenant = "cfe228";
$namespace = "cfe228";
$url = "https://cfe228.cfe228.af-sam.archivesfactory.cloud";
$login = "cfe228";
$password = "Test-S3-&-Tenant-Suppl";
$filename = "TEST";
$api= new HcpApi($protocol, $repository_url, $tenant, $namespace, $login, $password);
$res = $api->list_files($filename);
if($res === false)
{
die("ERROR");
}
var_dump($res);

+ 19
- 0
test_hcp/test_put.php View File

@ -0,0 +1,19 @@
<?php
use SamApiLib\HcpApi;
require_once __DIR__ . "/../SamApiLib/HcpApi.php";
$protocol = "https";
$repository_url = "af-sam.archivesfactory.cloud";
$tenant = "cfe228";
$namespace = "cfe228";
$url = "https://cfe228.cfe228.af-sam.archivesfactory.cloud";
$login = "cfe228";
$password = "Test-S3-&-Tenant-Suppl";
$filename = "/home/laulau/testdoc.txt";
$directory = "TEST";
$api= new HcpApi($protocol, $repository_url, $tenant, $namespace, $login, $password);
echo $api->put_file($filename, $directory);

Loading…
Cancel
Save