嘿@TheM4hd1 😊 感谢您制作了这个很棒的库(以及Siwa
,这更令人印象深刻),到目前为止,您已经完成了一项了不起的工作。 感谢您让我跟随并提供帮助。
随着2.0
临近,我想知道什么是伟大的计划,是否有计划的里程碑或您正在考虑实施的特定功能。 因为在使用了一段时间后,我有一些建议可能会在更大的更新中实现:
1) 代码内文档
2)更容易许可处理机,丢弃辛格尔顿模型和所有的.shared
,允许用户在同一时间运行多个帐户[我可能会启动这个在今天或明天的工作,如果它的确定]✓
3) 更容易登录,通过创建附件和隐藏private
或internal
后面的一些样板代码来简化流程 ✓
4) 一个development
分支,我们可以在其中推送已批准的 _pull 请求_,以便在将其推送给 master 之前更好地测试所有内容( 2.0
绝对是一件大事😊)✓
5) 命名约定,修复userId
, pk
, userPk
... 和统一参数名称(我知道我用completionHandler
vs completion
让情况变得更糟UserReference
有点让它甚至哈哈哈),以及使函数更“swift-y”(使用命名参数等)✓
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
协议。 他们没有实际意义。 现在可以通过APIHandler
实例调用每个*Handler
( UserHandler
是.accounts
, FeedHandler
是.feeds
等.),它们是惰性属性,并且特定于实例本身。 我对HttpHelper
和PaginationHelper
(又名PaginationHandler
in 1.*
)做了同样的事情。 这消除了所有代码重复,其中每个方法都必须为APIHandler
重写,这意味着为不同的登录用户使用多个APIHandler
的“多任务处理”。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在SwiftyInsta
查看_。pk
或username
现在都需要一个UserReference
项目。我指望在明天之前完成所有事情,然后我可以将其推到development
以进行进一步测试。 我真的超级兴奋💪
我期待着了解您的想法和意见。
更改似乎非常好,还添加了development
分支。
我正在研究功能和工具列表,例如Logger
等。
关于身份验证,这种新方法支持所有 3 种身份验证?
我已完成上述所有更改。 我正在测试它一段时间,然后推送一个_pull request_。
关于身份验证,这种新方法支持所有 3 种身份验证?
现在它支持 _web login_ 和Siwa
(理论上因为Siwa
使用*.shared
,所以它需要更新,但我打算尽快这样做 - 意思是正确的现在,与此同时,您只能使用 _web login_ 对其进行测试)。 我觉得像username
+ password
认证提供SwiftyInsta
是没有达到标准,TBH。 而且由于您在Siwa
为它做了出色的工作,我真的觉得它可以从主库中删除(但这只是我的意见)。
我坚信想要进行username
+ password
身份验证的用户应该从一开始就这样做(即使用Siwa
),而不会使其他一切过于复杂,并复制代码库。 再说一次,只是我的看法。
它也可以再次添加😊
(当我发现它们时,我试图修复拼写错误和错误,但我觉得有些方法 - 例如奇怪的POST
那些,可能仍然无法按预期工作。他们没有在1.*
并且它们可能不在2.0
。Idk)
@sbertix @canaksoy
更多想法? 任何更新?
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
,但实际上要相应地更改整个代码库的时间很长。
但这应该是值得的,恕我直言。
你怎么认为? @TheM4hd1