A music player that connects to your cloud/distributed storage.
1module Sources.Services.Azure.BlobParser exposing (parseErrorResponse, parseTreeResponse)
2
3import Sources.Processing exposing (Marker(..), TreeAnswer)
4import Xml.Decode exposing (..)
5
6
7
8-- TREE
9
10
11parseTreeResponse : String -> Marker -> TreeAnswer Marker
12parseTreeResponse response _ =
13 response
14 |> decodeString
15 (map2
16 (\f m -> { filePaths = f, marker = m })
17 filePathsDecoder
18 markerDecoder
19 )
20 |> Result.withDefault { filePaths = [], marker = TheEnd }
21
22
23filePathsDecoder : Decoder (List String)
24filePathsDecoder =
25 string
26 |> single
27 |> path [ "Name" ]
28 |> list
29 |> path [ "Blobs", "Blob" ]
30
31
32markerDecoder : Decoder Marker
33markerDecoder =
34 map
35 (\maybeNextMarker ->
36 case maybeNextMarker of
37 Just "" ->
38 TheEnd
39
40 Just nextMarker ->
41 InProgress nextMarker
42
43 Nothing ->
44 TheEnd
45 )
46 (maybe <| path [ "NextMarker" ] <| single string)
47
48
49
50-- ERROR
51
52
53parseErrorResponse : String -> Maybe String
54parseErrorResponse response =
55 response
56 |> decodeString errorMessagesDecoder
57 |> Result.toMaybe
58
59
60errorMessagesDecoder : Decoder String
61errorMessagesDecoder =
62 string
63 |> single
64 |> path [ "Message" ]