Swiftyinsta: `2.0` . рдХреЗ рд▓рд┐рдП рд╕рдбрд╝рдХ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рдЬреБрд▓ре░ 2019  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: TheM4hd1/SwiftyInsta

рдЕрд░реЗ @ TheM4hd1 ЁЯШК рдЗрд╕ рдорд╣рд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж (рдФрд░ Siwa , рдЬреЛ рдФрд░ рднреА рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИ), рдЖрдкрдиреЗ рдЕрдм рддрдХ рдПрдХ рдЕрджреНрднреБрдд рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдФрд░ рдореБрдЭреЗ рд╕рд╛рде рдЯреИрдЧ рдХрд░рдиреЗ рдФрд░ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

2.0 рдХрд░реАрдм рдЖрдиреЗ рдХреЗ рд╕рд╛рде рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреА рдорд╣рд╛рди рдпреЛрдЬрдирд╛ рдХреНрдпрд╛ рдереА, рдЕрдЧрд░ рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереА рдпрд╛ рд╡рд┐рд╢реЗрд╖ рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕реЛрдЪ рд░рд╣реЗ рдереЗред рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╕реБрдЭрд╛рд╡ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдПрдХ рдмрдбрд╝реЗ рдЕрдкрдбреЗрдЯ рдореЗрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

1) рдЗрди-рдХреЛрдб рдкреНрд░рд▓реЗрдЦрди
2) рдЖрд╕рд╛рди рдЕрдиреБрдорддрд┐ рд╣реИрдВрдбрд▓рд░, рд╕рд┐рдВрдЧрд▓рдЯрди рдореЙрдбрд▓ рдФрд░ рд╕рднреА .shared рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдЦрд╛рддреЗ рдЪрд▓рд╛рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреЗрддрд╛ рд╣реИ [рдЕрдЧрд░ рдпрд╣ рдареАрдХ рд╣реИ рддреЛ рдореИрдВ рдЖрдЬ рдпрд╛ рдХрд▓ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ]
3) рдЖрд╕рд╛рди рд▓реЙрдЧрд┐рди, рд╕рд╣рд╛рдпрдХ рдЙрдкрдХрд░рдг рдмрдирд╛рдХрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдФрд░ рдХреБрдЫ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреЛ private рдпрд╛ internal рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкрд╛рдирд╛
4) рдПрдХ development рд╢рд╛рдЦрд╛ рдЬрд╣рд╛рдВ рд╣рдо рд╕реНрд╡реАрдХреГрдд _pull request_ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдорд╛рд╕реНрдЯрд░ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдм рдХреБрдЫ рдмреЗрд╣рддрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ ( 2.0 рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рд╣реИ )
5) рдирд╛рдордХрд░рдг рдкрд░рдВрдкрд░рд╛рдПрдВ, userId , pk , userPk ... рдФрд░ рд╡рд░реНрджреА рдкреИрд░рд╛рдореАрдЯрд░ рдирд╛рдореЛрдВ рдХреЛ рдареАрдХ рдХрд░рдирд╛ (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ completionHandler рдмрдирд╛рдо completion рд╕рд╛рде рдмрджрддрд░ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ UserReference рдереЛрдбрд╝реЗ рдЗрд╕реЗ рд╣рд╛рд╣рд╛ рднреА рдмрдирд╛рддрд╛ рд╣реИ), рд╕рд╛рде рд╣реА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ "рд╕реНрд╡рд┐рдлреНрдЯ-рд╡рд╛рдИ" (рдирд╛рдорд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрджрд┐)
6) ~ рд╕реНрд╡рд┐рдлреНрдЯ 5.1, рдХреЛрдИ рднреА? ЁЯдФ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЙрдЧрд┐рди "рд╕рдорд╕реНрдпрд╛рдУрдВ" рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП some Protocol рдкреИрдЯрд░реНрди рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ ~

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╕ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ред рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдЖрдкрдХреА рдХреНрдпрд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рд╣реИрдВ рдФрд░ рдЖрдк рдХреИрд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╢рд╛рдВрддрд┐ я╕П

