1. Go to this page and download the library: Download dagstuhl/swh-archive-client library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
dagstuhl / swh-archive-client example snippets
return [
'web-api' => [
'token' => env('SWH_WEB_API_TOKEN'),
'url' => env('SWH_WEB_API_URL'),
// optional: caching of get requests for objects in the archive
'cache-folder' => env('SWH_WEB_API_CACHE_FOLDER'), // return null to disable cache
'cache-ttl' => env('SWH_WEB_API_CACHE_TTL'),
]
];
// start with a url
$repo = Repository::fromNodeUrl('https://github.com/dagstuhl-publishing/styles');
// create the corresponding origin object
$origin = Origin::fromRepository($repo);
// ask the origin for the SoftwareHeritage visits
$visits = $origin->getVisits();
// get the snapshot object from a specific visit
$snapshot = $visits[0]->getSnapshot();
// get the list of branches from a snapshot
$branches = $snapshot->getBranches();
// take the last snapshot
$snapshot = $visits[0]->getSnapshot();
// take a "path" to a file/directory inside the repo
$repoNode = new RepositoryNode('https://github.com/dagstuhl-publishing/styles/blob/master/LIPIcs/authors/lipics-v2021.cls');
// identify this node inside the snapshot (i.e., get the context)
$context = $snapshot->getContext($repoNode);
// display the full identifier
dd($context->getIdentifier());
$swhClient = SwhWebApiClient::getCurrent();
// create a repository instance from a url that points to a repo or a specific file/directory inside the repo
$repo = Repository::fromNodeUrl('https://github.com/.../...');
// submit a save request to Software Heritage
$origin = Origin::fromRepository($repo);
$saveRequest = $origin->postSaveRequest();
if ($saveRequest === null) {
// connection or network error
dd('Internal server error', $swhClient->getException(), $swhClient->getLastResponse());
}
else {
dd('SaveRequest created by SoftwareHeritage, SaveRequestId: '.$saveRequest->id);
// store $saveRequest->id in local DB to track the status of this request
}
$saveRequest = SaveRequest::byId($saveRequestId)
if ($saveRequest->saveRequestStatus == SaveRequestStatus::REJECTED) {
dd('save request rejected -> abort');
}
elseif ($saveRequest->saveTaskStatus == SaveTaskStatus::SUCCEEDED) {
if ($saveRequest->snapshotSwhId === null) {
dd('no snapshot though request succeeded -> this should actually not happen');
}
else {
$snapshot = $saveRequest->getSnapshot();
$repoNode = new RepositoryNode($repoNodeUrl ?? $saveRequest->originUrl);
$context = $snapshot->getContext($repoNode);
dd('success', $snapshot, $context, $context->getIdentifier());
}
}
else {
dd('pending -> loop this code block again', $saveRequest);
}
$snapshot = Snapshot::byId('non-existing-or-invalid-id'); // to provoke an error
if ($snapshot === null) {
$swhClient = SwhWebApiClient::getCurrent();
dd(
$swhClient->getException(), // last exception (e.g., in case of a network issue)
$swhClient->getLastResponse() // access the last HTTP response (incl. status code, headers) for debugging purposes
);
}
$swhClient = SwhWebApiClient::getCurrent();
$swhClient->clearCache('2024-09-07'); // clears the cache for a specific date
$swhClient->clearCache(); // clears the whole cache
[
'X-RateLimit-Limit' => 1200, // max. number of permitted requests per hour
'X-RateLimit-Remaining' => 1138, // remaining in current period
'X-RateLimit-Reset' => 1620639052 // at this timestamp, the rate-limit will be refreshed
]
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.