Hai @TheM4hd1 😊 terima kasih telah membuat perpustakaan hebat ini (dan Siwa
, yang bahkan lebih mengesankan), sejauh ini Anda telah melakukan pekerjaan yang luar biasa. Dan terima kasih telah mengizinkan saya ikut serta dan membantu.
Dengan 2.0
mendekat, saya bertanya-tanya apa skema hebatnya, jika ada tonggak yang direncanakan atau fitur tertentu yang Anda pikirkan untuk diterapkan. Karena setelah menggunakan ini untuk sementara waktu, saya memiliki beberapa saran yang mungkin membuatnya dalam pembaruan yang lebih besar:
1) dokumentasi dalam kode
2) penangan izin yang lebih mudah, menjatuhkan model Singleton dan semua .shared
, memungkinkan pengguna menjalankan banyak akun secara bersamaan [Saya mungkin mulai mengerjakan ini hari ini atau besok, jika boleh]
3) login lebih mudah, menyederhanakan proses dengan membuat aksesori dan menyembunyikan beberapa kode boilerplate di belakang private
atau internal
4) cabang development
tempat kami dapat mendorong _pull request_ yang disetujui untuk menguji semuanya dengan lebih baik sebelum mendorongnya ke master ( 2.0
jelas merupakan masalah besar 😊)
5) konvensi penamaan, memperbaiki userId
, pk
, userPk
... dan menyeragamkan nama parameter (saya tahu saya membuatnya lebih buruk dengan completionHandler
vs completion
, tapi saya merasa UserReference
agak membuatnya bahkan hahaha), juga membuat fungsi lebih "swift-y" (menggunakan parameter bernama, dll.)
6) ~Swift 5.1, siapa saja? Saya merasa pola some Protocol
akan bagus untuk menyelesaikan sebagian besar "masalah" login~
Hanya beberapa ide sekalipun. Tolong beri tahu saya prioritas apa yang Anda miliki dan bagaimana membantu Anda.
Damai ️
Hai Stefano,
Saya harus mengucapkan terima kasih kepada Anda untuk membantu saya dan berkontribusi perpustakaan ini, tidak ada yang lebih dari partisipasi Anda membuat saya bahagia.
Ini adalah ide yang bagus, melompat ke versi 2.0 dengan fitur dan perubahan yang bagus.
Saya sedang berpikir untuk mengimplementasikan beberapa fungsi tambahan yang membantu pengguna menangani perpustakaan dengan lebih mudah,
fitur seperti menerima:
UserReference
yang bagus.development
cabang juga diperlukan.
- penangan izin yang lebih mudah, menjatuhkan model Singleton dan semua
.shared
, memungkinkan pengguna menjalankan banyak akun secara bersamaan [Saya mungkin mulai mengerjakan ini hari ini atau besok, jika boleh]
Saya sudah mulai mengerjakan ini. Mekanisme otentikasi yang sebenarnya sudah ada, saya hanya perlu menyelesaikan penulisan ulang setiap metode untuk semua penangan yang berbeda (😱), dan kemudian yang diperlukan hanyalah membuat perubahan yang sama ke Siwa
.
Apa yang telah saya lakukan sejauh ini:
APIBuilder
, HttpSettings
dan RequestMessageModel
hilang. Sekarang Anda instantiate langsung APIHandler
dengan beberapa Settings
mengambil (opsional) delay
, queues
, device
(secara otomatis memperbarui User-Agent
) dan parameter session
( URLSession
).*Handler
. Tidak ada poin sebenarnya bagi mereka. Setiap *Handler
sekarang dapat dipanggil melalui instance APIHandler
( UserHandler
adalah .accounts
, FeedHandler
adalah .feeds
, dll .), mereka adalah properti malas dan khusus untuk instance itu sendiri. Saya telah melakukan hal yang sama untuk HttpHelper
dan PaginationHelper
(alias PaginationHandler
di 1.*
). Ini menghapus semua duplikasi kode di mana setiap metode tunggal harus ditulis ulang untuk APIHandler
, dan itu berarti " multitasking " dengan beberapa APIHandler
s untuk pengguna log yang berbeda.APIHandler
: authenticate(with request: Login.Request, completionHandler: escaping (Result<(Login.Response, APIHandler), Error>) -> Void)
, di mana Login.Request
adalah enum
yang dapat mengambil SessionCache
item (yang mirip dengan 1.*
SessionCache
), dan digunakan untuk "masuk kembali" dan dengan Siwa
(di masa mendatang), atau LoginWebView
(alias InstagramLoginWebView
) — dan ini jauh lebih sederhana daripada sekarang. Secara harfiah satu panggilan dan Anda selesai. Ini menghapus semua duplikasi kode antara Siwa
dan SwiftyInsta
: jika Anda ingin otentikasi "tanpa kepala", gunakan Siwa
dan teruskan sessionCache
, jika tidak gunakan _web lihat_ di SwiftyInsta
.pk
atau username
sekarang mengambil item UserReference
sebagai gantinya.Saya berharap untuk menyelesaikan semuanya besok, dan kemudian saya dapat mendorongnya ke development
untuk pengujian lebih lanjut. Saya benar-benar sangat bersemangat
Saya menantikan untuk mengetahui pemikiran dan pendapat Anda.
Perubahan tampaknya sangat bagus, cabang development
ditambahkan juga.
Saya sedang mengerjakan daftar fitur dan alat seperti Logger
dan lain-lain.
Dan tentang Otentikasi, metode baru ini mendukung semua 3 jenis otentikasi?
Saya sudah selesai dengan semua perubahan di atas. Saya mengujinya sebentar dan kemudian mendorong _pull request_.
Dan tentang Otentikasi, metode baru ini mendukung semua 3 jenis otentikasi?
Saat ini mendukung _web login_ dan Siwa
(secara teoritis karena Siwa
menggunakan *.shared
, jadi itu perlu diperbarui, tetapi saya berencana untuk melakukannya secepatnya — artinya benar sekarang , sementara itu, Anda hanya dapat mengujinya dengan _web login_). Saya merasa otentikasi username
+ password
disediakan dengan SwiftyInsta
tidak sesuai standar, tbh. Dan karena Anda telah melakukan pekerjaan yang luar biasa untuk itu di Siwa
, saya benar-benar merasa itu dapat dikeluarkan dari perpustakaan utama (tapi itu hanya pendapat saya).
Saya sangat yakin bahwa pengguna yang ingin melakukan otentikasi username
+ password
harus melakukannya dengan benar dari awal (yaitu dengan Siwa
), tanpa terlalu memperumit yang lainnya, dan menduplikasi basis kode. Sekali lagi, hanya pendapat saya.
Bisa juga ditambah lagi 😊
(Saya mencoba untuk memperbaiki kesalahan ketik, dan kesalahan di sepanjang jalan ketika saya melihatnya, tetapi saya merasa seperti beberapa metode — misalnya yang aneh POST
, mungkin masih tidak berfungsi sebagaimana dimaksud. Mereka tidak di 1.*
dan mereka mungkin tidak di 2.0
. Idk)
@sbertix @canaksoy
Lebih banyak ide? perubahan apapun?
watchOS
, tvOS
dan macOS
Saya sedang memikirkan tentang dukungan multi OS #61
Saya akan mencoba dan mengerjakannya nanti.
- Media Berkualitas Tinggi [video atau gambar]
- Media Kualitas Rendah [video atau gambar]
- Gambar Mini untuk media
- Fungsi statistik (menghitung total suka, komentar, ...)
- Fitur delay yang lebih fleksibel (mengeditnya saat run-time, atau menyalakannya) dengan cara yang lebih mudah.
- dan sebagainya....
Tentang ini, saya berpikir… mengapa tidak merasionalisasikan cara tanggapan disajikan kepada pengguna?
Alih-alih mengembalikan langsung file yang didekodekan (yang bisa menjadi seperti properti raw
), mengapa tidak mengembalikan struct
sudah dibersihkan, dengan tanggal yang sudah diformat, gambar dengan kualitas berbeda (seperti yang Anda katakan), statistik tertanam ke dalamnya ... dll.
misalnya alih-alih mendorong MediaModel
seperti itu, mengembalikan sesuatu yang lebih dekat ke…
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 */
}
Ya, ini ide yang bagus, kita tetap harus mengedit model. beberapa dari mereka kehilangan beberapa properti dan ada banyak duplikat antara model protokol yang tidak berguna dan ....
Kami pasti harus meningkatkan model dan cara mereka merepresentasikan data kepada pengguna.
Bagaimana dengan menegakkan aturan sintaks melalui swiftlint
?
Mudah untuk menambahkan dukungan untuk itu ke Travis CI
, tetapi sebenarnya sangat lama untuk mengubah seluruh basis kode yang sesuai.
Tapi itu harus sepadan, imho.
Bagaimana menurut anda? @TheM4hd1