def _parse_query(self, values, suffix): # type: (MultiDict, str) -> Union[TrackLookupQuery, FingerprintLookupQuery] index = int(suffix[1:]) if suffix else None track_gid = values.get('trackid' + suffix) if track_gid: if not is_uuid(track_gid): raise errors.InvalidUUIDError('trackid' + suffix) return TrackLookupQuery(index=index, track_gid=track_gid) else: duration = values.get(self.duration_name + suffix, type=int, default=0) if not duration: raise errors.MissingParameterError(self.duration_name + suffix) fingerprint_string = values.get('fingerprint' + suffix) if not fingerprint_string: raise errors.MissingParameterError('fingerprint' + suffix) fingerprint = decode_fingerprint( fingerprint_string.encode('ascii', 'ignore')) if not fingerprint: logger.info('Got invalid fingerprint %r', fingerprint_string) raise errors.InvalidFingerprintError() return FingerprintLookupQuery(index=index, duration=duration, fingerprint=fingerprint)
def _parse_submission(self, values, suffix): # type: (MultiDict, str) -> None p = {} # type: Dict[str, Any] p['index'] = (suffix or '')[1:] p['puid'] = values.get('puid' + suffix) if p['puid'] and not is_uuid(p['puid']): raise errors.InvalidUUIDError('puid' + suffix) p['foreignid'] = values.get('foreignid' + suffix) if p['foreignid'] and not is_foreignid(p['foreignid']): raise errors.InvalidForeignIDError('foreignid' + suffix) p['mbids'] = values.getlist('mbid' + suffix) if p['mbids'] and not all(map(is_uuid, p['mbids'])): raise errors.InvalidUUIDError('mbid' + suffix) self._parse_duration_and_format(p, values, suffix) fingerprint_string = values.get('fingerprint' + suffix) if not fingerprint_string: raise errors.MissingParameterError('fingerprint' + suffix) p['fingerprint'] = decode_fingerprint( fingerprint_string.encode('ascii', 'ignore')) if not p['fingerprint']: logger.info('Got invalid fingerprint %r', fingerprint_string) raise errors.InvalidFingerprintError() p['bitrate'] = values.get('bitrate' + suffix, type=int) or None if p['bitrate'] is not None and p['bitrate'] <= 0: raise errors.InvalidBitrateError('bitrate' + suffix) p['track'] = values.get('track' + suffix) p['artist'] = values.get('artist' + suffix) p['album'] = values.get('album' + suffix) p['album_artist'] = values.get('albumartist' + suffix) p['track_no'] = values.get('trackno' + suffix, type=int) p['disc_no'] = values.get('discno' + suffix, type=int) p['year'] = values.get('year' + suffix, type=int) self.submissions.append(p)
def parse(self, values, conn): super(LookupHandlerParams, self).parse(values, conn) self._parse_client(values, conn) self.meta = values.get('meta', type=int) self.duration = values.get('duration', type=int) if not self.duration: raise errors.MissingParameterError('duration') fingerprint_string = values.get('fingerprint') if not fingerprint_string: raise errors.MissingParameterError('fingerprint') self.fingerprint = decode_fingerprint(fingerprint_string) if not self.fingerprint: raise errors.InvalidFingerprintError()
def _parse_submission(self, values, suffix): p = {} p['puid'] = values.get('puid' + suffix) if p['puid'] and not is_uuid(p['puid']): raise errors.InvalidUUIDError('puid' + suffix) p['mbids'] = values.getlist('mbid' + suffix) if p['mbids'] and not all(map(is_uuid, p['mbids'])): raise errors.InvalidUUIDError('mbid' + suffix) self._parse_duration_and_format(p, values, suffix) fingerprint_string = values.get('fingerprint' + suffix) if not fingerprint_string: raise errors.MissingParameterError('fingerprint' + suffix) p['fingerprint'] = decode_fingerprint(fingerprint_string) if not p['fingerprint']: raise errors.InvalidFingerprintError() p['bitrate'] = values.get('bitrate' + suffix, type=int) self.submissions.append(p)
def _parse_query(self, values, suffix): p = {} p['index'] = (suffix or '')[1:] p['track_gid'] = values.get('trackid' + suffix) if p['track_gid'] and not is_uuid(p['track_gid']): raise errors.InvalidUUIDError('trackid' + suffix) if not p['track_gid']: p['duration'] = values.get(self.duration_name + suffix, type=int) if not p['duration']: raise errors.MissingParameterError(self.duration_name + suffix) fingerprint_string = values.get('fingerprint' + suffix) if not fingerprint_string: raise errors.MissingParameterError('fingerprint' + suffix) p['fingerprint'] = decode_fingerprint( fingerprint_string.encode('ascii', 'ignore')) if not p['fingerprint']: raise errors.InvalidFingerprintError() self.fingerprints.append(p)