Skip to content

Commit

Permalink
allow for national/diocesan calendar source checks
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnRDOrazio committed Jun 4, 2022
1 parent 45d1d45 commit 16809cb
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 30 deletions.
59 changes: 29 additions & 30 deletions LitCalHealth.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,12 @@ public function onMessage(ConnectionInterface $from, $msg) {
if( property_exists( $messageReceived, 'action' ) ) {
switch( $messageReceived->action ) {
case 'executeValidation':
if( property_exists( $messageReceived, 'validate' ) ) {
$this->executeValidation( $messageReceived->validate, $from );
if(
property_exists( $messageReceived, 'validate' ) &&
property_exists( $messageReceived, 'sourceFile' ) &&
property_exists( $messageReceived, 'category' )
) {
$this->executeValidation( $messageReceived, $from );
}
break;
case 'validateCalendar':
Expand Down Expand Up @@ -87,92 +91,87 @@ private function sendMessage( ConnectionInterface $from, string|stdClass $msg )
}
}


const SchemaValidation = [
"LitCalMetadata" => "https://litcal.johnromanodorazio.com/api/dev/LitCalMetadata.php",
"PropriumDeTempore" => "data/propriumdetempore.json",
"PropriumDeSanctis1970" => "data/propriumdesanctis_1970/propriumdesanctis_1970.json",
"PropriumDeSanctis2002" => "data/propriumdesanctis_2002/propriumdesanctis_2002.json",
"PropriumDeSanctis2008" => "data/propriumdesanctis_2008/propriumdesanctis_2008.json",
"PropriumDeSanctisITALY1983" => "data/propriumdesanctis_ITALY_1983/propriumdesanctis_ITALY_1983.json",
"PropriumDeSanctisUSA2011" => "data/propriumdesanctis_USA_2011/propriumdesanctis_USA_2011.json",
"MemorialsFromDecrees" => "data/memorialsFromDecrees/memorialsFromDecrees.json",
"RegionalCalendarsIndex" => "nations/index.json"
];

const DataPathToSchema = [
"https://litcal.johnromanodorazio.com/api/dev/LitCalMetadata.php" => LitSchema::METADATA,
"data/propriumdetempore.json" => LitSchema::PROPRIUMDETEMPORE,
"data/propriumdesanctis_1970/propriumdesanctis_1970.json" => LitSchema::PROPRIUMDESANCTIS,
"data/propriumdesanctis_2002/propriumdesanctis_2002.json" => LitSchema::PROPRIUMDESANCTIS,
"data/propriumdesanctis_2008/propriumdesanctis_2008.json" => LitSchema::PROPRIUMDESANCTIS,
"data/propriumdesanctis_ITALY_1983/propriumdesanctis_ITALY_1983.json" => LitSchema::PROPRIUMDESANCTIS,
"data/propriumdesanctis_USA_2011/propriumdesanctis_USA_2011.json" => LitSchema::PROPRIUMDESANCTIS,
"data/memorialsFromDecrees/memorialsFromDecrees.json" => LitSchema::DECREEMEMORIALS,
"nations/index.json" => LitSchema::INDEX
];

const LitCalBaseUrl = "https://litcal.johnromanodorazio.com/api/dev/LitCalEngine.php";

private object $CalendarData;

public function __construct() {
$this->clients = new \SplObjectStorage;
}

private function executeValidation( string $validate, ConnectionInterface $to ) {
if( array_key_exists( $validate, LitCalHealth::SchemaValidation ) ) {
$dataPath = LitCalHealth::SchemaValidation[ $validate ];
$schema = LitCalHealth::DataPathToSchema[ $dataPath ];
private function executeValidation( object $validation, ConnectionInterface $to ) {
//if( file_exists( $validation->sourceFile ) ) {
$dataPath = $validation->sourceFile;
switch( $validation->category ) {
case 'universalcalendar':
$schema = LitCalHealth::DataPathToSchema[ $dataPath ];
break;
case 'nationalcalendar':
$schema = LitSchema::NATIONAL;
break;
case 'diocesancalendar':
$schema = LitSchema::DIOCESAN;
break;
}
$data = file_get_contents( $dataPath );
if( $data !== false ) {
$message = new stdClass();
$message->type = "success";
$message->text = "The Data file $dataPath exists";
$message->classes = ".$validate.file-exists";
$message->classes = ".$validation->validate.file-exists";
$this->sendMessage( $to, $message );

$jsonData = json_decode( $data );
if( json_last_error() === JSON_ERROR_NONE ) {
$message = new stdClass();
$message->type = "success";
$message->text = "The Data file $dataPath was successfully decoded as JSON";
$message->classes = ".$validate.json-valid";
$message->classes = ".$validation->validate.json-valid";
$this->sendMessage( $to, $message );

$validationResult = $this->validateDataAgainstSchema( $jsonData, $schema );
if( gettype( $validationResult ) === 'boolean' && $validationResult === true ) {
$message = new stdClass();
$message->type = "success";
$message->text = "The Data file $dataPath was successfully validated against the Schema $schema";
$message->classes = ".$validate.schema-valid";
$message->classes = ".$validation->validate.schema-valid";
$this->sendMessage( $to, $message );
}
else if( gettype( $validationResult === 'object' ) ) {
$validationResult->classes = ".$validate.schema-valid";
$validationResult->classes = ".$validation->validate.schema-valid";
$this->sendMessage( $to, $validationResult );
}
} else {
$message = new stdClass();
$message->type = "error";
$message->text = "There was an error decoding the Data file $dataPath as JSON: " . json_last_error_msg();
$message->classes = ".$validate.json-valid";
$message->classes = ".$validation->validate.json-valid";
$this->sendMessage( $to, $message );
}

} else {
$message = new stdClass();
$message->type = "error";
$message->text = "Data file $dataPath does not exist";
$message->classes = ".$validate.file-exists";
$message->classes = ".$validation->validate.file-exists";
$this->sendMessage( $to, $message );
}
/*
} else {
$message = new stdClass();
$message->type = "error";
$message->text = "The validation requested \"{$validate}\" does not seem to be a supported validation";
$message->text = "The validation requested \"{$validation->validate}\" does not seem to be a supported validation, or the corresponding file to validate \"{$validation->sourceFile} does not exist\"";
$this->sendMessage( $to, $message );
}
*/
}

private function validateCalendar( string $Calendar, int $Year, string $category, ConnectionInterface $to ) : void {
Expand Down
1 change: 1 addition & 0 deletions schemas/CommonDef.json
Original file line number Diff line number Diff line change
Expand Up @@ -563,6 +563,7 @@
"UKRAINE",
"UNITED ARAB EMIRATES",
"UNITED KINGDOM",
"UNITED STATES",
"USA",
"URUGUAY",
"UZBEKISTAN",
Expand Down

0 comments on commit 16809cb

Please sign in to comment.