import { Dictionary } from '@freearhey/core' import { Issue } from '../models' const FIELDS = new Dictionary({ 'Channel ID': 'channel_id', 'Channel ID (required)': 'channel_id', 'Stream URL': 'stream_url', 'Stream URL (optional)': 'stream_url', 'Stream URL (required)': 'stream_url', 'Broken Link': 'stream_url', Label: 'label', Quality: 'quality', Timeshift: 'timeshift', 'Timeshift (optional)': 'timeshift', 'Channel Name': 'channel_name', 'HTTP User-Agent': 'user_agent', 'HTTP Referrer': 'http_referrer', 'What happened to the stream?': 'reason', Reason: 'reason', Notes: 'notes', 'Notes (optional)': 'notes' }) export class IssueParser { parse(issue: { number: number; body: string; labels: { name: string }[] }): Issue { const fields = issue.body.split('###') const data = new Dictionary() fields.forEach((field: string) => { let [_label, , _value] = field.split(/\r?\n/) _label = _label ? _label.trim() : '' _value = _value ? _value.trim() : '' if (!_label || !_value) return data const id: string = FIELDS.get(_label) const value: string = _value === '_No response_' || _value === 'None' ? '' : _value if (!id) return data.set(id, value) }) const labels = issue.labels.map(label => label.name) return new Issue({ number: issue.number, labels, data }) } }