Swiftyinsta: рд▓реЙрдЧрд┐рди рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛

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

рдХреИрд╢ рдХреЗ рд╕рд╛рде рдпрд╛ LoginWebViewController рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ:
" https://i.instagram.com/api/v1/accounts/current_user/.\n рдЕрдорд╛рдиреНрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ред\nрдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВрдбрд▓рд░ рдиреЗ nil рд▓реМрдЯрд╛рдпрд╛ред\n405"

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдзрдиреНрдпрд╡рд╛рдж @alperalb , рдореИрдВрдиреЗ рдХреЛрдб рдХреЛ 2.3.3 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред\
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрд╡рд┐рдлреНрдЯреАрдЗрдВрд╕реНрдЯрд╛ рдХреЛ рдЕрдм рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рдерд╛, рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рд╕реЗ UserHandler CurrentUser рд╡рд┐рдзрд┐ рдмрджрд▓реЗрдВ

func current(delay: ClosedRange<Double>?, completionHandler: <strong i="6">@escaping</strong> (Result<User, Error>) -> Void) { guard let storage = handler.response?.storage else { return completionHandler(.failure(GenericError.custom("Invalid рдкреНрд░рдорд╛рдгреАрдХрд░рдгред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ in APIHandler.respone`ред рдлрд┐рд░ рд╕реЗ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВред")))
}
// рдЪрд▓реЛ рд╢рд░реАрд░ = ["_uuid": рд╣реИрдВрдбрд▓рд░.рд╕реЗрдЯрд┐рдВрдЧреНрд╕.device.deviceGuid.uuidString,
// "_uid": storage.dsUserId,
// "_csrftoken": storage.csrfToken]

    requests.request(User.self,
                     method: .get,
                     endpoint: Endpoint.Accounts.current,
                     //body: .parameters(body),
                     delay: delay,
                     process: { User(rawResponse: $0.user) },
                     completion: completionHandler)
}`

рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рд╕реЗ UserHandler CurrentUser рд╡рд┐рдзрд┐ рдмрджрд▓реЗрдВ

func current(delay: ClosedRange<Double>?, completionHandler: <strong i="7">@escaping</strong> (Result<User, Error>) -> Void) { guard let storage = handler.response?.storage else { return completionHandler(.failure(GenericError.custom("Invalid рдкреНрд░рдорд╛рдгреАрдХрд░рдгред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ in APIHandler.respone`ред рдлрд┐рд░ рд╕реЗ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВред")))
}
// рдЪрд▓реЛ рд╢рд░реАрд░ = ["_uuid": рд╣реИрдВрдбрд▓рд░.рд╕реЗрдЯрд┐рдВрдЧреНрд╕.device.deviceGuid.uuidString,
// "_uid": storage.dsUserId,
// "_csrftoken": storage.csrfToken]

    requests.request(User.self,
                     method: .get,
                     endpoint: Endpoint.Accounts.current,
                     //body: .parameters(body),
                     delay: delay,
                     process: { User(rawResponse: $0.user) },
                     completion: completionHandler)
}`

рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдЬрдорд╛рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рд╕реЗ UserHandler CurrentUser рд╡рд┐рдзрд┐ рдмрджрд▓реЗрдВ
func current(delay: ClosedRange<Double>?, completionHandler: <strong i="8">@escaping</strong> (Result<User, Error>) -> Void) { guard let storage = handler.response?.storage else { return completionHandler(.failure(GenericError.custom("Invalid рдкреНрд░рдорд╛рдгреАрдХрд░рдгред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ in APIHandler.respone`ред рдлрд┐рд░ рд╕реЗ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВред")))
}
// рдЪрд▓реЛ рд╢рд░реАрд░ = ["_uuid": рд╣реИрдВрдбрд▓рд░.рд╕реЗрдЯрд┐рдВрдЧреНрд╕.device.deviceGuid.uuidString,
// "_uid": storage.dsUserId,
// "_csrftoken": storage.csrfToken]

    requests.request(User.self,
                     method: .get,
                     endpoint: Endpoint.Accounts.current,
                     //body: .parameters(body),
                     delay: delay,
                     process: { User(rawResponse: $0.user) },
                     completion: completionHandler)
}`

рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдЬрдорд╛рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ ..
рдпрджрд┐ рдЖрдк рдкреЙрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ, рдкрд╣рд▓реЗ рд╕рднреА (рдХрдорд╛рдВрдб-рд╢рд┐рдлреНрдЯ-рдХреЗ) рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдпрд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ UserHandler.swift рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИрдВ, рдЬреЛ рдкрдВрдХреНрддрд┐ 13 . рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ

рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рд╕реЗ UserHandler CurrentUser рд╡рд┐рдзрд┐ рдмрджрд▓реЗрдВ

func current(delay: ClosedRange<Double>?, completionHandler: <strong i="7">@escaping</strong> (Result<User, Error>) -> Void) { guard let storage = handler.response?.storage else { return completionHandler(.failure(GenericError.custom("Invalid рдкреНрд░рдорд╛рдгреАрдХрд░рдгред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ in APIHandler.respone`ред рдлрд┐рд░ рд╕реЗ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВред")))
}
// рдЪрд▓реЛ рд╢рд░реАрд░ = ["_uuid": рд╣реИрдВрдбрд▓рд░.рд╕реЗрдЯрд┐рдВрдЧреНрд╕.device.deviceGuid.uuidString,
// "_uid": storage.dsUserId,
// "_csrftoken": storage.csrfToken]

    requests.request(User.self,
                     method: .get,
                     endpoint: Endpoint.Accounts.current,
                     //body: .parameters(body),
                     delay: delay,
                     process: { User(rawResponse: $0.user) },
                     completion: completionHandler)
}`

рдзрдиреНрдпрд╡рд╛рдж @alperalb , рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЛред

рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯ рд╕реЗ UserHandler CurrentUser рд╡рд┐рдзрд┐ рдмрджрд▓реЗрдВ
func current(delay: ClosedRange<Double>?, completionHandler: <strong i="9">@escaping</strong> (Result<User, Error>) -> Void) { guard let storage = handler.response?.storage else { return completionHandler(.failure(GenericError.custom("Invalid рдкреНрд░рдорд╛рдгреАрдХрд░рдгред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ in APIHandler.respone`ред рдлрд┐рд░ рд╕реЗ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВред")))
}
// рдЪрд▓реЛ рд╢рд░реАрд░ = ["_uuid": рд╣реИрдВрдбрд▓рд░.рд╕реЗрдЯрд┐рдВрдЧреНрд╕.device.deviceGuid.uuidString,
// "_uid": storage.dsUserId,
// "_csrftoken": storage.csrfToken]

    requests.request(User.self,
                     method: .get,
                     endpoint: Endpoint.Accounts.current,
                     //body: .parameters(body),
                     delay: delay,
                     process: { User(rawResponse: $0.user) },
                     completion: completionHandler)
}`

рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдЬрдорд╛рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ ..
рдпрджрд┐ рдЖрдк рдкреЙрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ, рдкрд╣рд▓реЗ рд╕рднреА (рдХрдорд╛рдВрдб-рд╢рд┐рдлреНрдЯ-рдХреЗ) рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдпрд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ UserHandler.swift рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИрдВ, рдЬреЛ рдкрдВрдХреНрддрд┐ 13 . рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ

рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рд╡реНрдпреБрддреНрдкрдиреНрди рдбреЗрдЯрд╛ рд╕рд╛рдлрд╝ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @alperalb , рдореИрдВрдиреЗ рдХреЛрдб рдХреЛ 2.3.3 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред\
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрд╡рд┐рдлреНрдЯреАрдЗрдВрд╕реНрдЯрд╛ рдХреЛ рдЕрдм рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди рдерд╛, рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

@sbertix рд░рдЦрд░рдЦрд╛рд╡ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрди рд╣реИред рдШреЛрд╖рдгрд╛ рдХрд╣рд╛рдБ рд╣реИ?

pod 'SwiftyInsta', :git => 'https://github.com/TheM4hd1/SwiftyInsta', :branch => 'master' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛

@sbertix рд░рд┐рд▓реАрдЬ рдХреЛ рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

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

рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕рд╛рд░реЗ "рдореБрджреНрджреЗ" рдереЗ, рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдл рд╕реНрд▓реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА @biox86

рдЬрдм рдореИрдВрдиреЗ SwiftyInsta 2.0 рд▓рд┐рдЦрд╛, рддреЛ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП "рдкреНрд░рд╛рдорд╛рдгрд┐рдХ" рд╣реЛрдЧрд╛, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдкреЛрд░реНрдЯрд┐рдВрдЧ рдерд╛ред

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

рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЖрдзреБрдирд┐рдХ рд╕реНрд╡рд┐рдлреНрдЯ, рд╕реНрд╡рд┐рдлреНрдЯрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХреА,

@sbertix рд░рдЦрд░рдЦрд╛рд╡ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрди рд╣реИред рдШреЛрд╖рдгрд╛ рдХрд╣рд╛рдБ рд╣реИ?

рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдШреЛрд╖рдгрд╛ рдирд╣реАрдВред рдореИрдВ рд╕рдордп-рд╕рдордп рдкрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рдерд╛ рдХрд┐ рдЬрдм рдирдП рдореБрджреНрджреЗ рднреЗрдЬреЗ рдЬрд╛рддреЗ рдереЗред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╕реНрд╡рд┐рдлреНрдЯрдЧреНрд░рд╛рдо рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдЕрднреА рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ (рдЬреИрд╕реЗ рдпрд╣ рдПрдХ), рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣рд╛рдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдпрд╛ рд╕рдВрд╡рд░реНрджреНрдзрди рдХреЛ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝рд╛рдКрдВрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ BasicAuthenticator рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╕рдВрдпреЛрдЬрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП)ред

рдпрджрд┐ рдЖрдк SwiftyInsta рдореЗрдВ рдкреАрдЖрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпреЛрдЧрджрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рд╕рдХреНрд░рд┐рдп рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ @mycroftcanner

pod 'SwiftyInsta', :git => 'https://github.com/TheM4hd1/SwiftyInsta', :branch => 'master' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рд╛

@sbertix рд░рд┐рд▓реАрдЬ рдХреЛ рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рд╣рд╛рдВред рд╕рдм рдХреБрдЫ рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдкреЙрдб рд╕рдВрд╕реНрдХрд░рдг рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛тАж
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░реЗрдЧрд╛ред

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