ねえ@TheM4hd1😊この素晴らしいライブラリ(そしてさらに印象的なSiwa
)を作ってくれてありがとう、あなたはこれまで素晴らしい仕事をしました。 そして、私にタグを付けて助けてくれてありがとう。
2.0
近づいてきて、計画されたマイルストーンや実装を考えている特定の機能がある場合、私は物事の素晴らしいスキームは何であるか疑問に思いました。 これをしばらく使用した後、より大きなアップデートでそれを作るかもしれないいくつかの提案があります:
1)コード内ドキュメント
2)より簡単なパーミッションハンドラー、シングルトンモデルとすべての.shared
削除し、ユーザーが同時に複数のアカウントを実行できるようにします[問題がなければ、今日または明日から作業を開始する可能性があります]✓
3)ログインが簡単になり、アクセサリを作成してボイラープレートコードをprivate
またはinternal
背後に隠すことでプロセスを合理化する✓
4)マスターにプッシュする前にすべてをより適切にテストするために承認された_プルリクエスト_をプッシュできるdevelopment
ブランチ( 2.0
は間違いなく大したことです😊)✓
5)命名規則、 userId
、 pk
、 userPk
...の修正、およびパラメーター名の統一( completionHandler
vs completion
で悪化したことはわかっています) UserReference
ちょっとハハハになりそうです)、関数をより「迅速」にします(名前付きパラメーターなどを使用)✓
6)〜Swift 5.1、誰か? 🤔 some Protocol
パターンは、ログインの「問題」のほとんどを解決するのに最適だと思います〜
ただいくつかのアイデア。 あなたが持っている優先事項とあなたを助ける方法を教えてください。
平和✌️
こんにちはステファノ、
私を助け、この図書館に貢献してくれたあなたに感謝しなければなりません。あなたの参加が私を幸せにすることに他なりません。
これは良い考えであり、優れた機能と変更を加えたバージョン2.0にジャンプします。
私は、ユーザーがライブラリをより簡単に扱うのに役立ついくつかの追加機能を実装することを考えていました。
受信などの機能:
UserReference
アイデアが好きです。development
ブランチも必要です。
- より簡単なパーミッションハンドラー、シングルトンモデルとすべての
.shared
削除し、ユーザーが同時に複数のアカウントを実行できるようにします[問題がなければ、今日または明日から作業を開始する可能性があります]
私はこれに取り組み始めました。 実際の認証メカニズムが整っているので、すべての異なるハンドラーのすべてのメソッドを書き直す必要があります(😱)。その後、 Siwa
同じ変更を加えるだけです。
私がこれまでにしたこと:
APIBuilder
、 HttpSettings
、 RequestMessageModel
はなくなりました。 ここで、 APIHandler
を直接インスタンス化し、 Settings
を使用します(オプション) delay
、 queues
、 device
( User-Agent
自動的に更新します) session
( URLSession
)パラメーター。*Handler
プロトコルはありません。 彼らにとって実際のポイントはありませんでした。 すべての*Handler
は、 APIHandler
インスタンスを介して呼び出すことができるようになりました( UserHandler
は.accounts
、 FeedHandler
は.feeds
など) 。)、それらは怠惰なプロパティであり、インスタンス自体に固有です。 HttpHelper
とPaginationHelper
( 1.*
PaginationHandler
についても同じことをしました。 これにより、すべてのメソッドをAPIHandler
で書き直す必要があったすべてのコードの重複がなくなります。これは、ログに記録されたさまざまなユーザーに対して複数のAPIHandler
を使用する「マルチタスク」を意味します。APIHandler
インスタンスの1つのメソッド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を使用します。 view_ in SwiftyInsta
。pk
またはusername
いずれかを受け入れるすべてのメソッドは、代わりにUserReference
アイテムを受け取るようになりました。私は明日までにすべてを終えることを期待しています、そしてそれから私はさらなるテストのためにそれをdevelopment
にプッシュすることができました。 私は本当にとても興奮しています💪
ご意見・ご感想をお待ちしております。
変更は非常に良いようで、 development
ブランチも追加されました。
Logger
などの機能とツールのリストに取り組んでいます。
そして、認証について、この新しい方法は3種類の認証すべてをサポートしますか?
上記のすべての変更は完了です。 しばらくテストしてから、_pullrequest_をプッシュします。
そして、認証について、この新しい方法は3種類の認証すべてをサポートしますか?
現在、_web login_とSiwa
サポートしています(理論的にはSiwa
は*.shared
を使用するため、更新する必要がありますが、できるだけ早く実行する予定です。つまり、正しいことを意味しSwiftyInsta
提供されるusername
+ password
認証は、標準に達していなかったようです。 そして、あなたはそれのためにSiwa
で素晴らしい仕事をしたので、私はそれがメインライブラリからドロップできるように本当に感じています(しかしそれは私の意見です)。
username
+ password
認証を実行したいユーザーは、他のすべてを過度に複雑にしたり、コードベースを複製したりせずに、最初から(つまり、 Siwa
)認証を実行する必要があると強く信じています。 繰り返しますが、私の意見です。
もう一度追加することもできます😊
(タイプミスを修正しようとしましたが、それらを見つけたときに間違いがありましたが、いくつかの方法のように感じます。たとえば、奇妙なPOST
は、意図したとおりに機能しない可能性があります。 1.*
では機能しませんでした。 2.0
れていない可能性があります。Idk)
@sbertix @canaksoy
他のアイデア? すべてのアップデート?
watchOS
、 tvOS
、 macOS
サポートマルチOSサポート#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
にサポートを追加するのは簡単ですが、実際にはコードベース全体をそれに応じて変更するには非常に長い時間がかかります。
しかし、それは価値があるはずです、imho。
どう思いますか? @ TheM4hd1