рд╕рднреА 8 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдп рд╕реНрдЯреЗрдлрд╛рдиреЛ,
рдореБрдЭреЗ рдЖрдкрдХреА рдорджрдж рдХрд░рдиреЗ рдФрд░ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдкрдХреА рднрд╛рдЧреАрджрд╛рд░реА рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЦреБрд╢ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдХрд░рдг 2.0 рдкрд░ рдЬрд╛рдирд╛ ред
рдореИрдВ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ,
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ:

  • рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рдореАрдбрд┐рдпрд╛ [рд╡реАрдбрд┐рдпреЛ рдпрд╛ рдЫрд╡рд┐]
  • рдирд┐рдореНрди рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рдореАрдбрд┐рдпрд╛ [рд╡реАрдбрд┐рдпреЛ рдпрд╛ рдЫрд╡рд┐]
  • рдореАрдбрд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдердВрдмрдиреЗрд▓
  • рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рдХрд╛рд░реНрдп (рдХреБрд▓ рдкрд╕рдВрдж, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЧрдгрдирд╛, ...)
  • рдЖрд╕рд╛рди рддрд░реАрдХреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реА рд╡рд┐рд▓рдВрдм рд╕реБрд╡рд┐рдзрд╛ (рдЗрд╕реЗ рд░рди-рдЯрд╛рдЗрдо рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛, рдпрд╛ рдЗрд╕реЗ рдЪрд╛рд▓реВ-рдмрдВрдж рдХрд░рдирд╛)ред
  • рдФрд░ рдЖрджрд┐....
    рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИ, рдпреЗ рд╕рд┐рд░реНрдл рд╡рд┐рдЪрд╛рд░ рд╣реИрдВред
    рдХреНрдпреЛрдВрдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдордп рдмреАрддрдиреЗ рдХреЗ рд╕рд╛рде рдмрдбрд╝рд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд▓реЗрдЦрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
    рд╣рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╛рдордХрд░рдг рдкрд░рдВрдкрд░рд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рдЧрд▓рддрд┐рдпрд╛рдБ рд╣реИрдВред рдФрд░ рдореБрдЭреЗ UserReference рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИ рдЬреЛ рдЕрдЪреНрдЫрд╛ рдерд╛ред
    development рд╢рд╛рдЦрд╛ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
    рд╣рдореЗрдВ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣рд╛рдВ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
    рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рджред
    рд╕рд╛рджрд░ред
  1. рдЖрд╕рд╛рди рдЕрдиреБрдорддрд┐ рд╣реИрдВрдбрд▓рд░, рд╕рд┐рдВрдЧрд▓рдЯрди рдореЙрдбрд▓ рдФрд░ рд╕рднреА .shared рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдЦрд╛рддреЗ рдЪрд▓рд╛рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреЗрддрд╛ рд╣реИ [рдЕрдЧрд░ рдпрд╣ рдареАрдХ рд╣реИ рддреЛ рдореИрдВ рдЖрдЬ рдпрд╛ рдХрд▓ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ]

рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рддрдВрддреНрд░ рдореМрдЬреВрдж рд╣реИ, рдореБрдЭреЗ рдмрд╕ рд╕рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВрдбрд▓рд░ (ЁЯШ▒) рдХреЗ рд▓рд┐рдП рд╣рд░ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ рдпрд╣ рд╡рд╣реА рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд░рд╣рд╛ рд╣реИ Siwa ред

