与 HostingDe API 交互
项目描述
Hosting.de 客户端库
hosting.de API的非官方客户端库。
- API 版本:v1
要求
该软件包需要 Python 3.6+。它目前仅在 Python 3.8 上进行了测试,但应该适用于 Python 3.6。
安装和使用
该软件包目前未公开托管,但最初会公开托管。pip install 还没有。
设置工具
通过Setuptools安装。克隆此存储库并运行
python setup.py install --user
(或sudo python setup.py install为所有用户安装软件包)
然后导入包:
import hostingde
入门
请按照安装程序进行。要使用客户端登录,您需要端点 url 和 API 令牌。要进行身份验证:
from hostingde import api
from hostingde.client import HostingDeClient
client: HostingDeClient = api.login('<your endpoint url>', '<your token>')
您的端点应如下所示:(https://<your_domain>/api不要忘记/api提供端点时)。
客户端被模块化成不同的服务类型,例如client.dns引用DNS服务API。
例如,要获取所有区域,您可以使用:
from hostingde import api
from hostingde.client import HostingDeClient
client: HostingDeClient = api.login('<your endpoint url>', '<your token>')
对于 客户端中的区域 。域名解析 list_zones ():打印(区域)
所有实现的端点都已完整记录和键入。您将在您选择的 IDE 中获得相应的提示。
过滤和排序 API
为了使用过滤和排序 API,我们简化了 API 的使用。例如,要搜索特定区域:
from hostingde import api
from hostingde.client import HostingDeClient
from hostingde.model.filter import FilterCondition
client: HostingDeClient = api.login('<your endpoint url>', '<your token>')
zone_filter = FilterCondition('zoneName').eq('example.com')
for zone in client.dns.list_zones(filter=zone_filter):
print(zone)
这将在后台自动构建相应的过滤器表达式
{
"field": "domainName",
"value": "example.com",
"relation": "equal"
}
除了 之外FilterCondition.eq,该条件还支持 API 中当前定义的所有关系:
| 关系 | 手术 | 描述 |
|---|---|---|
| 平等的 | 过滤条件.eq | field必须完全匹配值 |
| 不等 | 过滤条件.ne | field不能与值相同 |
| 更大 | 过滤条件.gt | field必须大于值。这可能适用于例如整数值、日期或日期时间 |
| 较少的 | 过滤条件.lt | field必须小于值。这可能适用于例如整数值、日期或日期时间 |
| 更大的平等 | 过滤条件.ge | field必须大于或等于值。这可能适用于例如整数值、日期或日期时间 |
| 少等 | 过滤条件文件 | field必须小于或等于值。这可能适用于例如整数值、日期或日期时间 |
| FilterCondition.startswith | 对应field方法。但是,使用通配符来简化使用 -->field* |
链接过滤器也很容易支持:
from hostingde import api
from hostingde.client import HostingDeClient
from hostingde.model.filter import FilterCondition
client: HostingDeClient = api.login('<your endpoint url>', '<your token>')
zone_filter = (FilterCondition('zoneName').startswith('example') | FilterCondition('zoneName').startswith(
'demo')) & FilterCondition('zoneName').ne('*.com')
for zone in client.dns.list_zones(filter=zone_filter):
print(zone)
这会自动为 API 构建等效的过滤器表达式:
{
"subFilterConnective": "AND",
"subFilter": [
{
"subFilterConnective": "OR",
"subFilter": [
{
"field": "zoneName",
"value": "example*",
"relation": "equal"
},
{
"field": "zoneName",
"value": "demo*",
"relation": "equal"
}
]
},
{
"field": "zoneName",
"value": "*.com",
"relation": "unequal"
}
]
}
但不那么冗长且更具可读性。
错误处理
如果请求返回错误,则错误将包含在api.client.exceptions.APIException包含所有详细信息的 a 中。您可以轻松捕捉它们并相应地对它们做出反应。
当前状态
目前,我们支持以下服务的以下端点:
- 域名系统
- 列表区域 100%
- list_zone_configs 100%
- 列表记录 100%
- 删除区域 100%
- jobs_find 50% - 缺少官方文档,无法保证功能
- 更新区域 100%
- 帐户
- list_accounts 50% - 缺少官方文档,无法保证功能
我们计划在未来添加更多端点,例如 SSL 和域服务。
实现的端点尚不包含任何捕获异步行为的逻辑。sync: bool
一旦正确定义了作业 API,我们计划在未来向相应的端点添加一个属性。
发展
确保满足要求。签出项目,然后运行
pip install -r requirements.txt
pip install -r requirements-test.txt
最好在虚拟环境中。
这将安装主项目的所有依赖项,以及用于测试的依赖项。
测试
跑
pytest -vv --cov-report term-missing:skip-covered --cov=api --cov=utils --cov-report xml --html=test-results/report.html --cov-report html:test-results/cov
为了测试代码。
贡献
您可以为项目做出贡献并添加您需要的新端点。但是,为了合并,我们需要:
- 所有实现的方法必须使用 reStructuredText 表示法记录。
- 所有实现的方法必须正确输入
- 我们要求测试覆盖率至少为 90%,并且您的添加不得降低代码库的整体覆盖率。
- 如果您使用此提交消息格式,我们将不胜感激。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
python_hostingde -0.4.2-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | a126e2883ac3002a3f899c73a079df053a4a3c9a4eeaa0bb1bf1311967868f7d |
|
| MD5 | 4721c660cb85074fa45981a3bb64c9e7 |
|
| 布莱克2-256 | 163525fe68cbcc6de0dc1576b022edd696e4ac8771230dd79ad5a77dcc15b736 |