مرحبًا @ TheM4hd1 😊 شكرًا على إنشاء هذه المكتبة الرائعة (و Siwa
، وهو أكثر إثارة للإعجاب) ، لقد قمت بعمل رائع حتى الآن. وشكرًا على السماح لي بالمساعدة.
مع اقتراب 2.0
كنت أتساءل ما هو المخطط العظيم للأشياء ، إذا كانت هناك معالم مخططة أو ميزات معينة كنت تفكر في تنفيذها. لأنه بعد استخدام هذا لفترة من الوقت ، لدي بعض الاقتراحات التي قد تجعله في تحديث أكبر:
1) وثائق داخل الكود
2) معالج أذونات أسهل ، وإسقاط نموذج Singleton وكل .shared
، مما يسمح للمستخدمين بتشغيل حسابات متعددة في نفس الوقت [قد أبدأ العمل على هذا اليوم أو غدًا ، إذا كان الأمر جيدًا] ✓
3) تسجيل دخول أسهل ، وتبسيط العملية من خلال إنشاء ملحقات وإخفاء بعض التعليمات البرمجية المعيارية خلف private
أو internal
✓
4) فرع development
حيث يمكننا دفع _ طلبات السحب المعتمدة_ من أجل اختبار كل شيء بشكل أفضل قبل دفعه إلى السيد ( 2.0
بالتأكيد صفقة كبيرة 😊) ✓
5) اصطلاحات التسمية ، وتحديد userId
، pk
، userPk
... وتوحيد أسماء المعلمات (أعلم أنني جعلت الأمر أسوأ مع completionHandler
مقابل completion
، لكني أشعر وكأنني UserReference
kinda يجعلها حتى هههههه) ، بالإضافة إلى جعل الوظائف أكثر "swift-y" (باستخدام المعلمات المسماة ، وما إلى ذلك) ✓
6) ~ سويفت 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
item (وهو مشابه لـ 1.*
SessionCache
) ، ويتم استخدامه لـ "تسجيل الدخول مرة أخرى" ومع Siwa
(في المستقبل) ، أو LoginWebView
(المعروف أيضًا باسم InstagramLoginWebView
) - وهو أبسط بكثير مما هو عليه الآن. مكالمة واحدة حرفيا وانتهيت. يؤدي هذا إلى إزالة كل تكرار الرمز بين Siwa
و SwiftyInsta
: إذا كنت تريد مصادقة "بدون رأس" ، فاستخدم Siwa
وقم بتمرير sessionCache
، وإلا استخدم _web view_ in SwiftyInsta
.pk
أو username
تأخذ الآن عنصر UserReference
بدلاً من ذلك.أعتمد على إنهاء كل شيء بحلول يوم غد ، وبعد ذلك يمكنني دفعه إلى development
لمزيد من الاختبارات. أنا متحمس جدًا حقًا 💪
أنا أتطلع إلى معرفة أفكارك وآرائك.
يبدو أن التغييرات جيدة جدًا ، تمت إضافة فرع development
أيضًا.
أنا أعمل على قائمة من الميزات والأدوات مثل Logger
وما إلى ذلك.
وحول المصادقة ، تدعم هذه الطريقة الجديدة جميع أنواع المصادقة الثلاثة؟
لقد انتهيت من كل التغييرات المذكورة أعلاه. أنا أختبرها لفترة ثم أدفع _طلب سحب_.
وحول المصادقة ، تدعم هذه الطريقة الجديدة جميع أنواع المصادقة الثلاثة؟
في الوقت الحالي ، يدعم _web login_ و Siwa
(نظريًا لأن Siwa
يستخدم *.shared
، لذلك ستحتاج إلى التحديث ، لكنني أخطط للقيام بذلك في أسرع وقت ممكن - وهذا يعني أنه صحيح الآن ، في هذه الأثناء ، يمكنك اختباره فقط باستخدام _web login_). أشعر أن المصادقة username
+ password
المقدمة مع SwiftyInsta
لم تكن على قدم المساواة. ونظرًا لأنك قمت بعمل رائع مقابل ذلك في Siwa
، أشعر حقًا أنه يمكن إسقاطها من المكتبة الرئيسية (لكن هذا رأيي فقط).
أعتقد بشدة أن المستخدمين الذين يرغبون في إجراء مصادقة username
+ password
يجب أن يفعلوا ذلك بشكل صحيح من البداية (أي مع Siwa
) ، دون المبالغة في تعقيد كل شيء آخر ، وتكرار قواعد التعليمات البرمجية. مرة أخرى ، فقط رأيي.
يمكن أيضًا إضافته مرة أخرى 😊
(حاولت إصلاح الأخطاء المطبعية والأخطاء على طول الطريق عندما رصدتها ، لكني أشعر أن بعض الأساليب - على سبيل المثال ، الطريقة الغريبة POST
، قد لا تعمل كما هو مخطط لها. لم تكن في 1.*
وقد لا يكونون في 2.0
. Idk)
تضمين التغريدة
المزيد من الأفكار؟ أي تحديث؟
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
، لكن في الواقع طويل جدًا لتغيير قاعدة الكود بالكامل وفقًا لذلك.
لكن يجب أن يكون الأمر يستحق ذلك ، إيمهو.
ما رأيك؟ تضمين التغريدة