module Text.Yahoo.InternalRS
( fromYahooRS
, fromXmlRS ) where
import Text.XML.Light.Cursor
(Cursor, firstChild, fromContent, rights, current)
import Text.Yahoo.Internal
import Text.Yahoo.Types
buildResultRS :: Cursor -> String
buildResultRS c = case getElemCData id c of
(Right s) -> s
(Left _) -> ""
buildResultSetRS :: Cursor -> Either Error RSResultSet
buildResultSetRS c = case firstChild c of
(Just fc) -> Right $ filter (/= "") $
map (buildResultRS . fromContent) (current fc : rights fc)
Nothing -> Right []
queryValidRS :: RSQuery -> Bool
queryValidRS rsq = rsNumResults rsq >= 0 && rsNumResults rsq <= 50
fromXmlRS :: String -> Either Error RSResultSet
fromXmlRS = fromXml' buildResultSetRS
fromYahooRS :: Bool -> RSQuery -> IO (Either Error RSResultSet)
fromYahooRS = fromYahoo' fromXmlRS queryValidRS relatedBase spellingBase
relatedBase :: String
relatedBase = "http://search.yahooapis.com/WebSearchService/V1/relatedSuggestion?"
spellingBase :: String
spellingBase = "http://search.yahooapis.com/WebSearchService/V1/spellingSuggestion?"