Skip to main content

与 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.tar.gz (22.7 kB 查看哈希

已上传 source

内置分布

python_hostingde-0.4.2-py3-none-any.whl (27.6 kB 查看哈希

已上传 py3