perform caching of jsonld schemas
This commit is contained in:
		| @@ -82,6 +82,8 @@ class LDSignatures { | |||||||
| 		if(! is_object($data)) | 		if(! is_object($data)) | ||||||
| 			return ''; | 			return ''; | ||||||
|  |  | ||||||
|  | 		jsonld_set_document_loader('jsonld_document_loader'); | ||||||
|  |  | ||||||
| 		return jsonld_normalize($data,[ 'algorithm' => 'URDNA2015', 'format' => 'application/nquads' ]); | 		return jsonld_normalize($data,[ 'algorithm' => 'URDNA2015', 'format' => 'application/nquads' ]); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1944,3 +1944,34 @@ function getBestSupportedMimeType($mimeTypes = null, $acceptedTypes = false) { | |||||||
|     // no mime-type found |     // no mime-type found | ||||||
|     return null; |     return null; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function jsonld_document_loader($url) { | ||||||
|  |  | ||||||
|  | 	// perform caching for jsonld normaliser | ||||||
|  |  | ||||||
|  | 	require_once('library/jsonld/jsonld.php'); | ||||||
|  |  | ||||||
|  | 	$cachepath = 'store/[data]/ldcache'; | ||||||
|  | 	if(! is_dir($cachepath)) | ||||||
|  | 		os_mkdir($cachepath,STORAGE_DEFAULT_PERMISSIONS,true); | ||||||
|  |  | ||||||
|  | 	$filename = $cachepath . '/' . urlencode($url); | ||||||
|  | 	if(file_exists($filename) && filemtime($filename) > time() - (12 * 60 * 60)) { | ||||||
|  | 		return json_decode(file_get_contents($filename)); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	$r = jsonld_default_document_loader($url); | ||||||
|  | 	if($r) { | ||||||
|  | 		file_put_contents($filename,json_encode($r)); | ||||||
|  | 		return $r; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	logger('not found'); | ||||||
|  | 	if(file_exists($filename)) { | ||||||
|  | 		return json_decode(file_get_contents($filename)); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return []; | ||||||
|  |  | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user