Repository navigation
Expand file tree
/
Copy pathRoxy.php
More file actions
136 lines (122 loc) · 4.72 KB
/
Copy pathRoxy.php
File metadata and controls
136 lines (122 loc) · 4.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?php
declare(strict_types=1);
/**
* AUTO-GENERATED by scripts/generate.mjs from the live OpenAPI spec.
* Do not edit this file by hand. Regenerate with: node scripts/generate.mjs.
*
* The hand-written surface lives in createRoxy.php, Auth/ApiKeyAuthenticator.php,
* and RoxyApiException.php. Every resource in this file is derived from the URL
* paths of specs/openapi.json.
*/
namespace RoxyAPI\Sdk;
use RoxyAPI\Sdk\Auth\ApiKeyAuthenticator;
use RoxyAPI\Sdk\Generated\Resources\AngelNumbersResource;
use RoxyAPI\Sdk\Generated\Resources\AstrologyResource;
use RoxyAPI\Sdk\Generated\Resources\AyurvedaResource;
use RoxyAPI\Sdk\Generated\Resources\BiorhythmResource;
use RoxyAPI\Sdk\Generated\Resources\ChineseAstrologyResource;
use RoxyAPI\Sdk\Generated\Resources\CrystalsResource;
use RoxyAPI\Sdk\Generated\Resources\DreamsResource;
use RoxyAPI\Sdk\Generated\Resources\FengShuiResource;
use RoxyAPI\Sdk\Generated\Resources\ForecastResource;
use RoxyAPI\Sdk\Generated\Resources\HumanDesignResource;
use RoxyAPI\Sdk\Generated\Resources\IchingResource;
use RoxyAPI\Sdk\Generated\Resources\KabbalahResource;
use RoxyAPI\Sdk\Generated\Resources\LanguagesResource;
use RoxyAPI\Sdk\Generated\Resources\LocationResource;
use RoxyAPI\Sdk\Generated\Resources\MesoamericanAstrologyResource;
use RoxyAPI\Sdk\Generated\Resources\NumerologyResource;
use RoxyAPI\Sdk\Generated\Resources\TarotResource;
use RoxyAPI\Sdk\Generated\Resources\UsageResource;
use RoxyAPI\Sdk\Generated\Resources\VastuResource;
use RoxyAPI\Sdk\Generated\Resources\VedicAstrologyResource;
use Saloon\Contracts\Authenticator;
use Saloon\Http\Connector;
use Saloon\Traits\Plugins\AcceptsJson;
/**
* Top-level RoxyAPI connector. One resource per URL path segment, lazy-instantiated
* via the __get accessor below.
*
* @property AngelNumbersResource $angelNumbers
* @property AstrologyResource $astrology
* @property AyurvedaResource $ayurveda
* @property BiorhythmResource $biorhythm
* @property ChineseAstrologyResource $chineseAstrology
* @property CrystalsResource $crystals
* @property DreamsResource $dreams
* @property FengShuiResource $fengShui
* @property ForecastResource $forecast
* @property HumanDesignResource $humanDesign
* @property IchingResource $iching
* @property KabbalahResource $kabbalah
* @property LanguagesResource $languages
* @property LocationResource $location
* @property MesoamericanAstrologyResource $mesoamericanAstrology
* @property NumerologyResource $numerology
* @property TarotResource $tarot
* @property UsageResource $usage
* @property VastuResource $vastu
* @property VedicAstrologyResource $vedicAstrology
*/
class Roxy extends Connector
{
use AcceptsJson;
/**
* @var array<string, class-string>
*/
private const RESOURCES = [
'angelNumbers' => AngelNumbersResource::class,
'astrology' => AstrologyResource::class,
'ayurveda' => AyurvedaResource::class,
'biorhythm' => BiorhythmResource::class,
'chineseAstrology' => ChineseAstrologyResource::class,
'crystals' => CrystalsResource::class,
'dreams' => DreamsResource::class,
'fengShui' => FengShuiResource::class,
'forecast' => ForecastResource::class,
'humanDesign' => HumanDesignResource::class,
'iching' => IchingResource::class,
'kabbalah' => KabbalahResource::class,
'languages' => LanguagesResource::class,
'location' => LocationResource::class,
'mesoamericanAstrology' => MesoamericanAstrologyResource::class,
'numerology' => NumerologyResource::class,
'tarot' => TarotResource::class,
'usage' => UsageResource::class,
'vastu' => VastuResource::class,
'vedicAstrology' => VedicAstrologyResource::class,
];
/** @var array<string, object> */
private array $resourceCache = [];
public function __construct(public readonly string $apiKey)
{
}
public function resolveBaseurl(): string
{
return 'https://roxyapi.com/api/v2';
}
protected function defaultAuth(): ?Authenticator
{
return new ApiKeyAuthenticator($this->apiKey);
}
/**
* @return array<string, string>
*/
protected function defaultHeaders(): array
{
return [
'X-SDK-Client' => 'roxy-sdk-php/' . Version::VERSION,
];
}
public function __get(string $name): object
{
if (!isset(self::RESOURCES[$name])) {
throw new \InvalidArgumentException(sprintf('Unknown resource "%s" on Roxy. Known: %s', $name, implode(', ', array_keys(self::RESOURCES))));
}
return $this->resourceCache[$name] ??= new (self::RESOURCES[$name])($this);
}
public function __isset(string $name): bool
{
return isset(self::RESOURCES[$name]);
}
}