рдореИрдВрдиреЗ рдЕрдм рддрдХ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ:

  • APIBuilder , HttpSettings рдФрд░ RequestMessageModel рдЪрд▓реЗ рдЧрдП рд╣реИрдВред рдЕрдм рдЖрдк рд╕реАрдзреЗ APIHandler рдХреЛ рдХреБрдЫ Settings рд▓реЗрдХрд░ (рд╡реИрдХрд▓реНрдкрд┐рдХ) delay , queues , device (рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ User-Agent ) рдФрд░ session ( URLSession ) рдкреИрд░рд╛рдореАрдЯрд░ред
  • рдФрд░ рдЕрдзрд┐рдХ *Handler рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдирд╣реАрдВред рдЙрдирдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрд┐рдВрджреБ рдирд╣реАрдВ рдерд╛ред рдкреНрд░рддреНрдпреЗрдХ *Handler рдХреЛ рдЕрдм APIHandler рдЙрджрд╛рд╣рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ( UserHandler is .accounts , FeedHandler is .feeds , рдЖрджрд┐ ред), рд╡реЗ рдЖрд▓рд╕реА рдЧреБрдг рд╣реИрдВ рдФрд░ рд╡реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВред рдореИрдВрдиреЗ HttpHelper рдФрд░ PaginationHelper (рдЙрд░реНрдл PaginationHandler рдореЗрдВ 1.* ) рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рд╕рднреА рдХреЛрдб рджреЛрд╣рд░рд╛рд╡ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╣рд░ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ APIHandler рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдерд╛, рдФрд░ рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рд╡рд┐рднрд┐рдиреНрди рд▓реЙрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХрд╛рдзрд┐рдХ APIHandler s рдХреЗ рд╕рд╛рде " рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ "ред
  • рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЕрдм APIHandler рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рдПрдХрд▓ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: authenticate(with request: Login.Request, completionHandler: escaping (Result<(Login.Response, APIHandler), Error>) -> Void) , рдЬрд╣рд╛рдВ Login.Request рдПрдХ enum рдЬреЛ рдпрд╛ рддреЛ SessionCache рдЖрдЗрдЯрдо (рдЬреЛ 1.* SessionCache ), рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ "рд╡рд╛рдкрд╕ рд▓реЙрдЧ рдЗрди" рдХреЗ рд▓рд┐рдП рдФрд░ Siwa (рднрд╡рд┐рд╖реНрдп рдореЗрдВ), рдпрд╛ LoginWebView (рдЙрд░реНрдл InstagramLoginWebView ) тАФ рдФрд░ рдпрд╣ рдЕрдм рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рд╕рдЪрдореБрдЪ рдПрдХ рдХреЙрд▓ рдФрд░ рдЖрдкрдХрд╛ рдХрд╛рдо рд╣реЛ рдЧрдпрд╛ред рдпрд╣ Siwa рдФрд░ SwiftyInsta рдмреАрдЪ рд╕рднреА рдХреЛрдб рджреЛрд╣рд░рд╛рд╡ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ: рдпрджрд┐ рдЖрдк "рд╣реЗрдбрд▓реЗрд╕" рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ Siwa рдФрд░ sessionCache , рдЕрдиреНрдпрдерд╛ _web рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ view_ SwiftyInsta ред
  • _user_ pk рдпрд╛ username рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдПрдХ рд╡рд┐рдзрд┐ рдЕрдм рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ UserReference рдЖрдЗрдЯрдо рд▓реЗрддреА рд╣реИред

рдореИрдВ рдХрд▓ рддрдХ рд╕рдм рдХреБрдЫ рдЦрддреНрдо рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рдореИрдВ рдЗрд╕реЗ рдЖрдЧреЗ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП development рддрдХ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВ
рдореИрдВ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВред

рдкрд░рд┐рд╡рд░реНрддрди рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд▓рдЧрддреЗ рд╣реИрдВ, development рд╢рд╛рдЦрд╛ рднреА рдЬреЛрдбрд╝реА рдЧрдИред
рдореИрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕реВрдЪреА рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреИрд╕реЗ рдХрд┐ Logger рдФрд░ рдЖрджрд┐ред
рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдпрд╣ рдирдИ рд╡рд┐рдзрд┐ рд╕рднреА 3 рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ?

  1. рдирд┐рдЬреА рдПрдкреАрдЖрдИ рд▓реЙрдЧрд┐рди
  2. рд╡реЗрдм рд▓реЙрдЧрд┐рди
  3. рд╕реАрд╡рд╛

рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХрд░ рд▓рд┐рдП рд╣реИрдВред рдореИрдВ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдПрдХ _pull рдЕрдиреБрд░реЛрдз_ рджрдмрд╛рдПрдВред

рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдпрд╣ рдирдИ рд╡рд┐рдзрд┐ рд╕рднреА 3 рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИ?

рдЕрднреА рдпрд╣ _web login_ рдФрд░ Siwa рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ Siwa *.shared рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ - рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рд╕рд╣реА now , рдЗрд╕ рдмреАрдЪ, рдЖрдк рдХреЗрд╡рд▓ _web рд▓реЙрдЧрд┐рди_ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ username + password рдкреНрд░рдорд╛рдгреАрдХрд░рдг SwiftyInsta рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рдерд╛, tbhред рдФрд░ рдЪреВрдВрдХрд┐ рдЖрдкрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП Siwa рдореЗрдВ рдПрдХ рдЕрджреНрднреБрдд рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдореБрдЦреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реА рд░рд╛рдп рд╣реИ)ред
рдореЗрд░рд╛ рджреГрдврд╝ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ username + password рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЗрд╕реЗ рд╢реБрд░реВ рд╕реЗ рд╣реА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╛рдиреА Siwa ), рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдЬрдЯрд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛, рдФрд░ рдХреЛрдб рдЖрдзрд╛рд░реЛрдВ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдП рдмрд┐рдирд╛ред рдлрд┐рд░ рд╕реЗ, рдмрд╕ рдореЗрд░реА рд░рд╛рдпред
рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

