Hey @TheM4hd1 😊 danke für die Erstellung dieser großartigen Bibliothek (und Siwa
, was noch beeindruckender ist), du hast bisher einen tollen Job gemacht. Und danke, dass ich mitmachen und helfen durfte.
Als sich 2.0
näherte, fragte ich mich, was das große Schema der Dinge war, ob es Meilensteine geplant oder bestimmte Funktionen gab, die Sie implementieren wollten. Denn nachdem ich dies eine Weile benutzt habe, habe ich einige Vorschläge, die es in einem größeren Update schaffen könnten:
1) In-Code-Dokumentation
2) einfacherer Berechtigungshandler, der das Singleton-Modell und alle .shared
, sodass Benutzer mehrere Konten gleichzeitig ausführen
3) einfachere Anmeldung, Optimierung des Prozesses durch Erstellen von Zubehör und Verstecken von Boilerplate-Code hinter private
oder internal
✓
4) ein development
Zweig, in dem wir genehmigte _Pull-Requests_ pushen können, um alles besser zu testen, bevor es an den Master gepusht wird ( 2.0
ist definitiv eine große Sache 😊) ✓
5) Benennungskonventionen, Festlegen der userId
, pk
, userPk
... und Vereinheitlichen der Parameternamen (ich weiß, dass ich es mit completionHandler
vs. completion
schlimmer gemacht habe UserReference
irgendwie sogar macht hahaha), sowie Funktionen "schneller" machen (mit benannten Parametern usw.) ✓
6) ~Swift 5.1, irgendjemand? 🤔 Ich habe das Gefühl, dass das Muster some Protocol
großartig wäre, um die meisten Login-"Probleme" zu lösen~
Aber nur ein paar Ideen. Bitte lassen Sie mich wissen, welche Prioritäten Sie haben und wie Sie Ihnen helfen können.
Frieden ️
Hallo Stefano,
Ich muss mich bei Ihnen bedanken, dass Sie mir geholfen und diese Bibliothek beigesteuert haben, es gibt nichts mehr, als mich Ihre Teilnahme glücklich macht.
Dies ist eine gute Idee, um auf Version 2.0 mit guten Funktionen und Änderungen zu springen.
Ich habe darüber nachgedacht, einige zusätzliche Funktionen zu implementieren, die dem Benutzer helfen, mit der Bibliothek einfacher umzugehen.
Funktionen wie Empfangen:
UserReference
Idee, die nett war.development
Zweig wird ebenfalls benötigt.
- einfacherer Berechtigungshandler, das Singleton-Modell und alle
.shared
, sodass Benutzer mehrere Konten gleichzeitig ausführen
Ich habe angefangen, daran zu arbeiten. Der eigentliche Authentifizierungsmechanismus ist vorhanden, ich muss nur jede einzelne Methode für all die verschiedenen Handler (😱) neu schreiben und dann müssen nur noch die gleichen Änderungen an Siwa
.
Was ich bisher gemacht habe:
APIBuilder
, HttpSettings
und RequestMessageModel
sind weg. Jetzt instanziieren Sie direkt APIHandler
mit einigen Settings
(optional) delay
, queues
, device
(automatische Aktualisierung der User-Agent
) und session
( URLSession
) Parameter.*Handler
Protokolle. Es gab keinen wirklichen Sinn für sie. Jedes *Handler
kann jetzt über die APIHandler
Instanz aufgerufen werden ( UserHandler
ist .accounts
, FeedHandler
ist .feeds
usw.) .), handelt es sich um faule Eigenschaften und sie sind spezifisch für die Instanz selbst. Ich habe das gleiche für HttpHelper
und PaginationHelper
(auch bekannt als PaginationHandler
in 1.*
). Dies entfernt alle Codeduplizierungen, bei denen jede einzelne Methode für APIHandler
, und es bedeutet " Multitasking " mit mehreren APIHandler
s für verschiedene angemeldete Benutzer.APIHandler
Instanz durch eine einzige Methode abgewickelt: authenticate(with request: Login.Request, completionHandler: escaping (Result<(Login.Response, APIHandler), Error>) -> Void)
, wobei Login.Request
ein enum
, das entweder ein SessionCache
annehmen kann. 1.*
SessionCache
) und wird zum "Wiedereinloggen" verwendet und mit Siwa
(in Zukunft) oder einem LoginWebView
(auch bekannt als InstagramLoginWebView
) — und es ist so viel einfacher als jetzt. Buchstäblich ein Anruf und Sie sind fertig. Dadurch wird die gesamte Codeduplizierung zwischen Siwa
und SwiftyInsta
: Wenn Sie eine "kopflose" Authentifizierung wünschen, verwenden Sie Siwa
und übergeben Sie die sessionCache
, andernfalls verwenden Sie _web view_ in SwiftyInsta
.pk
oder username
akzeptiert, benötigt nun stattdessen ein UserReference
Element.Ich rechne damit, dass ich bis morgen alles fertig habe, und dann könnte ich es für weitere Tests auf development
erhöhen. Ich bin wirklich super aufgeregt 💪
Ich freue mich auf Ihre Gedanken und Meinungen.
Die Änderungen scheinen sehr gut zu sein, auch der development
Zweig wurde hinzugefügt.
Ich arbeite an einer Liste von Funktionen und Tools wie Logger
usw.
Und was die Authentifizierung angeht, unterstützt diese neue Methode alle 3 Arten von Authentifizierungen?
Ich bin mit allen oben genannten Änderungen fertig. Ich teste es eine Weile und drücke dann eine _Pull-Anfrage_.
Und was die Authentifizierung angeht, unterstützt diese neue Methode alle 3 Arten von Authentifizierungen?
Im Moment unterstützt es _Web-Login_ und Siwa
(theoretisch, da Siwa
*.shared
, also muss es aktualisiert werden, aber ich plane, es so schnell wie möglich zu tun – also richtig jetzt kann man es zwischenzeitlich nur noch mit _weblogin_ testen). Ich habe das Gefühl, dass die username
+ password
Authentifizierung, die mit SwiftyInsta
bereitgestellt wurde, nicht den Anforderungen entspricht, tbh. Und da Sie in Siwa
großartige Arbeit geleistet haben, habe ich das Gefühl, dass es aus der Hauptbibliothek entfernt werden kann (aber es ist nur meine Meinung).
Ich bin fest davon überzeugt, dass Benutzer, die eine username
+ password
Authentifizierung durchführen möchten, dies von Anfang an tun sollten (dh mit Siwa
), ohne alles andere zu verkomplizieren und Codebasen zu duplizieren. Wieder nur meine Meinung.
Es kann genauso gut wieder hinzugefügt werden 😊
(Ich habe versucht zu beheben Fehler, und Fehler auf dem Weg , als ich entdecken sie, aber ich fühle mich wie einige Methoden - zum Beispiel der seltsamen POST
. Diejenigen, vielleicht noch nicht wie vorgesehen Sie taten nicht in 1.*
und möglicherweise nicht in 2.0
. Idk)
@sbertix @canaksoy
Mehr Ideen? irgendein Update?
watchOS
, tvOS
und macOS
Ich dachte an Multi-OS-Unterstützung #61
Ich werde später versuchen, daran zu arbeiten.
- Hochwertige Medien [Video oder Bild]
- Medien geringer Qualität [Video oder Bild]
- Bildminiatur für Medien
- Statistikfunktionen (Berechnung von Likes, Kommentaren, ...)
- Flexiblere Verzögerungsfunktion (Bearbeitung zur Laufzeit oder Ein- und Ausschalten) mit einfacheren Möglichkeiten.
- und soweiter und sofort....
Darüber habe ich mir überlegt... warum nicht die Art und Weise, wie Antworten dem Benutzer präsentiert werden, rationalisieren?
Anstatt direkt die dekodierte Datei zurückzugeben (die zu einer raw
Eigenschaft werden könnte), warum nicht eine bereinigte struct
, mit bereits formatiertem Datum, Bildern mit unterschiedlichen Qualitäten (wie Sie sagten), Statistiken in sie eingebettet… etc.
zB anstatt MediaModel
drücken, wie es ist, etwas näher zurückgeben an…
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 */
}
Ja, das ist eine gute Idee, wir sollten die Modelle trotzdem bearbeiten. einigen von ihnen fehlen einige Eigenschaften und es gibt viele Duplikate zwischen Modellen, nutzlosen Protokollen und ....
Wir sollten auf jeden Fall die Modelle und die Art und Weise verbessern, wie sie Daten für den Benutzer darstellen.
Was ist mit der Durchsetzung von Syntaxregeln durch swiftlint
?
Es ist einfach, Travis CI
Unterstützung dafür hinzuzufügen, aber eigentlich sehr lange, um die gesamte Codebasis entsprechend zu ändern.
Aber es sollte sich lohnen, imho.
Was denkst du? @TheM4hd1