-
Notifications
You must be signed in to change notification settings - Fork 0
/
TestApp.elm
79 lines (60 loc) · 1.82 KB
/
TestApp.elm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
module TestApp exposing (main)
import Time
import Task
import Xml.Decode
import PAAPI
type alias Model =
{ creds : PAAPI.Credentials
, tag : PAAPI.AssociateTag
}
type Msg
= GetRes (Result PAAPI.Error (List String))
| PostRes (Result PAAPI.Error (List String))
init : Model -> ( Model, Cmd Msg )
init flags =
( flags
, tryGetCmd flags
)
tryGetCmd : Model -> Cmd Msg
tryGetCmd { creds, tag } =
PAAPI.doGet PAAPI.JP
creds
tag
(Xml.Decode.path [ "Items", "Item", "ASIN" ] (Xml.Decode.list Xml.Decode.string))
[ ( "Operation", "ItemSearch" )
, ( "SearchIndex", "Books" )
, ( "Keywords", "われはロボット" )
]
|> Task.attempt GetRes
tryPostCmd : Model -> Cmd Msg
tryPostCmd { creds, tag } =
PAAPI.doPost PAAPI.JP
creds
tag
(Xml.Decode.path [ "Items", "Item", "ASIN" ] (Xml.Decode.list Xml.Decode.string))
[ ( "Operation", "ItemSearch" )
, ( "SearchIndex", "Books" )
, ( "Keywords", "われはロボット" )
]
|> Task.attempt PostRes
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
GetRes (Ok asins) ->
Debug.log "GET request successful" asins |> always ( model, tryPostCmd model )
PostRes (Ok asins) ->
Debug.log "POST request successful" asins |> always ( model, Cmd.none )
GetRes (Err PAAPI.RateLimit) ->
( model, tryGetCmd model )
PostRes (Err PAAPI.RateLimit) ->
( model, tryPostCmd model )
_ ->
-- Unexpectedly failed
Debug.crash "Request unexpectedly failed!"
main : Program Model Model Msg
main =
Platform.programWithFlags
{ init = init
, update = update
, subscriptions = always Sub.none
}