rossmitchell / fund-services
从不同提供商获取基金信息的一套接口
Requires
- php: >=7.1
- moneyphp/money: ^3.2
Requires (Dev)
- roave/security-advisories: dev-master
This package is auto-updated.
Last update: 2024-09-08 01:32:34 UTC
README
一套简单的接口,用于交换关于基金及其价格的信息。
这是一个非常早期的Alpha版本,随着开发进行,预计会有重大变更。
安装
composer require rossmitchell/fund-services
原因
我正在构建一个跟踪投资持仓的系统,但没有找到一个好、开放、免费、源代码的基金价格来源用于其中。因此,我必须尝试不同的选项,并且可能不得不回退到屏幕抓取来获取所需的数据。
为了使这更容易,我将使用提供商的接口以及他们需要返回的内容,这应该允许我在最小麻烦的情况下切换这些接口。
使用
每个提供商都应该实现 FundPriceProvider 接口。它目前有三个需要实现的方法
isFundSupported
并不是所有提供商都支持所有基金,所以我需要一种简单的方法来提前检查。
接受一个 Fund 对象,并应在检查是否可以为其提供定价信息后返回一个布尔值
getPriceForFund
这应该返回提供给它的基金当天的 EndOfDayPrices。这些应该是对于当天的。
如果目前没有可用的价格,它抛出 PricesNotAvailableException
如果它不能从提供商获取价格,它抛出 ServiceDownException
如果它不支持该基金,它抛出 FundNotFoundException
getHistoricPricesForFund
这返回一个包含 EndOfDayPrices 的数组,对于基金,每个元素代表给定范围内的某一天的价格。如果其中某一天没有价格,但其他天有,则数组应包含那些天的价格。如果范围内没有价格,则返回一个空数组。
它接受一个 Fund 和两个 DateTimeImmutable 对象,一个用于开始日期,一个用于结束日期。范围应包括两个日期。如果两个日期相同,则数组应包含该日期的单个元素。
如果它不能从提供商获取价格,它抛出 ServiceDownException
如果它不支持该基金,它抛出 FundNotFoundException
贡献
欢迎 Pull requests。对于重大更改,请首先提出一个问题来讨论您想进行哪些更改。
请确保适当地更新测试。