Skip to content

Commit 882fc4b

Browse files
author
miroslav
committed
Add image creation && fixes
1 parent 1414024 commit 882fc4b

File tree

15 files changed

+227
-9
lines changed

15 files changed

+227
-9
lines changed

src/Enum/ImageResponseFormatEnum.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
namespace Itsimiro\OpenAI\Enum;
4+
5+
enum ImageResponseFormatEnum: string
6+
{
7+
case URL = 'url';
8+
case BASE64 = 'b64_json';
9+
}

src/Enum/ImageSizeEnum.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
namespace Itsimiro\OpenAI\Enum;
4+
5+
enum ImageSizeEnum: string
6+
{
7+
case SMALL = '256x256';
8+
case MEDIUM = '512x512';
9+
case LARGE = '1024x1024';
10+
}

src/Services/AIModels/Dalle.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,21 @@
22

33
namespace Itsimiro\OpenAI\Services\AIModels;
44

5+
use Itsimiro\OpenAI\Services\API\ApiService;
6+
use Itsimiro\OpenAI\Services\API\Results\CreateImageResult;
7+
use Itsimiro\OpenAI\Services\API\UrlService;
8+
use Itsimiro\OpenAI\Services\DataTransferObjects\CreateImageParameters;
9+
510
class Dalle
611
{
12+
public function __construct(private readonly ApiService $apiService, private readonly UrlService $urlService)
13+
{}
714

15+
public function createImage(CreateImageParameters $parameters): CreateImageResult
16+
{
17+
return $this->apiService->getResult(
18+
$this->apiService->sendRequest('POST', $this->urlService->createImage(), $parameters->toArray()),
19+
CreateImageResult::class
20+
);
21+
}
822
}

src/Services/API/Results/BodyParameters.php renamed to src/Services/API/Constants/BodyParameters.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace Itsimiro\OpenAI\Services\API\Results;
3+
namespace Itsimiro\OpenAI\Services\API\Constants;
44

55
class BodyParameters
66
{
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php
2+
3+
namespace Itsimiro\OpenAI\Services\API\Constants;
4+
5+
class ImageBodyParameters
6+
{
7+
public const CREATED = 'created';
8+
public const DATA = 'data';
9+
public const URL = 'url';
10+
public const BASE64 = 'b64_json';
11+
}

src/Services/API/Results/ChatResult.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
namespace Itsimiro\OpenAI\Services\API\Results;
44

5-
use Spatie\LaravelData\Data;
6-
75
class ChatResult extends CompletionResult implements ResultInterface
86
{
97

src/Services/API/Results/CompletionResult.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,23 @@
22

33
namespace Itsimiro\OpenAI\Services\API\Results;
44

5+
use Itsimiro\OpenAI\Services\API\Constants\BodyParameters;
56
use Spatie\LaravelData\Data;
7+
use Spatie\LaravelData\Attributes\Validation\ArrayType;
68

79
class CompletionResult extends Data implements ResultInterface
810
{
9-
public function __construct(public array $result)
11+
public function __construct(
12+
#[ArrayType([
13+
BodyParameters::ID,
14+
BodyParameters::OBJECT,
15+
BodyParameters::CREATED_AT,
16+
BodyParameters::MODEL,
17+
BodyParameters::CHOICES,
18+
BodyParameters::USAGE
19+
])]
20+
public array $result
21+
)
1022
{}
1123

1224
public function getId(): string
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
namespace Itsimiro\OpenAI\Services\API\Results;
4+
5+
use Illuminate\Support\Arr;
6+
use Itsimiro\OpenAI\Services\API\Constants\ImageBodyParameters;
7+
use Itsimiro\OpenAI\Services\DataTransferObjects\Image;
8+
use Spatie\LaravelData\Attributes\Validation\ArrayType;
9+
use Spatie\LaravelData\Data;
10+
11+
class CreateImageResult extends Data implements ResultInterface
12+
{
13+
public function __construct(
14+
#[ArrayType([
15+
ImageBodyParameters::CREATED,
16+
ImageBodyParameters::DATA,
17+
])]
18+
public array $result
19+
)
20+
{}
21+
22+
public function getImages(): array
23+
{
24+
return array_map(
25+
fn (array $image) => new Image($image),
26+
Arr::get($this->result, ImageBodyParameters::DATA, [])
27+
);
28+
}
29+
30+
public function getCreatedDate()
31+
{
32+
return Arr::get($this->result, ImageBodyParameters::CREATED);
33+
}
34+
}

src/Services/API/Results/EditsResult.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,20 @@
22

33
namespace Itsimiro\OpenAI\Services\API\Results;
44

5+
use Itsimiro\OpenAI\Services\API\Constants\BodyParameters;
6+
use Spatie\LaravelData\Attributes\Validation\ArrayType;
57
use Spatie\LaravelData\Data;
68

79
class EditsResult extends Data implements ResultInterface
810
{
9-
public function __construct(public array $result)
11+
public function __construct(
12+
#[ArrayType([
13+
BodyParameters::CREATED_AT,
14+
BodyParameters::CHOICES,
15+
BodyParameters::USAGE
16+
])]
17+
public array $result
18+
)
1019
{}
1120

1221
public function getCreateAt(): int

src/Services/API/Results/ModelResult.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,20 @@
33
namespace Itsimiro\OpenAI\Services\API\Results;
44

55
use Illuminate\Support\Arr;
6+
use Itsimiro\OpenAI\Services\API\Constants\BodyParameters;
7+
use Spatie\LaravelData\Attributes\Validation\ArrayType;
68
use Spatie\LaravelData\Data;
79

810
class ModelResult extends Data implements ResultInterface
911
{
10-
public function __construct(public array $result)
12+
public function __construct(
13+
#[ArrayType([
14+
BodyParameters::ID,
15+
BodyParameters::OBJECT,
16+
BodyParameters::OWNER_BY
17+
])]
18+
public array $result
19+
)
1120
{}
1221

1322
public function getId(): string

0 commit comments

Comments
 (0)