Throw exception when a few keys are missing from probe data array in Repository\DiasporaContact
- Address part of https://github.com/friendica/friendica/issues/11993#issuecomment-1338134893
This commit is contained in:
parent
d87585477c
commit
e78471c847
2 changed files with 36 additions and 8 deletions
|
@ -1395,9 +1395,17 @@ class Contact
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($data['network'] == Protocol::DIASPORA) {
|
if ($data['network'] == Protocol::DIASPORA) {
|
||||||
DI::dsprContact()->updateFromProbeArray($data);
|
try {
|
||||||
|
DI::dsprContact()->updateFromProbeArray($data);
|
||||||
|
} catch (\InvalidArgumentException $e) {
|
||||||
|
Logger::error($e->getMessage(), ['url' => $url, 'data' => $data]);
|
||||||
|
}
|
||||||
} elseif (!empty($data['networks'][Protocol::DIASPORA])) {
|
} elseif (!empty($data['networks'][Protocol::DIASPORA])) {
|
||||||
DI::dsprContact()->updateFromProbeArray($data['networks'][Protocol::DIASPORA]);
|
try {
|
||||||
|
DI::dsprContact()->updateFromProbeArray($data['networks'][Protocol::DIASPORA]);
|
||||||
|
} catch (\InvalidArgumentException $e) {
|
||||||
|
Logger::error($e->getMessage(), ['url' => $url, 'data' => $data['networks'][Protocol::DIASPORA]]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self::updateFromProbeArray($contact_id, $data);
|
self::updateFromProbeArray($contact_id, $data);
|
||||||
|
@ -2485,15 +2493,23 @@ class Contact
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$ret = Probe::uri($contact['url'], $network, $contact['uid']);
|
$data = Probe::uri($contact['url'], $network, $contact['uid']);
|
||||||
|
|
||||||
if ($ret['network'] == Protocol::DIASPORA) {
|
if ($data['network'] == Protocol::DIASPORA) {
|
||||||
DI::dsprContact()->updateFromProbeArray($ret);
|
try {
|
||||||
} elseif (!empty($ret['networks'][Protocol::DIASPORA])) {
|
DI::dsprContact()->updateFromProbeArray($data);
|
||||||
DI::dsprContact()->updateFromProbeArray($ret['networks'][Protocol::DIASPORA]);
|
} catch (\InvalidArgumentException $e) {
|
||||||
|
Logger::error($e->getMessage(), ['id' => $id, 'network' => $network, 'contact' => $contact, 'data' => $data]);
|
||||||
|
}
|
||||||
|
} elseif (!empty($data['networks'][Protocol::DIASPORA])) {
|
||||||
|
try {
|
||||||
|
DI::dsprContact()->updateFromProbeArray($data['networks'][Protocol::DIASPORA]);
|
||||||
|
} catch (\InvalidArgumentException $e) {
|
||||||
|
Logger::error($e->getMessage(), ['id' => $id, 'network' => $network, 'contact' => $contact, 'data' => $data]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return self::updateFromProbeArray($id, $ret);
|
return self::updateFromProbeArray($id, $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -234,6 +234,18 @@ class DiasporaContact extends BaseRepository
|
||||||
*/
|
*/
|
||||||
public function updateFromProbeArray(array $data): Entity\DiasporaContact
|
public function updateFromProbeArray(array $data): Entity\DiasporaContact
|
||||||
{
|
{
|
||||||
|
if (empty($data['url'])) {
|
||||||
|
throw new \InvalidArgumentException('Missing url key in Diaspora probe data array');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($data['guid'])) {
|
||||||
|
throw new \InvalidArgumentException('Missing guid key in Diaspora probe data array');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($data['pubkey'])) {
|
||||||
|
throw new \InvalidArgumentException('Missing pubkey key in Diaspora probe data array');
|
||||||
|
}
|
||||||
|
|
||||||
$uriId = ItemURI::insert(['uri' => $data['url'], 'guid' => $data['guid']]);
|
$uriId = ItemURI::insert(['uri' => $data['url'], 'guid' => $data['guid']]);
|
||||||
|
|
||||||
$contact = Contact::getByUriId($uriId, ['id', 'created']);
|
$contact = Contact::getByUriId($uriId, ['id', 'created']);
|
||||||
|
|
Loading…
Reference in a new issue