liwenjun / elm-jsonrpc / JsonRpc

一个通用的JsonRpc-V2调用接口,帮助实现JsonRpc客户端应用。

数据结构

Http 数据结构


type alias WebData a =
Result Http.Error a

Http 返回数据定义

JsonRpc 数据结构


type Response a
    = InnerResult a
    | InnerError RpcError

JsonRpc 响应结果


type alias RpcError =
{ code : Basics.Int
, message : String
, data : Maybe String 
}

JsonRpc 返回错误格式定义


type alias RpcData a =
WebData (Response a)

基于 http 的 JsonRpc 响应结果

用于 Task 调用的 JsonRpc 数据结构


type alias TaskData a =
Task Http.Error a

Http Task 调用返回数据定义


type alias RpcTaskData a =
TaskData (Response a)

基于 http Task 调用 JsonRpc 返回结果

便于用户使用的 JsonRpc 数据结构


type Data a
    = RpcResult a
    | RpcErr RpcError
    | HttpErr Http.Error

便于处理的返回结果

JsonRpc 调用参数结构


type alias Param =
{ url : String
, token : Maybe String
, method : String
, params : List ( String
, Json.Encode.Value ) 
}

调用参数

Cmd 方式调用

call : Param -> Json.Decode.Decoder a -> (RpcData a -> msg) -> Platform.Cmd.Cmd msg

HTTP 调用方法

Task 方式调用

callTask : Param -> Json.Decode.Decoder a -> RpcTaskData a

HTTP Task调用方法

辅助函数

flatResponse : Response a -> Data a

返回结果平面化处理

flat : RpcData a -> Data a

将rpc调用的返回结果平面化处理

toResult : Data a -> Result String a

将平面化处理结果转换为Result

handleJsonResponse : Json.Decode.Decoder a -> Http.Response String -> WebData a

httpErrToString : Http.Error -> String

Http.Error转换为String

errorToString : RpcError -> String