/* Copyright (C) 2020 Yarmo Mackenbach This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see . */ const validUrl = require('valid-url') const { serviceprovidersList, serviceproviders } = require('./serviceproviders') const matchSp = (uri) => { let matches = [], sp serviceprovidersList.forEach((spName, i) => { sp = serviceproviders[spName] if (sp.reURI.test(uri)) { matches.push(sp.processURI(uri)) } }) return matches } const verify = (uri, fingerprint, opts) => { if (!opts) { opts = {} } if (!validUrl.isUri(uri)) { throw new Error('Not a valid URI') } const spMatches = matchSp(uri) if ('returnMatchesOnly' in opts && opts.returnMatchesOnly) { return spMatches } } exports.verify = verify exports.serviceproviders = serviceproviders exports.serviceprovidersList = serviceprovidersList