Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Flexible Networking in Swift.

Flexible Networking in Swift.

Tips and tricks for using Moya in a flexible manner. Recording stubs, auth token problems and some history included.

Sunshinejr

June 23, 2016
Tweet

More Decks by Sunshinejr

Other Decks in Programming

Transcript

  1. NETWORKING
    IN SWIFT
    FLEXIBLE
    sunshinejr
    thesunshinejr

    View Slide

  2. Before Swift After WWDC’14
    NETWORKING TIMELINE
    WWDC 2014
    2
    +

    View Slide

  3. BEFORE SWIFT
    3

    View Slide

  4. NSURLCONNECTION
    AFNETWORKING
    NSURLSESSION
    4

    View Slide

  5. 5

    View Slide

  6. WITH SWIFT
    6

    View Slide

  7. NSURLSESSION
    ALAMOFIRE
    MOYA?
    7

    View Slide

  8. MOYA
    8
    https://github.com/Moya/Moya

    View Slide

  9. 9

    View Slide

  10. EASY TESTING
    +
    FLEXIBILITY
    +
    OPTIONAL
    =

    +
    COMMUNITY
    10

    View Slide

  11. BASIC SETUP - TARGET
    +
    11

    View Slide

  12. BASIC SETUP - RUN!
    12

    View Slide

  13. MOYA+MAPPERS
    MOYA-OBJECTMAPPER
    MOYA-SWIFTYJSONMAPPER
    MOYA-ARGO
    MOYA-MODELMAPPER
    MOYA-GLOSS
    MOYA-JASON
    13

    View Slide

  14. TIME FOR FLEXIN’
    14

    View Slide

  15. PROBLEM 1:
    PASSING AUTH TOKEN
    15

    View Slide

  16. +
    16

    View Slide

  17. PROBLEM 2:
    PASSING AUTH TOKEN
    … BUT SOMETIMES IN HEADERS
    … AND SOMETIMES IN PARAMETERS
    … AND SOMETIMES DON’T SEND IT AT ALL
    … AND SOMETIMES SEND GUEST TOKEN
    17

    View Slide

  18. View Slide

  19. +
    +
    19

    View Slide

  20. +
    20

    View Slide

  21. +
    20

    View Slide

  22. +
    20

    View Slide

  23. +
    20

    View Slide

  24. View Slide

  25. PROBLEM 3:
    API WITHOUT API
    22

    View Slide

  26. SOLUTION:
    STUBS
    STUBS RECORDING
    +
    (warning: works only for simulator)
    23

    View Slide

  27. 1. BASH SCRIPT
    24

    View Slide

  28. 2. RECORDING PLUGIN
    25

    View Slide

  29. 3. STUBBABLE TARGET TYPE
    26

    View Slide

  30. 3. STUBBABLE TARGET TYPE
    26

    View Slide

  31. 3. STUBBABLE TARGET TYPE
    26

    View Slide

  32. 3. STUBBABLE TARGET TYPE
    26

    View Slide

  33. 3. STUBBABLE TARGET TYPE
    26

    View Slide

  34. 4. CONFORM TO NEW TARGET TYPE
    27

    View Slide

  35. 4. CONFORM TO NEW TARGET TYPE
    27

    View Slide

  36. 4. CONFORM TO NEW TARGET TYPE
    27

    View Slide

  37. 4. CONFORM TO NEW TARGET TYPE
    27

    View Slide

  38. 4. CONFORM TO NEW TARGET TYPE
    27

    View Slide

  39. 5. ADD PLUGIN TO MOYA PROVIDER
    OR
    28

    View Slide

  40. QUESTIONS?
    https://github.com/sunshinejr/FlexibleMoya
    Code from slides at:
    More examples:
    https://github.com/Moya/Moya/tree/master/docs/Examples
    My Moya + RxSwift Networking tutorial:
    http://www.thedroidsonroids.com/blog/ios/rxswift-examples-3-networking/
    sunshinejr
    thesunshinejr

    View Slide