ΠΡΠΈΠ²Π΅Ρ @ TheM4hd1 π ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (ΠΈ Siwa
, ΡΡΠΎ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»ΡΠ΅Ρ), Π²Ρ ΠΏΡΠΎΠ΄Π΅Π»Π°Π»ΠΈ ΠΏΠΎΡΡΡΡΠ°ΡΡΡΡ ΡΠ°Π±ΠΎΡΡ. Π ΡΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΌΠ½Π΅ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ ΠΈ ΠΏΠΎΠΌΠΎΡΡ.
Π‘ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ 2.0
ΠΌΠ½Π΅ Π±ΡΠ»ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠ²Π° Π±ΡΠ»Π° Π²Π΅Π»ΠΈΠΊΠ°Ρ ΡΡ
Π΅ΠΌΠ° Π²Π΅ΡΠ΅ΠΉ, Π±ΡΠ»ΠΈ Π»ΠΈ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Ρ Π²Π΅Ρ
ΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π΄ΡΠΌΠ°Π»ΠΈ Π²Π½Π΅Π΄ΡΠΈΡΡ. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΡΠΎ, Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ:
1) Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π² ΠΊΠΎΠ΄Π΅
2) Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, ΠΎΡΠΊΠ°Π· ΠΎΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Singleton ΠΈ Π²ΡΠ΅Ρ
.shared
, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅ΡΠ½ΡΡ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ [Ρ ΠΌΠΎΠ³Ρ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΡΡΠΈΠΌ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π·Π°Π²ΡΡΠ°, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅] β
3) Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ Π²Ρ
ΠΎΠ΄ Π² ΡΠΈΡΡΠ΅ΠΌΡ, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π·Π° ΡΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π°ΠΊΡΠ΅ΡΡΡΠ°ΡΠΎΠ² ΠΈ ΡΠΎΠΊΡΡΡΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π·Π° private
ΠΈΠ»ΠΈ internal
β
4) Π²Π΅ΡΠΊΡ development
ΠΊΡΠ΄Π° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½Π½ΡΠ΅ _pull request_, ΡΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΌΠ°ΡΡΠ΅ΡΡ ( 2.0
β ΡΡΠΎ, Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ, Π±ΠΎΠ»ΡΡΠΎΠ΅ Π΄Π΅Π»ΠΎ π) β
5) ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΈΠΌΠ΅Π½Π°Ρ
, ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ userId
, pk
, userPk
... ΠΈ ΠΈΠΌΠ΅Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ½ΠΈΡΠΎΡΠΌΡ (Ρ Π·Π½Π°Ρ, ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎ Ρ
ΡΠΆΠ΅ Ρ completionHandler
ΠΏΡΠΎΡΠΈΠ² completion
, Π½ΠΎ Ρ ΡΡΠ²ΡΡΠ²ΡΡ, ΡΡΠΎ UserReference
Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ Π΄Π°ΠΆΠ΅ Ρ
Π°Ρ
Π°Ρ
Π°), Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Β«Π±ΡΡΡΡΡΠΌΠΈΒ» (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ Ρ. Π΄.) β
6) ~Swift 5.1, ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ? π€ ΠΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΡΠ°Π±Π»ΠΎΠ½ some Protocol
ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Β«ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠΎ Π²Ρ
ΠΎΠ΄ΠΎΠΌΒ»~
Π’ΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ΄Π΅ΠΈ. ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π΄Π°ΠΉΡΠ΅ ΠΌΠ½Π΅ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ ΠΈ ΠΊΠ°ΠΊ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΡ.
ΠΠΈΡ βοΈ
ΠΡΠΈΠ²Π΅Ρ Π‘ΡΠ΅ΡΠ°Π½ΠΎ,
Π― Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π²Π°ΠΌ Π·Π° ΠΏΠΎΠΌΠΎΡΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ, ΠΊΡΠΎΠΌΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΡΡΠ°ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄Π΅Π»Π°Π΅Ρ ΠΌΠ΅Π½Ρ ΡΡΠ°ΡΡΠ»ΠΈΠ²ΡΠΌ.
ΠΡΠΎ Ρ
ΠΎΡΠΎΡΠ°Ρ ΠΈΠ΄Π΅Ρ β ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° Π²Π΅ΡΡΠΈΡ 2.0 Ρ Ρ
ΠΎΡΠΎΡΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ.
Π― Π΄ΡΠΌΠ°Π» ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ,
ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅:
UserReference
ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° Ρ
ΠΎΡΠΎΡΠ°.development
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ° Π²Π΅ΡΠΊΠ°
- Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, ΠΎΡΠΊΠ°Π· ΠΎΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Singleton ΠΈ Π²ΡΠ΅Ρ
.shared
, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ [Ρ ΠΌΠΎΠ³Ρ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΡΡΠΈΠΌ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π·Π°Π²ΡΡΠ°, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅]
Π― Π½Π°ΡΠ°Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΡΡΠΈΠΌ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π³ΠΎΡΠΎΠ², ΠΌΠ½Π΅ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² (π±), Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎ Π²Π½Π΅ΡΡΠΈ ΡΠ΅ ΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Siwa
.
Π§ΡΠΎ Ρ ΡΠ΄Π΅Π»Π°Π» Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ:
APIBuilder
, HttpSettings
ΠΈ RequestMessageModel
ΠΈΡΡΠ΅Π·Π»ΠΈ. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ APIHandler
Π½Π°ΠΏΡΡΠΌΡΡ, Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Settings
Π±Π΅ΡΡΡ (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ) delay
, queues
, device
(Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ User-Agent
) ΠΈ session
( URLSession
).*Handler
. Π Π½ΠΈΡ
Π½Π΅ Π±ΡΠ»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΌΡΡΠ»Π°. ΠΠ°ΠΆΠ΄ΡΠΉ *Handler
ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½ ΡΠ΅ΡΠ΅Π· ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ APIHandler
( UserHandler
β ΡΡΠΎ .accounts
, FeedHandler
β ΡΡΠΎ .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 ΠΏΡΠΎΡΠΌΠΎΡΡ_ Π² SwiftyInsta
.pk
Π»ΠΈΠ±ΠΎ username
ΡΠ΅ΠΏΠ΅ΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ UserReference
.Π― ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Ρ Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡ Π²ΡΠ΅ ΠΊ Π·Π°Π²ΡΡΠ°ΡΠ½Π΅ΠΌΡ Π΄Π½Ρ, Π° Π·Π°ΡΠ΅ΠΌ Ρ ΡΠΌΠΎΠ³Ρ Π΄ΠΎΠ²Π΅ΡΡΠΈ Π΅Π³ΠΎ Π΄ΠΎ development
Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π― Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ΅Π½Ρ Π²Π·Π²ΠΎΠ»Π½ΠΎΠ²Π°Π½ πͺ
Π― Ρ Π½Π΅ΡΠ΅ΡΠΏΠ΅Π½ΠΈΠ΅ΠΌ ΠΆΠ΄Ρ Π²Π°ΡΠΈΡ
ΠΌΡΡΠ»Π΅ΠΉ ΠΈ ΠΌΠ½Π΅Π½ΠΈΠΉ.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΡΡΡΡ ΠΎΡΠ΅Π½Ρ Ρ
ΠΎΡΠΎΡΠΈΠΌΠΈ, ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ββΠ²Π΅ΡΠΊΠ° development
.
Π― ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π΄ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ Logger
ΠΈ Ρ. Π΄.
Π ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΡΡΠΎΡ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ 3 Π²ΠΈΠ΄Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ?
Π― Π·Π°ΠΊΠΎΠ½ΡΠΈΠ» ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Π²ΡΡΠ΅. Π― ΡΠ΅ΡΡΠΈΡΡΡ Π΅Π³ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΡ _pull request_.
Π ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΡΡΠΎΡ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ 3 Π²ΠΈΠ΄Π° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ?
ΠΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ _Π²Π΅Π±-Π»ΠΎΠ³ΠΈΠ½_ ΠΈ Siwa
(ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Siwa
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ *.shared
, ΠΏΠΎΡΡΠΎΠΌΡ Π΅Π³ΠΎ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ, Π½ΠΎ Ρ ΠΏΠ»Π°Π½ΠΈΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΡΠ΅Π΅, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ , ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ _web login_). Π― ΡΡΠ²ΡΡΠ²ΡΡ, ΡΡΠΎ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ username
+ password
ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ SwiftyInsta
Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π½ΠΎΠΌΠΈΠ½Π°Π»Ρ, tbh. Π ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ ΠΏΡΠΎΠ΄Π΅Π»Π°Π»ΠΈ ΠΏΠΎΡΡΡΡΠ°ΡΡΡΡ ΡΠ°Π±ΠΎΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π² Siwa
, Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ²ΡΡΠ²ΡΡ, ΡΡΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (Π½ΠΎ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅).
Π― ΡΠ²Π΅ΡΠ΄ΠΎ Π²Π΅ΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, ΠΆΠ΅Π»Π°ΡΡΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ username
+ password
Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° (ΡΠΎ Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Siwa
), Π½Π΅ ΡΡΠ»ΠΎΠΆΠ½ΡΡ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈ Π½Π΅ Π΄ΡΠ±Π»ΠΈΡΡΡ ΠΎΡΠ½ΠΎΠ²Ρ ΠΊΠΎΠ΄Π°. ΠΠΏΡΡΡ ΠΆΠ΅, ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅.
Π‘ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΡΡΠΏΠ΅Ρ
ΠΎΠΌ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ½ΠΎΠ²Π° π
(Π― ΠΏΡΡΠ°Π»ΡΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠΈ ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΌΠ΅ΡΠ°Π» ΠΈΡ
, Π½ΠΎ ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠ°Π½Π½ΡΠ΅ POST
β ΠΌΠΎΠ³ΡΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎΡΡ. ΠΠ½ΠΈ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π² 1.*
Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π½Π΅ Π² 2.0
. ΠΠΠ)
@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