有 CocoaPods JSON API 吗?

问题描述 投票:0回答:4

有没有办法通过 API 获取 Pod 规范(版本、名称、日期等)?我发现的最接近的是来自他们网站的搜索请求,但不是 JSON API。

如果你查看 cocoacontrols,一定有类似 API 的东西,因为它们会为你的存储库找到正确的 pod。

背景:我需要查找 pod,看看是否有新版本可用。

我查看了 GitHub Repo,但找不到所需的规格。

ios cocoapods
4个回答
4
投票

实际上他们有API

我知道这个问题太老了,但无论如何它在谷歌中排名第一。所以,至少还有人会知道 CocoaPods 提供 API。


3
投票

目前 CocoaPods 系统的唯一部分是命令行工具和 specs repo。我可以想到几种方法可以做到这一点,但它们肯定会比提供的 API 更复杂。

您可以使用 Github 的 API 来查询规范存储库。每个规范的文件夹结构都是相同的,因此您可以查看

repo/specname
以文件夹形式查看可用版本号。

如果您想在本地执行此操作,您可以对

~/.cocoapods/master
中的文件夹执行类似的操作,该文件夹是规范存储库的克隆。


0
投票

我相信 Cocoapods 的工作原理是直接检查 podspecs GitHub 存储库。您还可以自定义它来查看您选择的自定义规范存储库(例如公司内部的 Pod),但没有用于列出 Pod 的 API。


0
投票

从技术上讲,有点——参见https://blog.cocoapods.org/CocoaPods-1.7.2/

我必须阅读大量源代码,因为这确实没有记录,但是 Specs 遵循“查找模式”,其中区分大小写的 pod 名称经过 md5 哈希处理,前缀是从十六进制摘要生成的,并且路径已生成。这是它在 python 中的样子:

In [2]: api = 'https://cdn.cocoapods.org'
   ...: podname = 'FirebaseDynamicLinks'
   ...: version = '10.13.0'

In [3]: hash = yaml.safe_load(requests.get(f"{api}/CocoaPods-version.yml").text)
   ...:
   ...: prefix_lengths = hash['prefix_lengths']
   ...: prefix_lengths
Out[3]: [1, 1, 1]

In [4]: hashed = hashlib.md5(podname.encode('utf-8')).hexdigest()
   ...: hashed
Out[4]: '6e53dba4b40e400f2f7e3dab02b2c2b2'

In [5]: r = [hashed[i:i+length] for i, length in enumerate(prefix_lengths)]
   ...: r.extend([podname, version, f"{podname}.podspec.json"])
   ...: r
Out[5]:
['6',
 'e',
 '5',
 'FirebaseDynamicLinks',
 '10.13.0',
 'FirebaseDynamicLinks.podspec.json']

In [6]: spec = requests.get(f"{api}/Specs/{'/'.join(r)}").json()
   ...: spec['description']
Out[6]: 'Firebase Dynamic Links are deep links that enhance user experience and increase engagement by retaining context post-install, across platforms.'

我个人对 yaml 和 json 的混合感到恼火。看起来,如果你不介意它可能被破坏的话,人们可以假设前三位数字才是重要的。

© www.soinside.com 2019 - 2024. All rights reserved.