{-# LANGUAGE FlexibleInstances, OverlappingInstances, TypeSynonymInstances #-}moduleNetwork.Lastfm.TypeswhereimportControl.Monad.Error(Error)importData.List(intercalate)newtypeSecret=SecretStringderivingShow(#)::Argumenta=>a->(String,String)(#)x=(keyx,valuex)classArgumentawherekey::a->Stringvalue::a->StringinstanceArgumenta=>Argument(Maybea)wherekey=maybe""key;value=maybe""valueinstanceArgumenta=>Argument[a]wherekey(a:_)=keya++"s"key[]=""value=intercalate",".mapvaluenewtypeAlbum=AlbumStringnewtypeAlbumArtist=AlbumArtistStringnewtypeAPIKey=APIKeyStringnewtypeArtist=ArtistStringnewtypeAuthToken=AuthTokenStringnewtypeChosenByUser=ChosenByUserStringnewtypeContext=ContextStringnewtypeCountry=CountryStringnewtypeDescription=DescriptionStringnewtypeGroup=GroupStringnewtypeLanguage=LanguageStringnewtypeLatitude=LatitudeStringnewtypeLocation=LocationStringnewtypeLongitude=LongitudeStringnewtypeMbid=MbidStringnewtypeMessage=MessageStringnewtypeMethod=MethodStringnewtypeMetro=MetroStringnewtypeName=NameStringnewtypeRecipient=RecipientStringnewtypeSessionKey=SessionKeyStringnewtypeStation=StationStringnewtypeStreamId=StreamIdStringnewtypeTag=TagStringnewtypeTaggingType=TaggingTypeStringnewtypeTitle=TitleStringnewtypeToken=TokenStringnewtypeTrack=TrackStringnewtypeUser=UserStringnewtypeUsername=UsernameStringnewtypeVenuename=VenuenameStringinstanceArgumentAlbumwherekey=const"album";value(Albuma)=ainstanceArgumentAlbumArtistwherekey=const"albumartist";value(AlbumArtista)=ainstanceArgumentAPIKeywherekey=const"api_key";value(APIKeya)=ainstanceArgumentArtistwherekey=const"artist";value(Artista)=ainstanceArgumentAuthTokenwherekey=const"authToken";value(AuthTokena)=ainstanceArgumentChosenByUserwherekey=const"chosenByUser";value(ChosenByUsera)=ainstanceArgumentContextwherekey=const"context";value(Contexta)=ainstanceArgumentCountrywherekey=const"country";value(Countrya)=ainstanceArgumentDescriptionwherekey=const"description";value(Descriptiona)=ainstanceArgumentGroupwherekey=const"group";value(Groupa)=ainstanceArgumentLanguagewherekey=const"lang";value(Languagea)=ainstanceArgumentLatitudewherekey=const"lat";value(Latitudea)=ainstanceArgumentLocationwherekey=const"location";value(Locationa)=ainstanceArgumentLongitudewherekey=const"long";value(Longitudea)=ainstanceArgumentMbidwherekey=const"mbid";value(Mbida)=ainstanceArgumentMessagewherekey=const"message";value(Messagea)=ainstanceArgumentMethodwherekey=const"method";value(Methoda)=ainstanceArgumentMetrowherekey=const"metro";value(Metroa)=ainstanceArgumentNamewherekey=const"name";value(Namea)=ainstanceArgumentRecipientwherekey=const"recipient";value(Recipienta)=ainstanceArgumentSessionKeywherekey=const"sk";value(SessionKeya)=ainstanceArgumentStationwherekey=const"station";value(Stationa)=ainstanceArgumentStreamIdwherekey=const"streamId";value(StreamIda)=ainstanceArgumentTagwherekey=const"tag";value(Taga)=ainstanceArgumentTaggingTypewherekey=const"taggingtype";value(TaggingTypea)=ainstanceArgumentTitlewherekey=const"title";value(Titlea)=ainstanceArgumentTokenwherekey=const"token";value(Tokena)=ainstanceArgumentTrackwherekey=const"track";value(Tracka)=ainstanceArgumentUserwherekey=const"user";value(Usera)=ainstanceArgumentUsernamewherekey=const"username";value(Usernamea)=ainstanceArgumentVenuenamewherekey=const"venue";value(Venuenamea)=aboolToString::Bool->StringboolToStringTrue="1"boolToStringFalse="0"newtypeAutocorrect=AutocorrectBoolnewtypeBuyLinks=BuyLinksBoolnewtypeDiscovery=DiscoveryBoolnewtypeFestivalsOnly=FestivalsOnlyBoolnewtypePublic=PublicBoolnewtypeRecentTracks=RecentTracksBoolnewtypeRTP=RTPBoolnewtypeUseRecs=UseRecsBoolinstanceArgumentAutocorrectwherekey=const"autocorrect";value(Autocorrecta)=boolToStringainstanceArgumentBuyLinkswherekey=const"buylinks";value(BuyLinksa)=boolToStringainstanceArgumentDiscoverywherekey=const"discovery";value(Discoverya)=boolToStringainstanceArgumentFestivalsOnlywherekey=const"festivalsonly";value(FestivalsOnlya)=boolToStringainstanceArgumentPublicwherekey=const"public";value(Publica)=boolToStringainstanceArgumentRecentTrackswherekey=const"recenttracks";value(RecentTracksa)=boolToStringainstanceArgumentRTPwherekey=const"rtp";value(RTPa)=boolToStringainstanceArgumentUseRecswherekey=const"userecs";value(UseRecsa)=boolToStringanewtypeDistance=DistanceIntnewtypeDuration=DurationIntnewtypeEvent=EventIntnewtypeLimit=LimitIntnewtypePage=PageIntnewtypePlaylist=PlaylistIntnewtypeTrackNumber=TrackNumberIntnewtypeVenue=VenueIntinstanceArgumentDistancewherekey=const"distance";value(Distancea)=showainstanceArgumentDurationwherekey=const"duration";value(Durationa)=showainstanceArgumentEventwherekey=const"event";value(Eventa)=showainstanceArgumentLimitwherekey=const"limit";value(Limita)=showainstanceArgumentPagewherekey=const"page";value(Pagea)=showainstanceArgumentPlaylistwherekey=const"playlistID";value(Playlista)=showainstanceArgumentTrackNumberwherekey=const"tracknumber";value(TrackNumbera)=showainstanceArgumentVenuewherekey=const"venue";value(Venuea)=showanewtypeEnd=EndIntegernewtypeEndTimestamp=EndTimestampIntegernewtypeFingerprint=FingerprintIntegernewtypeFrom=FromIntegernewtypeStart=StartIntegernewtypeStartTimestamp=StartTimestampIntegernewtypeTimestamp=TimestampIntegernewtypeTo=ToIntegerinstanceArgumentEndwherekey=const"end";value(Enda)=showainstanceArgumentEndTimestampwherekey=const"endTimestamp";value(EndTimestampa)=showainstanceArgumentFingerprintwherekey=const"fingerprintid";value(Fingerprinta)=showainstanceArgumentFromwherekey=const"from";value(Froma)=showainstanceArgumentStartwherekey=const"start";value(Starta)=showainstanceArgumentStartTimestampwherekey=const"startTimestamp";value(StartTimestampa)=showainstanceArgumentTimestampwherekey=const"timestamp";value(Timestampa)=showainstanceArgumentTowherekey=const"to";value(Toa)=showadataBitrate=B64|B128instanceArgumentBitratewherekey=const"bitrate"valueB64="64"valueB128="128"dataMultiplier=M1|M2instanceArgumentMultiplierwherekey=const"speed_multiplier"valueM1="1.0"valueM2="2.0"dataOrder=Popularity|DateAddedinstanceArgumentOrderwherekey=const"order"valuePopularity="popularity"valueDateAdded="dateadded"dataStatus=Yes|Maybe|NoinstanceArgumentStatuswherekey=const"status"valueYes="0"valueMaybe="1"valueNo="2"dataValue=ValueUserUser|ValueArtists[Artist]instanceShowValuewhereshow(ValueUser_)="user"show(ValueArtists_)="artists"instanceArgumentValuewherekey=const"value"value(ValueUseru)=valueuvalue(ValueArtistsas)=valueasdataPeriod=Week|Quater|HalfYear|Year|OverallinstanceArgumentPeriodwherekey=const"period"valueWeek="7day"valueQuater="3month"valueHalfYear="6month"valueYear="12month"valueOverall="overall"dataAPIError=DoesntExist|InvalidService|InvalidMethod|AuthenticationFailed|InvalidFormat|InvalidParameters|InvalidResource|OperationFailed|InvalidSessionKey|InvalidAPIKey|ServiceOffline|SubscribersOnly|InvalidMethodSignature|TokenHasNotAuthorized|NotForStreaming|TemporaryUnavailable|LoginRequired|TrialExpired|DoesntExistAgain|NotEnoughContent|NotEnoughMembers|NotEnoughFans|NotEnoughNeighbours|NoPeakRadio|RadioNotFound|SuspendedAPIKey|Deprecated|RateLimitExceededderiving(Enum)instanceShowAPIErrorwhereshowDoesntExist="DoesntExist: This error does not exist"showInvalidService="InvalidService: This service does not exist"showInvalidMethod="InvalidMethod: No method with that name in this package"showAuthenticationFailed="AuthenticationFailed: You do not have permissions to access the service"showInvalidFormat="InvalidFormat: This service doesn't exist in that format"showInvalidParameters="InvalidParameters: Your request is missing a required parameter"showInvalidResource="InvalidResource: Invalid resource specified"showOperationFailed="OperationFailed: Something else went wrong"showInvalidSessionKey="InvalidSessionKey: Please re-authenticate"showInvalidAPIKey="InvalidAPIKey: You must be granted a valid key by last.fm"showServiceOffline="ServiceOffline: This service is temporarily offline. Try again later."showSubscribersOnly="SubscribersOnly : This station is only available to paid last.fm subscribers"showInvalidMethodSignature="InvalidMethodSignature: Invalid method signature supplied"showTokenHasNotAuthorized="TokenHasNotAuthorized: This token has not been authorized"showNotForStreaming="NotForStreaming: This item is not available for streaming."showTemporaryUnavailable="TemporaryUnavailable: The service is temporarily unavailable, please try again."showLoginRequired="LoginRequired: Login: User requires to be logged in"showTrialExpired="TrialExpired: This user has no free radio plays left. Subscription required."showDoesntExistAgain="DoesntExistAgain: This error does not exist"showNotEnoughContent="NotEnoughContent: There is not enough content to play this station"showNotEnoughMembers="NotEnoughMembers: This group does not have enough members for radio"showNotEnoughFans="NotEnoughFans: This artist does not have enough fans for for radio"showNotEnoughNeighbours="NotEnoughNeighbours: There are not enough neighbours for radio"showNoPeakRadio="NoPeakRadio: This user is not allowed to listen to radio during peak usage"showRadioNotFound="RadioNotFound: Radio station not found"showSuspendedAPIKey="SuspendedAPIKey: Access for your account has been suspended, please contact Last.fm"showDeprecated="Deprecated: This type of request is no longer supported"showRateLimitExceeded="RateLimitExceeded: Your IP has made too many requests in a short period"-- Various Lastfm errors.dataLastfmError=LastfmAPIErrorAPIError-- ^ Internal Lastfm errors|WrapperCallErrorStringString-- ^ Wrapper errorsderivingShowinstanceErrorLastfmError