Created
February 24, 2018 13:44
-
-
Save grimrose/6325622985de0c3ceabb8d2678ce08e6 to your computer and use it in GitHub Desktop.
Elmなんか作ろう会 #6 https://elm-jp.connpass.com/event/79821/ #moku2_elm
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Main exposing (..) | |
import Html exposing (Html, div, h1, h2, img, p, text) | |
--import Html.Attributes exposing (src) | |
import Http exposing (Request) | |
import Json.Decode as Decode | |
--import Json.Encode as Encode | |
---- MODEL ---- | |
type alias UserId = String | |
type alias QiitaUser = | |
{ | |
id: UserId | |
} | |
type alias Model = | |
{ | |
id: UserId | |
} | |
init : ( Model, Cmd Msg ) | |
init = | |
({ id = "ここにidが入るよ" }, getQiitaUser) | |
---- UPDATE ---- | |
type Msg | |
= GetQiitaUserResponse (Result Http.Error QiitaUser) | |
update : Msg -> Model -> ( Model, Cmd Msg ) | |
update msg model = | |
case msg of | |
GetQiitaUserResponse res -> | |
let | |
usr = case res of | |
Ok u -> u | |
Err _ -> Debug.crash "http error" | |
id = usr.id | |
in | |
( { model | id = id }, Cmd.none ) | |
decodeQiitaUser : Decode.Decoder QiitaUser | |
decodeQiitaUser = | |
Decode.map QiitaUser | |
(Decode.at ["id"] Decode.string) | |
qiitaApiV2Endpoint: String | |
qiitaApiV2Endpoint = "https://qiita.com/api/v2" | |
getQiitaUser: Cmd Msg | |
getQiitaUser = | |
let | |
url = qiitaApiV2Endpoint ++ "/users/grimrose@github" | |
in | |
Http.send GetQiitaUserResponse <| (Http.get url decodeQiitaUser) | |
---- VIEW ---- | |
view : Model -> Html Msg | |
view model = | |
div [] | |
[ | |
h1 [] [ text (toString model) ] | |
] | |
---- PROGRAM ---- | |
main : Program Never Model Msg | |
main = | |
Html.program | |
{ view = view | |
, init = init | |
, update = update | |
, subscriptions = always Sub.none | |
} | |
{-- | |
-- HTTP Reqeust (認証なし) | |
-- http://package.elm-lang.org/packages/elm-lang/core/5.1.1/Json-Decode | |
decodeHoge : Decode.Decoder Hoge | |
decodeHoge = | |
Decode.map3 Hoge | |
(Decode.at [ "id" ] Decode.int) | |
(Decode.at [ "name" ] Decode.string) | |
(Decode.at [ "job" ] Decode.string) | |
decodeHogeList : Decode.Decoder (List Hoge) | |
decodeHogeList = | |
Decode.list decodeHoge | |
getHoge = | |
let | |
url = qiitaDomain ++ "/users/ababup1192" | |
in | |
Http.send msg <| (Http.get url decodeHogeList) | |
qiitaDomain = | |
"https://qiita.com/api/v2/" | |
authHeader = | |
Http.header "Authorization" | |
"Bearer YOUR_TOKEN" | |
-- HTTP Request (認証あり) | |
getAuthHoge : Cmd Msg | |
getAuthHoge = | |
let | |
url = | |
qiitaDomain ++ "/users/ababup1192" | |
-- POSTする必要がある場合には、jsonを生成してください。 | |
-- jsonBody = | |
-- Http.jsonBody <| json | |
request = | |
Http.request | |
{ method = "GET" | |
, headers = [ authHeader ] | |
, url = url | |
-- , body = jsonBody | |
, expect = Http.expectStringResponse (\_ -> Ok ()) | |
, timeout = Nothing | |
, withCredentials = False | |
} | |
in | |
-- http://package.elm-lang.org/packages/elm-lang/http/1.0.0/Http#send | |
-- http://package.elm-lang.org/packages/elm-lang/core/latest/Result | |
-- Cmd Msg (Result Http.Error String) | |
Http.send msg request | |
--} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment