From e92391db03b5166769fd950f4e098716c7d24f32 Mon Sep 17 00:00:00 2001 From: Guillaume Rousse <guillaume.rousse@renater.fr> Date: Wed, 5 Dec 2018 16:49:09 +0100 Subject: [PATCH] extract organization URL from metadata --- lib/AccountManager/Metadata.pm | 9 +++++++++ t/metadata.t | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/AccountManager/Metadata.pm b/lib/AccountManager/Metadata.pm index e4524ba..e193795 100644 --- a/lib/AccountManager/Metadata.pm +++ b/lib/AccountManager/Metadata.pm @@ -186,6 +186,15 @@ sub parse { } push @{ $data->{contacts} }, $details; } + } elsif ($child->localname() eq 'Organization') { + my @urls = $child->getElementsByLocalName('OrganizationURL'); + my %urls = + map { $_->getAttribute('xml:lang') => $_->textContent() } + @urls; + $data->{organization} = + $urls{en} ? $urls{en} : + @urls ? $urls[0]->textContent() : + undef; } ## Getting X.509 certificates diff --git a/t/metadata.t b/t/metadata.t index 4415581..5a709a6 100755 --- a/t/metadata.t +++ b/t/metadata.t @@ -10,7 +10,7 @@ use Test::Exception; use AccountManager::Metadata; -plan tests => 21; +plan tests => 22; my $metadata; @@ -91,6 +91,7 @@ ok(defined $sp, 'filtered metadata extraction: defined result'); ok(ref $sp eq 'ARRAY', 'filtered metadata extraction: result type'); ok(scalar @$sp == 1, 'filtered metadata extraction: result count'); is($sp->[0]->{entityid}, 'https://filesender.ipm.ir/', 'filtered entity has expected ID'); +is($sp->[0]->{organization}, 'http://www.ipm.ir/', 'filtered entity has expected organization URL'); my $none = $metadata->parse(id => 'https://no.such.sp/'); ok(defined $none, 'filtered metadata extraction: defined result'); -- GitLab