lawnstarter/laravel-darksky

此包已被废弃,不再维护。没有建议的替代包。

提供 DarkSky API 的包装器

v2.1.0 2020-01-27 12:43 UTC

This package is auto-updated.

Last update: 2023-04-27 20:30:29 UTC


README

Software License

此包为 DarkSky API 提供了 Laravel 风格的包装器,简化了对不断变化的天气数据的测试编写。有关请求和响应格式的更多信息,请访问:https://darksky.net/dev/docs

安装

使用以下命令使用 composer 安装此包

$ composer require lawnstarter/laravel-darksky

更新 composer 后,将服务提供者添加到 config/app.php 文件中的 providers 数组

Lawnstarter\LaravelDarkSky\LaravelDarkSkyServiceProvider::class,

要注册外观访问器,请将以下内容添加到 config/app.php 文件中的 aliases 数组

'DarkSky' => \Lawnstarter\LaravelDarkSky\Facades\DarkSky::class,

配置

将以下行添加到 .env 文件

DARKSKY_API_KEY=<your_darksky_api_key>

用法

有关响应格式的完整详细信息,请访问:https://darksky.net/dev/docs/response

必需

location(lat, lon)

传入纬度和经度坐标以获取基本响应

DarkSky::location(lat, lon)->get();

可选参数

有关可选参数的完整详细信息,请访问:https://darksky.net/dev/docs/forecast

excludes([]) / includes([])

指定要排除/包含的数据块以减少数据传输

DarkSky::location(lat, lon)->excludes(['minutely','hourly', 'daily', 'alerts', 'flags'])->get();
DarkSky::location(lat, lon)->includes(['currently'])->get();
// Same output
atTime(t)

传入一个 Unix 时间戳以获取该时间点的预报。注意:时区相对于给定位置

DarkSky::location(lat, lon)->atTime(timestamp)->get();
language(l)

指定基于文本的响应的语言

DarkSky::location(lat, lon)->language(lang)->get();
units(u)

指定基于单位的响应的单位

DarkSky::location(lat, lon)->units(units)->get();
extend()

将 "hourly" 响应从 48 小时扩展到 168 小时。注意:如果与 atTime() 时间戳一起使用,则不起作用。请参阅:https://darksky.net/dev/docs/time-machine

DarkSky::location(lat, lon)->extend()->get();

助手

以下为简写助手,其可读性与使用 includes() 仅有一个参数时相同。注意:每个查询只能使用一个,并且只返回温度特定数据

->currently()
->minutely()
->hourly()
->daily()
->flags()

例如,这两条语句是相同的

DarkSky::location(lat, lon)->hourly()
DarkSky::location(lat, lon)->includes(['hourly'])->get()->hourly

DarkSky & Testing

为了简化测试静态方法,以便在实际上不调用DarkSky API的情况下强制响应为特定的有效载荷,已添加此功能。

DarkSky::setTestResponse($testResponseValue);

当此值不为null时,DarkSky包装器将始终返回此数据。如果值为null,则将实时查询DarkSky API。为了进一步简化测试,提供了示例测试响应,您可以在测试类中使用这些响应。

<?php

use Lawnstarter\LaravelDarkSky\DarkSkySampleResponse;
use Lawnstarter\LaravelDarkSky\DarkSky;

class MyTestsDependOnDarksky extends TestCase {

    public function test_forecast() {
        ...
        $fakeForecast = DarkSkySampleResponse::forecast();
        DarkSky::setTestResponse($fakeForecast);
        ...
    }

    public function test_forecast_extended_hourly() {
        ...
        $fakeForecast = DarkSkySampleResponse::forecastExtendedHourly();
        DarkSky::setTestResponse($fakeForecast);
        ...
    }

    public function test_timemachine() {
        ...
        $fakeForecast = DarkSkySampleResponse::timemachine();
        DarkSky::setTestResponse($fakeForecast);
        ...
    }

}
方法 示例有效载荷
DarkSkySampleResponse::forecast() 查看示例天气预报JSON
DarkSkySampleResponse::forecastExtendedHourly() 查看示例天气预报扩展小时JSON
DarkSkySampleResponse::timemachine() 查看示例时间机器JSON

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。