JSON-RPC on APIKit

JSON-RPC on APIKit

8889da6a67db3667b0694d993c9a962c?s=128

Yosuke Ishikawa

August 31, 2016
Tweet

Transcript

  1. 2.
  2. 4.

    l e t r e q u e s t

    = P o s t T w e e t R e q u e s t ( t e x t : " H e l l o , W o r l d . " ) S e s s i o n . s e n d R e q u e s t ( r e q u e s t ) { r e s u l t i n s w i t c h r e s u l t { c a s e . S u c c e s s ( l e t t w e e t / * i s T w e e t * / ) : p r i n t ( " \ ( t w e e t . s c r e e n N a m e ) : \ ( t w e e t . t e x t ) " ) c a s e . F a i l u r e ( l e t e r r o r ) : . . . } }
  3. 5.

    l e t r e q u e s t

    = G e t T i m e l i n e R e q u e s t ( ) S e s s i o n . s e n d R e q u e s t ( r e q u e s t ) { r e s u l t i n s w i t c h r e s u l t { c a s e . S u c c e s s ( l e t t w e e t s / * i s [ T w e e t ] * / ) : . . . c a s e . F a i l u r e ( l e t e r r o r ) : . . . } }
  4. 6.

    p r o t o c o l R e

    q u e s t T y p e { a s s o c i a t e d t y p e R e s p o n s e . . . } c l a s s S e s s i o n { f u n c s e n d R e q u e s t < R e q u e s t : R e q u e s t T y p e > ( r e q u e s t : R e q u e s t , h a n d l e r : R e s u l t < R e q u e s t . R e s p o n s e , E r r o r > ) . . . }
  5. 8.

    リクエスト { " i d " : 1 , "

    j s o n r p c " : " 2 . 0 " , " m e t h o d " : " s u b t r a c t " , " p a r a m s " : [ 4 2 , 2 3 ] }
  6. 9.

    レスポンス { " i d " : 1 , "

    j s o n r p c " : " 2 . 0 " , " r e s u l t " : 1 9 }
  7. 11.

    リクエスト [ { " i d " : 1 ,

    " j s o n r p c " : " 2 . 0 " , " m e t h o d " : " f o o " , " p a r a m s " : { . . . } } , { " i d " : 2 , " j s o n r p c " : " 2 . 0 " , " m e t h o d " : " b a r " , " p a r a m s " : { . . . } } ]
  8. 12.

    レスポンス [ { " i d " : 1 ,

    " j s o n r p c " : " 2 . 0 " , " r e s u l t " : { . . . } } , { " i d " : 2 , " j s o n r p c " : " 2 . 0 " , " r e s u l t " : { . . . } } ]
  9. 13.
  10. 17.
  11. 18.

    l e t b a t c h R e

    q u e s t = B a t c h R e q u e s t ( G e t B a n n e r R e q u e s t ( i d : 1 ) , G e t P o s t s R e q u e s t ( i d : 1 , c o o r d i n a t e : c o o r d i n a t e ) , G e t A d d r e s s R e q u e s t ( c o o r d i n a t e : c o o r d i n a t e ) ) S e s s i o n . s e n d R e q u e s t ( b a t c h R e q u e s t ) { r e s u l t i n s w i t c h r e s u l t { c a s e . S u c c e s s ( l e t p o s t s , l e t b a n n e r , l e t a d d r e s s ) : . . . c a s e . F a i l u r e ( l e t e r r o r ) : . . . } }
  12. 24.

    f u n c = = < A : E

    q u a t a b l e > ( l h s : ( A ) , r h s : ( A ) ) - > B o o l f u n c = = < A : E q u a t a b l e , B : E q u a t a b l e > ( l h s : ( A , B ) , r h s : ( f u n c = = < A : E q u a t a b l e , B : E q u a t a b l e , C : E q u a t a b l e > ( l h s : f u n c = = < A : E q u a t a b l e , B : E q u a t a b l e , C : E q u a t a b l e , D : E q u a t a b f u n c = = < A : E q u a t a b l e , B : E q u a t a b l e , C : E q u a t a b l e , D : E q u a t a b f u n c = = < A : E q u a t a b l e , B : E q u a t a b l e , C : E q u a t a b l e , D : E q u a t a b 任意の個数の型の組み合わせ(6 個まで)
  13. 27.

    c l a s s B a t c h

    F a c t o r y { . . . f u n c c r e a t e < R 1 : R e q u e s t T y p e > ( r e q u e s t : R 1 ) - > B a t c h < f u n c c r e a t e < R 1 : R e q u e s t T y p e , R 2 : R e q u e s t T y p e > ( r e q u e s t 1 : f u n c c r e a t e < R 1 : R e q u e s t T y p e , R 2 : R e q u e s t T y p e , R 3 : R e q u e s }
  14. 34.

    s t r u c t B a t c

    h R e q u e s t < . . . R e q u e s t s : R e q u e s t T y p e > : R e q u e s t T y p e t y p e a l i a s R e s p o n s e = ( R e q u e s t s . R e s p o n s e . . . ) l e t ( . . . r e q u e s t s ) : ( R e q u e s t s . . . ) . . . }