]> git.immae.eu Git - github/fretlink/edi-parser.git/blame - scaffolder/src/Text/Edifact/Fetcher/Composites.hs
Release code as open source
[github/fretlink/edi-parser.git] / scaffolder / src / Text / Edifact / Fetcher / Composites.hs
CommitLineData
a9d77a20
FM
1{-# LANGUAGE OverloadedStrings #-}
2
3module Text.Edifact.Fetcher.Composites
4 ( fetchComposites
5 , compositesDirectory
6 ) where
7
8import Text.Edifact.Fetcher.Commons
9import Text.Edifact.Scaffolder.Commons
10
11import Text.Edifact.Scaffolder.Composites.Specification (listSimples)
12
13import Data.List as L (nub,
14 sort)
15import Data.Text.Encoding as TE (decodeUtf8)
16import Formatting
17
18compositesDirectory :: FilePath
19compositesDirectory = "composites"
20
21fetchComposites :: ([CompositeCode], [SimpleCode]) -> Fetcher [SimpleCode]
22fetchComposites (composites, segments) =
23 let compactSimpleCodes = L.nub . L.sort . mappend segments . concat
24 in compactSimpleCodes <$> traverse (retry 3 . fetchComposite) composites
25
26fetchComposite :: CompositeCode -> Fetcher [SimpleCode]
27fetchComposite code = do
28 say ("Fetching composite " % fCompositeCode) code
29 url <- getUrl ("/trcd/trcd" % fCompositeCodeLower % ".htm") code
30 outputFile <- getOutputFile (fCompositeCodeLower % ".txt") compositesDirectory code
31 htmlToFileWithParser url TE.decodeUtf8 outputFile (snd <$> listSimples)