Skip to content

Commit 168346d

Browse files
Automatically update PHP SDK
1 parent 56e67dd commit 168346d

11 files changed

Lines changed: 250 additions & 122 deletions

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "trophy/php",
3-
"version": "1.0.5",
3+
"version": "1.0.6",
44
"description": "Trophy PHP Library",
55
"keywords": [
66
"trophy",
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
namespace Trophy\Traits;
4+
5+
use Trophy\Core\Json\JsonProperty;
6+
use DateTime;
7+
use Trophy\Core\Types\Date;
8+
9+
trait BaseAchievementResponse
10+
{
11+
/**
12+
* @var string $id The unique ID of the achievement.
13+
*/
14+
#[JsonProperty('id')]
15+
public string $id;
16+
17+
/**
18+
* @var string $name The name of this achievement.
19+
*/
20+
#[JsonProperty('name')]
21+
public string $name;
22+
23+
/**
24+
* @var ?string $badgeUrl The URL of the badge image for the achievement, if one has been uploaded.
25+
*/
26+
#[JsonProperty('badgeUrl')]
27+
public ?string $badgeUrl;
28+
29+
/**
30+
* @var ?string $key The key used to reference this achievement in the API.
31+
*/
32+
#[JsonProperty('key')]
33+
public ?string $key;
34+
35+
/**
36+
* @var ?DateTime $achievedAt The date and time the achievement was completed, in ISO 8601 format.
37+
*/
38+
#[JsonProperty('achievedAt'), Date(Date::TYPE_DATETIME)]
39+
public ?DateTime $achievedAt;
40+
}

src/Types/AchievementCompletionResponse.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ class AchievementCompletionResponse extends JsonSerializableType
1414
public string $completionId;
1515

1616
/**
17-
* @var OneOffAchievementResponse $achievement
17+
* @var ApiAchievementResponse $achievement
1818
*/
1919
#[JsonProperty('achievement')]
20-
public OneOffAchievementResponse $achievement;
20+
public ApiAchievementResponse $achievement;
2121

2222
/**
2323
* @param array{
2424
* completionId: string,
25-
* achievement: OneOffAchievementResponse,
25+
* achievement: ApiAchievementResponse,
2626
* } $values
2727
*/
2828
public function __construct(
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
namespace Trophy\Types;
4+
5+
use Trophy\Core\Json\JsonSerializableType;
6+
use Trophy\Traits\BaseAchievementResponse;
7+
use Trophy\Core\Json\JsonProperty;
8+
use DateTime;
9+
10+
class ApiAchievementResponse extends JsonSerializableType
11+
{
12+
use BaseAchievementResponse;
13+
14+
/**
15+
* @var string $trigger The trigger of the achievement, in this case always 'api'.
16+
*/
17+
#[JsonProperty('trigger')]
18+
public string $trigger;
19+
20+
/**
21+
* @param array{
22+
* trigger: string,
23+
* id: string,
24+
* name: string,
25+
* badgeUrl?: ?string,
26+
* key?: ?string,
27+
* achievedAt?: ?DateTime,
28+
* } $values
29+
*/
30+
public function __construct(
31+
array $values,
32+
) {
33+
$this->trigger = $values['trigger'];
34+
$this->id = $values['id'];
35+
$this->name = $values['name'];
36+
$this->badgeUrl = $values['badgeUrl'] ?? null;
37+
$this->key = $values['key'] ?? null;
38+
$this->achievedAt = $values['achievedAt'] ?? null;
39+
}
40+
41+
/**
42+
* @return string
43+
*/
44+
public function __toString(): string
45+
{
46+
return $this->toJson();
47+
}
48+
}
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
use DateTime;
88
use Trophy\Core\Types\Date;
99

10-
class OneOffAchievementResponse extends JsonSerializableType
10+
class BaseAchievementResponse extends JsonSerializableType
1111
{
1212
/**
1313
* @var string $id The unique ID of the achievement.
@@ -16,10 +16,10 @@ class OneOffAchievementResponse extends JsonSerializableType
1616
public string $id;
1717

1818
/**
19-
* @var ?string $name The name of this achievement.
19+
* @var string $name The name of this achievement.
2020
*/
2121
#[JsonProperty('name')]
22-
public ?string $name;
22+
public string $name;
2323

2424
/**
2525
* @var ?string $badgeUrl The URL of the badge image for the achievement, if one has been uploaded.
@@ -42,7 +42,7 @@ class OneOffAchievementResponse extends JsonSerializableType
4242
/**
4343
* @param array{
4444
* id: string,
45-
* name?: ?string,
45+
* name: string,
4646
* badgeUrl?: ?string,
4747
* key?: ?string,
4848
* achievedAt?: ?DateTime,
@@ -52,7 +52,7 @@ public function __construct(
5252
array $values,
5353
) {
5454
$this->id = $values['id'];
55-
$this->name = $values['name'] ?? null;
55+
$this->name = $values['name'];
5656
$this->badgeUrl = $values['badgeUrl'] ?? null;
5757
$this->key = $values['key'] ?? null;
5858
$this->achievedAt = $values['achievedAt'] ?? null;

src/Types/EventResponseMetricsItem.php

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,41 @@
55
use Trophy\Core\Json\JsonSerializableType;
66
use Trophy\Core\Json\JsonProperty;
77
use Trophy\Core\Types\ArrayType;
8+
use Trophy\Core\Types\Union;
89

910
class EventResponseMetricsItem extends JsonSerializableType
1011
{
1112
/**
12-
* @var ?string $metricId The ID of the metric.
13+
* @var ?string $trigger The trigger of the achievement, in this case either 'metric' or 'streak'.
14+
*/
15+
#[JsonProperty('trigger')]
16+
public ?string $trigger;
17+
18+
/**
19+
* @var ?string $metricId The ID of the metric that these achievements are associated with, if any.
1320
*/
1421
#[JsonProperty('metricId')]
1522
public ?string $metricId;
1623

1724
/**
18-
* @var ?array<MultiStageAchievementResponse> $completed A list of any new achievements that the user has now completed as a result of this event being submitted.
25+
* @var array<MetricAchievementResponse|StreakAchievementResponse> $completed A list of any new achievements that the user has now completed as a result of this event being submitted.
1926
*/
20-
#[JsonProperty('completed'), ArrayType([MultiStageAchievementResponse::class])]
21-
public ?array $completed;
27+
#[JsonProperty('completed'), ArrayType([new Union(MetricAchievementResponse::class, StreakAchievementResponse::class)])]
28+
public array $completed;
2229

2330
/**
2431
* @param array{
32+
* trigger?: ?string,
2533
* metricId?: ?string,
26-
* completed?: ?array<MultiStageAchievementResponse>,
34+
* completed: array<MetricAchievementResponse|StreakAchievementResponse>,
2735
* } $values
2836
*/
2937
public function __construct(
30-
array $values = [],
38+
array $values,
3139
) {
40+
$this->trigger = $values['trigger'] ?? null;
3241
$this->metricId = $values['metricId'] ?? null;
33-
$this->completed = $values['completed'] ?? null;
42+
$this->completed = $values['completed'];
3443
}
3544

3645
/**
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<?php
2+
3+
namespace Trophy\Types;
4+
5+
use Trophy\Core\Json\JsonSerializableType;
6+
use Trophy\Traits\BaseAchievementResponse;
7+
use Trophy\Core\Json\JsonProperty;
8+
use DateTime;
9+
10+
class MetricAchievementResponse extends JsonSerializableType
11+
{
12+
use BaseAchievementResponse;
13+
14+
/**
15+
* @var string $trigger The trigger of the achievement, in this case always 'metric'.
16+
*/
17+
#[JsonProperty('trigger')]
18+
public string $trigger;
19+
20+
/**
21+
* @var string $metricId The ID of the metric associated with this achievement, if any.
22+
*/
23+
#[JsonProperty('metricId')]
24+
public string $metricId;
25+
26+
/**
27+
* @var float $metricValue The value of the metric required to complete the achievement, if this achievement is associated with a metric.
28+
*/
29+
#[JsonProperty('metricValue')]
30+
public float $metricValue;
31+
32+
/**
33+
* @var string $metricName The name of the metric associated with this achievement, if any.
34+
*/
35+
#[JsonProperty('metricName')]
36+
public string $metricName;
37+
38+
/**
39+
* @param array{
40+
* trigger: string,
41+
* metricId: string,
42+
* metricValue: float,
43+
* metricName: string,
44+
* id: string,
45+
* name: string,
46+
* badgeUrl?: ?string,
47+
* key?: ?string,
48+
* achievedAt?: ?DateTime,
49+
* } $values
50+
*/
51+
public function __construct(
52+
array $values,
53+
) {
54+
$this->trigger = $values['trigger'];
55+
$this->metricId = $values['metricId'];
56+
$this->metricValue = $values['metricValue'];
57+
$this->metricName = $values['metricName'];
58+
$this->id = $values['id'];
59+
$this->name = $values['name'];
60+
$this->badgeUrl = $values['badgeUrl'] ?? null;
61+
$this->key = $values['key'] ?? null;
62+
$this->achievedAt = $values['achievedAt'] ?? null;
63+
}
64+
65+
/**
66+
* @return string
67+
*/
68+
public function __toString(): string
69+
{
70+
return $this->toJson();
71+
}
72+
}

src/Types/MetricResponse.php

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,6 @@ class MetricResponse extends JsonSerializableType
2626
#[JsonProperty('name')]
2727
public string $name;
2828

29-
/**
30-
* @var string $emoji The emoji to represent the metric.
31-
*/
32-
#[JsonProperty('emoji')]
33-
public string $emoji;
34-
3529
/**
3630
* @var value-of<MetricStatus> $status The status of the metric.
3731
*/
@@ -45,20 +39,19 @@ class MetricResponse extends JsonSerializableType
4539
public float $current;
4640

4741
/**
48-
* @var array<MultiStageAchievementResponse> $achievements A list of the metric's achievements and the user's progress towards each.
42+
* @var array<MetricAchievementResponse> $achievements A list of the metric's achievements and the user's progress towards each.
4943
*/
50-
#[JsonProperty('achievements'), ArrayType([MultiStageAchievementResponse::class])]
44+
#[JsonProperty('achievements'), ArrayType([MetricAchievementResponse::class])]
5145
public array $achievements;
5246

5347
/**
5448
* @param array{
5549
* id: string,
5650
* key: string,
5751
* name: string,
58-
* emoji: string,
5952
* status: value-of<MetricStatus>,
6053
* current: float,
61-
* achievements: array<MultiStageAchievementResponse>,
54+
* achievements: array<MetricAchievementResponse>,
6255
* } $values
6356
*/
6457
public function __construct(
@@ -67,7 +60,6 @@ public function __construct(
6760
$this->id = $values['id'];
6861
$this->key = $values['key'];
6962
$this->name = $values['name'];
70-
$this->emoji = $values['emoji'];
7163
$this->status = $values['status'];
7264
$this->current = $values['current'];
7365
$this->achievements = $values['achievements'];

0 commit comments

Comments
 (0)