/**Mocked data */ export default function({faker, url, options, login = faker.internet.userName()}) { //Stackoverflow api if (/^https:..api.stackexchange.com.2.2.*$/.test(url)) { //Extract user id const user_id = url.match(/[/]users[/](?\d+)/)?.groups?.id ?? NaN const pagesize = Number(url.match(/pagesize=(?\d+)/)?.groups?.pagesize) || 30 //User account if (/users[/]\d+[/][?]site=stackoverflow$/.test(url)) { console.debug(`metrics/compute/mocks > mocking stackoverflow api result > ${url}`) return ({ status:200, data:{ items:[ { badge_counts:{bronze:faker.datatype.number(500), silver:faker.datatype.number(300), gold:faker.datatype.number(100)}, accept_rate:faker.datatype.number(100), answer_count:faker.datatype.number(1000), question_count:faker.datatype.number(1000), view_count:faker.datatype.number(10000), creation_date:faker.date.past(), display_name:faker.internet.userName(), user_id, reputation:faker.datatype.number(100000), }, ], has_more:false, quota_max:300, quota_remaining:faker.datatype.number(300), }, }) } //Total metrics if (/[?]site=stackoverflow&filter=total$/.test(url)) { console.debug(`metrics/compute/mocks > mocking stackoverflow api result > ${url}`) return ({ status:200, data:{ total:faker.datatype.number(10000), }, }) } //Questions if ((/questions[?]site=stackoverflow/.test(url))||(/questions[/][\d;]+[?]site=stackoverflow/.test(url))) { console.debug(`metrics/compute/mocks > mocking stackoverflow api result > ${url}`) return ({ status:200, data:{ items:new Array(pagesize).fill(null).map(_ => ({ tags:new Array(5).fill(null).map(_ => faker.lorem.slug()), owner:{display_name:faker.internet.userName()}, is_answered:faker.datatype.boolean(), view_count:faker.datatype.number(10000), accepted_answer_id:faker.datatype.number(1000000), answer_count:faker.datatype.number(100), score:faker.datatype.number(1000), creation_date:faker.time.recent(), down_vote_count:faker.datatype.number(1000), up_vote_count:faker.datatype.number(1000), comment_count:faker.datatype.number(1000), favorite_count:faker.datatype.number(1000), title:faker.lorem.sentence(), body_markdown:faker.lorem.paragraphs(), link:faker.internet.url(), question_id:faker.datatype.number(1000000), })), has_more:false, quota_max:300, quota_remaining:faker.datatype.number(300), }, }) } //Answers if ((/answers[?]site=stackoverflow/.test(url))||(/answers[/][\d;]+[?]site=stackoverflow/.test(url))) { console.debug(`metrics/compute/mocks > mocking stackoverflow api result > ${url}`) return ({ status:200, data:{ items:new Array(pagesize).fill(null).map(_ => ({ owner:{display_name:faker.internet.userName()}, link:faker.internet.url(), is_accepted:faker.datatype.boolean(), score:faker.datatype.number(1000), down_vote_count:faker.datatype.number(1000), up_vote_count:faker.datatype.number(1000), comment_count:faker.datatype.number(1000), creation_date:faker.time.recent(), question_id:faker.datatype.number(1000000), body_markdown:faker.lorem.paragraphs(), answer_id:faker.datatype.number(1000000), })), has_more:false, quota_max:300, quota_remaining:faker.datatype.number(300), }, }) } } }