(рдореИрдВрдиреЗ рдЯрд╛рдЗрдкреЛ рдФрд░ рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬрдм рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм POST рд╡рд╛рд▓реЗ, рдЕрднреА рднреА рдЗрд░рд╛рджрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЛрдВрдиреЗ 1.* рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ 2.0 рдореЗрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред Idk)

@sbertix @canaksoy
рдЕрдзрд┐рдХ рд╡рд┐рдЪрд╛рд░? рдХреЛрдИ рднреА рдЬрд╛рдирдХрд╛рд░реА?

watchOS , tvOS рдФрд░ macOS

рдореИрдВ рдорд▓реНрдЯреА рдУрдПрд╕ рд╕рдкреЛрд░реНрдЯ #61 . рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛
рдореИрдВ рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рд╕рдлрд╛рдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ

  • рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рдореАрдбрд┐рдпрд╛ [рд╡реАрдбрд┐рдпреЛ рдпрд╛ рдЫрд╡рд┐]
  • рдирд┐рдореНрди рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рдореАрдбрд┐рдпрд╛ [рд╡реАрдбрд┐рдпреЛ рдпрд╛ рдЫрд╡рд┐]
  • рдореАрдбрд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐ рдердВрдмрдиреЗрд▓
  • рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рдХрд╛рд░реНрдп (рдХреБрд▓ рдкрд╕рдВрдж, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЧрдгрдирд╛, ...)
  • рдЖрд╕рд╛рди рддрд░реАрдХреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реА рд╡рд┐рд▓рдВрдм рд╕реБрд╡рд┐рдзрд╛ (рдЗрд╕реЗ рд░рди-рдЯрд╛рдЗрдо рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛, рдпрд╛ рдЗрд╕реЗ рдЪрд╛рд▓реВ-рдмрдВрдж рдХрд░рдирд╛)ред
  • рдФрд░ рдЖрджрд┐....

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ ... рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдБ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЙрд╕реЗ рдпреБрдХреНрддрд┐рд╕рдВрдЧрдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛?
рд╕реАрдзреЗ рдбрд┐рдХреЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ (рдЬреЛ raw рд╕рдВрдкрддреНрддрд┐ рдХреА рддрд░рд╣ рдмрди рд╕рдХрддреА рд╣реИ) рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рд╕рд╛рдл struct рдХреНрдпреЛрдВ рдирд╣реАрдВ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрд╡рд░реВрдкрд┐рдд рддрд╛рд░реАрдЦ рдХреЗ рд╕рд╛рде, рд╡рд┐рднрд┐рдиреНрди рдЧреБрдгреЛрдВ рд╡рд╛рд▓реА рдЫрд╡рд┐рдпрд╛рдВ (рдЬреИрд╕реЗ рдЖрдкрдиреЗ рдХрд╣рд╛), рдЖрдВрдХрдбрд╝реЗ рдЙрдирдореЗрдВ рдирд┐рд╣рд┐рдд ... рдЖрджрд┐ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП MediaModel рдХреЛ рдзрдХреНрдХрд╛ рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреБрдЫ рдХрд░реАрдм рд▓реМрдЯрдирд╛ ...

public struct MediaModel: Codable {
    /// `MediaModelJSON` would be equal to current `MediaModel`.
    public let rawResponse: MediaModelJSON

    // Accesories
    public var pk: Int! { return rawResponse.pk }
    public lazy var date: Date! = { return self.rawRespone.takenAt.flatMap { Date(timeIntervalSince1970: $0) }}()
    /* etc */
}

рд╣рд╛рдБ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд╣рдореЗрдВ рд╡реИрд╕реЗ рднреА рдореЙрдбрд▓реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдореЗрдВ рдХреБрдЫ рдЧреБрдг рдЧрд╛рдпрдм рд╣реИрдВ рдФрд░ рдореЙрдбрд▓ рдмреЗрдХрд╛рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдмреАрдЪ рдХрдИ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИрдВ рдФрд░ ....
рд╣рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореЙрдбрд▓реЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред

swiftlint рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рдпрдореЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдЗрд╕рдХреЗ рд▓рд┐рдП Travis CI рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреВрд░реЗ рдХреЛрдбрдмреЗрд╕ рдХреЛ рддрджрдиреБрд╕рд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрдореНрд╣реЛред
рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ? @TheM4hd1

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

rmelnik7777 picture rmelnik7777  ┬╖  19рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

reefer picture reefer  ┬╖  18рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sbertix picture sbertix  ┬╖  27рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

effecttwins picture effecttwins  ┬╖  16рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

trentona picture trentona  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