module Text.Yahoo.Types where
import Network.HTTP (urlEncode)
import Text.XML.Light.Cursor
import Data.Maybe
type URL = String
type MIME = String
type UserString = String
type Date = String
type Size = Integer
type Error = (String, Maybe Cursor)
data ResultSet = ResultSet
{ totalResultsAvailable :: Integer
, totalResultsReturned :: Int
, firstResultPosition :: Integer
, results :: [Result] }
deriving (Eq,Show)
data Result = Result
{ title :: String
, summary :: String
, url :: URL
, clickUrl :: URL
, mimeType :: Maybe MIME
, modDate :: Maybe Date
, cache :: Maybe (URL,Size) }
deriving (Eq,Show)
type RSResultSet = [String]
data Query = Query
{ appid :: UserString
, query :: UserString
, context :: Maybe UserString
, region :: Region
, ty :: Type
, numResults :: Int
, start :: Int
, format :: Format
, adult_ok :: Bool
, similar_ok :: Bool
, language :: Language
, country :: Country
, site :: Maybe [UserString]
, subscription :: Maybe Subscription
, license :: License
}
data RSQuery = RSQuery
{ rsappid :: UserString
, rsquery :: UserString
, rsNumResults :: Int
}
sanitize :: UserString -> String
sanitize = urlEncode
instance Show Query where
showsPrec _ q = showString "appid=" . showString (sanitize (appid q))
. showString "&query=" . showString (sanitize (query q))
. showString (maybe "" (("&context=" ++) . sanitize) (context q))
. showString "®ion=" . (showString . show) (region q)
. showString "&type=" . (showString . show) (ty q)
. showString "&results=" . (showString . show) (numResults q)
. showString "&start=" . (showString . show) (start q)
. showString "&format=" . (showString . show) (format q)
. showString (if (adult_ok q) then "&adult_ok=1" else "")
. showString (if (similar_ok q) then "&similar_ok=1" else "")
. showString "&language=" . (showString . show) (language q)
. showString "&country=" . (showString . show) (country q)
. showString (maybe "" (unwords . (map (("&site=" ++) . sanitize))) (site q))
. showString "&subscription=" . showString ((maybe "" show) (subscription q))
. showString "&license=" . (showString . show) (license q)
instance Show RSQuery where
showsPrec _ q = showString "appid=" . showString (sanitize (rsappid q))
. showString "&query=" . showString (sanitize (rsquery q))
. showString "&results=" . (showString . show) (rsNumResults q)
data Region =
RegionDefault
| RegionArgentina
| RegionAustralia
| RegionAustria
| RegionBrazil
| RegionCanada
| RegionCatalan
| RegionDenmark
| RegionFinland
| RegionFrance
| RegionGermany
| RegionIndia
| RegionIndonesia
| RegionItaly
| RegionMalaysia
| RegionMexico
| RegionNetherlands
| RegionNorway
| RegionPhillipines
| RegionRussianFederation
| RegionSingapore
| RegionSpain
| RegionSweden
| RegionSwitzerland
| RegionThailand
| RegionUnitedKingdomIreland
| RegionUnitedStates
instance Show Region where
showsPrec _ RegionDefault = showString ""
showsPrec _ RegionArgentina = showString "ar"
showsPrec _ RegionAustralia = showString "au"
showsPrec _ RegionAustria = showString "at"
showsPrec _ RegionBrazil = showString "br"
showsPrec _ RegionCanada = showString "ca"
showsPrec _ RegionCatalan = showString "ct"
showsPrec _ RegionDenmark = showString "dk"
showsPrec _ RegionFinland = showString "fi"
showsPrec _ RegionFrance = showString "fr"
showsPrec _ RegionGermany = showString "de"
showsPrec _ RegionIndia = showString "in"
showsPrec _ RegionIndonesia = showString "id"
showsPrec _ RegionItaly = showString "it"
showsPrec _ RegionMalaysia = showString "my"
showsPrec _ RegionMexico = showString "mx"
showsPrec _ RegionNetherlands = showString "nl"
showsPrec _ RegionNorway = showString "no"
showsPrec _ RegionPhillipines = showString "ph"
showsPrec _ RegionRussianFederation = showString "ru"
showsPrec _ RegionSingapore = showString "sg"
showsPrec _ RegionSpain = showString "es"
showsPrec _ RegionSweden = showString "se"
showsPrec _ RegionSwitzerland = showString "ch"
showsPrec _ RegionThailand = showString "th"
showsPrec _ RegionUnitedKingdomIreland = showString "uk"
showsPrec _ RegionUnitedStates = showString "us"
data Type =
TypeDefault
| TypeAll
| TypeAny
| TypePhrase
instance Show Type where
showsPrec _ TypeDefault = showString ""
showsPrec _ TypeAll = showString "all"
showsPrec _ TypeAny = showString "any"
showsPrec _ TypePhrase = showString "phrase"
data Format =
FormatDefault
| FormatAny
| FormatHtml
| FormatMsWord
| FormatPdf
| FormatPpt
| FormatRss
| FormatTxt
| FormatXls
instance Show Format where
showsPrec _ FormatDefault = showString ""
showsPrec _ FormatAny = showString "any"
showsPrec _ FormatHtml = showString "html"
showsPrec _ FormatMsWord = showString "msword"
showsPrec _ FormatPdf = showString "pdf"
showsPrec _ FormatPpt = showString "ppt"
showsPrec _ FormatRss = showString "rss"
showsPrec _ FormatTxt = showString "txt"
showsPrec _ FormatXls = showString "xls"
data Language =
LanguageDefault
| LanguageArabic
| LanguageBulgarian
| LanguageCatalan
| LanguageChineseSimplified
| LanguageChineseTraditional
| LanguageCroatian
| LanguageCzech
| LanguageDanish
| LanguageDutch
| LanguageEnglish
| LanguageEstonian
| LanguageFinnish
| LanguageFrench
| LanguageGerman
| LanguageGreek
| LanguageHebrew
| LanguageHungarian
| LanguageIcelandic
| LanguageIndonesian
| LanguageItalian
| LanguageJapanese
| LanguageKorean
| LanguageLatvian
| LanguageLithuanian
| LanguageNorwegian
| LanguagePersian
| LanguagePolish
| LanguagePortuguese
| LanguageRomanian
| LanguageRussian
| LanguageSlovak
| LanguageSerbian
| LanguageSlovenian
| LanguageSpanish
| LanguageSwedish
| LanguageThai
| LanguageTurkish
instance Show Language where
showsPrec _ LanguageDefault = showString ""
showsPrec _ LanguageArabic = showString "ar"
showsPrec _ LanguageBulgarian = showString "bg"
showsPrec _ LanguageCatalan = showString "ca"
showsPrec _ LanguageChineseSimplified = showString "szh"
showsPrec _ LanguageChineseTraditional = showString "tzh"
showsPrec _ LanguageCroatian = showString "hr"
showsPrec _ LanguageCzech = showString "cs"
showsPrec _ LanguageDanish = showString "da"
showsPrec _ LanguageDutch = showString "nl"
showsPrec _ LanguageEnglish = showString "en"
showsPrec _ LanguageEstonian = showString "et"
showsPrec _ LanguageFinnish = showString "fi"
showsPrec _ LanguageFrench = showString "fr"
showsPrec _ LanguageGerman = showString "de"
showsPrec _ LanguageGreek = showString "el"
showsPrec _ LanguageHebrew = showString "he"
showsPrec _ LanguageHungarian = showString "hu"
showsPrec _ LanguageIcelandic = showString "is"
showsPrec _ LanguageIndonesian = showString "id"
showsPrec _ LanguageItalian = showString "it"
showsPrec _ LanguageJapanese = showString "ja"
showsPrec _ LanguageKorean = showString "ko"
showsPrec _ LanguageLatvian = showString "lv"
showsPrec _ LanguageLithuanian = showString "lt"
showsPrec _ LanguageNorwegian = showString "no"
showsPrec _ LanguagePersian = showString "fa"
showsPrec _ LanguagePolish = showString "pl"
showsPrec _ LanguagePortuguese = showString "pt"
showsPrec _ LanguageRomanian = showString "ro"
showsPrec _ LanguageRussian = showString "ru"
showsPrec _ LanguageSlovak = showString "sk"
showsPrec _ LanguageSerbian = showString "sr"
showsPrec _ LanguageSlovenian = showString "sl"
showsPrec _ LanguageSpanish = showString "es"
showsPrec _ LanguageSwedish = showString "sv"
showsPrec _ LanguageThai = showString "th"
showsPrec _ LanguageTurkish = showString "tr"
data Country =
CountryDefault
| CountryArgentina
| CountryAustralia
| CountryAustria
| CountryBelgium
| CountryBrazil
| CountryCanada
| CountryChina
| CountryCzechoslovakia
| CountryDenmark
| CountryFinland
| CountryFrance
| CountryGermany
| CountryItaly
| CountryJapan
| CountryKorea
| CountryNetherlands
| CountryNorway
| CountryPoland
| CountryRussianFederation
| CountrySpain
| CountrySweden
| CountrySwitzerland
| CountryTaiwan
| CountryUnitedKingdom
| CountryUnitedStates
instance Show Country where
showsPrec _ CountryDefault = showString ""
showsPrec _ CountryArgentina = showString "ar"
showsPrec _ CountryAustralia = showString "au"
showsPrec _ CountryAustria = showString "at"
showsPrec _ CountryBelgium = showString "be"
showsPrec _ CountryBrazil = showString "br"
showsPrec _ CountryCanada = showString "ca"
showsPrec _ CountryChina = showString "cn"
showsPrec _ CountryCzechoslovakia = showString "cz"
showsPrec _ CountryDenmark = showString "dk"
showsPrec _ CountryFinland = showString "fi"
showsPrec _ CountryFrance = showString "fr"
showsPrec _ CountryGermany = showString "de"
showsPrec _ CountryItaly = showString "it"
showsPrec _ CountryJapan = showString "jp"
showsPrec _ CountryKorea = showString "kr"
showsPrec _ CountryNetherlands = showString "nl"
showsPrec _ CountryNorway = showString "no"
showsPrec _ CountryPoland = showString "pl"
showsPrec _ CountryRussianFederation = showString "ru"
showsPrec _ CountrySpain = showString "es"
showsPrec _ CountrySweden = showString "se"
showsPrec _ CountrySwitzerland = showString "ch"
showsPrec _ CountryTaiwan = showString "tw"
showsPrec _ CountryUnitedKingdom = showString "uk"
showsPrec _ CountryUnitedStates = showString "us"
data Subscription =
SubscriptionConsumerReports
| SubscriptionFT
| SubscriptionForresterResearch
| SubscriptionIEEEPublications
| SubscriptionNewEnglandJournalOfMedicine
| SubscriptionTheStreet
| SubscriptionWallStreetJournal
instance Show Subscription where
showsPrec _ SubscriptionConsumerReports = showString "cr"
showsPrec _ SubscriptionFT = showString "ft"
showsPrec _ SubscriptionForresterResearch = showString "forrester"
showsPrec _ SubscriptionIEEEPublications = showString "ieee"
showsPrec _ SubscriptionNewEnglandJournalOfMedicine = showString "nejm"
showsPrec _ SubscriptionTheStreet = showString "thestreet"
showsPrec _ SubscriptionWallStreetJournal = showString "wsj"
data License =
LicenseDefault
| LicenseAny
| LicenseCCAny
| LicenseCCommercial
| LicenseCCModifiable
instance Show License where
showsPrec _ LicenseDefault = showString ""
showsPrec _ LicenseAny = showString "any"
showsPrec _ LicenseCCAny = showString "cc_any"
showsPrec _ LicenseCCommercial = showString "cc_commercial"
showsPrec _ LicenseCCModifiable = showString "cc_modifiable"