scrobbleFromObject method

Future<ScrobbleResponse> scrobbleFromObject({
  1. required Scrobble scrobble,
})

Implementation

Future<ScrobbleResponse> scrobbleFromObject({
  required Scrobble scrobble,
}) async {
  if (!_api.isAuth) {
    return Future.error(
      ScrobblenautException(
        description: "You can't use this method unless you Authenticate.",
      ),
    );
  }

  final parameters = {
    'track': scrobble.track,
    'album': scrobble.album,
    'artist': scrobble.artist,
    'albumArtist': scrobble.albumArtist,
    'trackNumber': scrobble.trackNumber,
    'duration': scrobble.duration?.inSeconds,
    'timestamp': LastFMValueNormalizer.timestampToSecondsSinceEpoch(
      scrobble.timestamp,
    ),
    'context': scrobble.context,
    'streamId': scrobble.streamId,
    'chosenByUser': (scrobble.chosenByUser == null
        ? null
        : scrobble.chosenByUser!
        ? 1
        : 0),
    'mbid': scrobble.mbid,
  };

  final request = Request(
    api: _api,
    method: 'track.scrobble',
    parameters: parameters,
  )..signRequest();

  final response = (await request.send(mode: RequestMode.POST));

  return ScrobbleResponse.parse(response);
}