diff --git a/src/serviceproviders.js b/src/serviceproviders.js index 50ee5a2..157b952 100644 --- a/src/serviceproviders.js +++ b/src/serviceproviders.js @@ -17,6 +17,7 @@ const list = [ 'dns', 'xmpp', 'twitter', + 'reddit', 'hackernews', 'lobsters', 'devto', @@ -26,6 +27,7 @@ const data = { dns: require('./serviceproviders/dns'), xmpp: require('./serviceproviders/xmpp'), twitter: require('./serviceproviders/twitter'), + reddit: require('./serviceproviders/reddit'), hackernews: require('./serviceproviders/hackernews'), lobsters: require('./serviceproviders/lobsters'), devto: require('./serviceproviders/devto'), diff --git a/src/serviceproviders/reddit.js b/src/serviceproviders/reddit.js new file mode 100644 index 0000000..fc90439 --- /dev/null +++ b/src/serviceproviders/reddit.js @@ -0,0 +1,72 @@ +/* +Copyright 2020 Yarmo Mackenbach + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +const reURI = /^https:\/\/(?:www\.)?reddit\.com\/user\/(.*)\/comments\/(.*)\/(.*)\/?/ + +const processURI = (uri, opts) => { + if (!opts) { opts = {} } + const match = uri.match(reURI) + + return { + serviceprovider: { + type: 'web', + name: 'reddit' + }, + profile: { + display: match[1], + uri: `https://www.reddit.com/user/${match[1]}` + }, + proof: { + uri: uri, + fetch: `https://www.reddit.com/user/${match[1]}/comments/${match[2]}.json`, + useProxy: true, + format: 'json' + }, + claim: { + fingerprint: null, + format: 'message', + path: ['data', 'children', 'data', 'selftext'], + relation: 'contains' + }, + qr: null + } +} + +const tests = [ + { + uri: 'https://www.reddit.com/user/Alice/comments/123456/post', + shouldMatch: true + }, + { + uri: 'https://www.reddit.com/user/Alice/comments/123456/post/', + shouldMatch: true + }, + { + uri: 'https://reddit.com/user/Alice/comments/123456/post', + shouldMatch: true + }, + { + uri: 'https://reddit.com/user/Alice/comments/123456/post/', + shouldMatch: true + }, + { + uri: 'https://domain.org/user/Alice/comments/123456/post', + shouldMatch: false + } +] + +exports.reURI = reURI +exports.processURI = processURI +exports.tests = tests