Skip to content

Commit f24e508

Browse files
committed
Add rudimentary support for drafter v4
1 parent 4ef2c81 commit f24e508

17 files changed

+468
-69
lines changed

Diff for: phpdraft

+4-2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use PHPDraft\Out\Sorting;
1515
use PHPDraft\Out\Version;
1616
use PHPDraft\Parse\ExecutionException;
1717
use PHPDraft\Parse\JsonToHTML;
18+
use PHPDraft\Parse\LegacyHtmlGenerator;
1819
use PHPDraft\Parse\ParserFactory;
1920
use PHPDraft\Parse\ResourceException;
2021

@@ -56,15 +57,16 @@ try
5657

5758
try
5859
{
59-
$parser = ParserFactory::get();
60+
$parser = ParserFactory::getDrafter();
6061
$parser = $parser->init($apib);
62+
$data = $parser->parseToJson();
6163
}
6264
catch (ResourceException $exception)
6365
{
6466
throw new ExecutionException('No drafter available', 255);
6567
}
6668

67-
$html = new JsonToHTML($parser->parseToJson());
69+
$html = ParserFactory::getJson()->init($data);
6870
$name = 'PHPD_SORT_' . strtoupper($args->getOpt('sort', ''));
6971
$html->sorting = Sorting::${$name} ?? -1;
7072

Diff for: src/PHPDraft/Model/Elements/BasicStructureElement.php

+14-3
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,20 @@ protected function parse_common($object, array &$dependencies): void
9292
{
9393
$this->key = (isset($object->content->key->content)) ? $object->content->key->content : NULL;
9494
$this->type = (isset($object->content->value->element)) ? $object->content->value->element : NULL;
95-
$this->description = isset($object->meta->description) ? htmlentities($object->meta->description) : NULL;
96-
$this->status =
97-
isset($object->attributes->typeAttributes) ? join(', ', $object->attributes->typeAttributes) : NULL;
95+
$this->description = NULL;
96+
if (isset($object->meta->description->content)){
97+
$this->description = htmlentities($object->meta->description->content);
98+
} elseif (isset($object->meta->description)) {
99+
$this->description = htmlentities($object->meta->description);
100+
}
101+
102+
$this->status = NULL;
103+
if (isset($object->attributes->typeAttributes->content)){
104+
$data = array_map(function ($item) { return $item->content; }, $object->attributes->typeAttributes->content);
105+
$this->status = join(', ', $data);
106+
} elseif (isset($object->attributes->typeAttributes)) {
107+
$this->status = join(', ', $object->attributes->typeAttributes);
108+
}
98109

99110
$this->description_as_html();
100111

Diff for: src/PHPDraft/Model/Elements/EnumStructureElement.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ public function parse($object, array &$dependencies): StructureElement
3434
return $this;
3535
}
3636

37-
foreach ($object->content->value->content as $sub_item) {
37+
$enumerations = $object->content->value->attributes->enumerations->content ?? $object->content->value->content;
38+
foreach ($enumerations as $sub_item) {
3839
if (!in_array($sub_item->element, self::DEFAULTS)) {
3940
$dependencies[] = $sub_item->element;
4041
}

Diff for: src/PHPDraft/Model/HTTPRequest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public function __construct(Transition &$parent)
9393
*/
9494
public function parse(stdClass $object): self
9595
{
96-
$this->method = $object->attributes->method;
96+
$this->method = $object->attributes->method->content ?? $object->attributes->method;
9797
$this->title = isset($object->meta->title) ? $object->meta->title : NULL;
9898

9999
if (($this->method === 'POST' || $this->method === 'PUT') && !empty($object->content)) {

Diff for: src/PHPDraft/Model/HTTPResponse.php

+6-2
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,9 @@ public function __construct(Transition $parent)
7979
*/
8080
public function parse(stdClass $object): self
8181
{
82-
if (isset($object->attributes->statusCode)) {
82+
if (isset($object->attributes->statusCode->content)) {
83+
$this->statuscode = intval($object->attributes->statusCode->content);
84+
} elseif (isset($object->attributes->statusCode)) {
8385
$this->statuscode = intval($object->attributes->statusCode);
8486
}
8587
if (isset($object->attributes->headers)) {
@@ -130,7 +132,9 @@ protected function parse_content(stdClass $object): void
130132
continue;
131133
}
132134

133-
if (isset($value->attributes)) {
135+
if (isset($value->attributes->contentType->content)) {
136+
$this->content[$value->attributes->contentType->content] = $value->content;
137+
} elseif (isset($value->attributes->contentType)) {
134138
$this->content[$value->attributes->contentType] = $value->content;
135139
}
136140
}

Diff for: src/PHPDraft/Model/HierarchyElement.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ abstract class HierarchyElement
5555
public function parse(stdClass $object)
5656
{
5757
if (isset($object->meta) && isset($object->meta->title)) {
58-
$this->title = $object->meta->title;
58+
$this->title = $object->meta->title->content ?? $object->meta->title;
5959
}
6060

6161
if (!isset($object->content) || !is_array($object->content)) {

Diff for: src/PHPDraft/Model/Resource.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public function parse(stdClass $object): self
4242
parent::parse($object);
4343

4444
if (isset($object->attributes)) {
45-
$this->href = $object->attributes->href;
45+
$this->href = $object->attributes->href->content ?? $object->attributes->href;
4646
}
4747

4848
foreach ($object->content as $item) {

Diff for: src/PHPDraft/Model/Transition.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class Transition extends HierarchyElement
7070
*
7171
* @param \PHPDraft\Model\Resource $parent A reference to the parent object
7272
*/
73-
public function __construct(\PHPDraft\Model\Resource &$parent)
73+
public function __construct(Resource &$parent)
7474
{
7575
$this->parent = $parent;
7676
}
@@ -87,6 +87,7 @@ public function parse(stdClass $object): self
8787
parent::parse($object);
8888

8989
$this->href = (isset($object->attributes->href)) ? $object->attributes->href : $this->parent->href;
90+
$this->href = $this->href->content ?? $this->href;
9091

9192
if (isset($object->attributes->hrefVariables)) {
9293
$deps = [];

Diff for: src/PHPDraft/Out/BaseTemplateGenerator.php

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<?php
2+
/**
3+
* This file contains the BaseTemplateGenerator.php.
4+
*
5+
* @package PHPDraft\Out
6+
*
7+
* @author Sean Molenaar<[email protected]>
8+
*/
9+
10+
namespace PHPDraft\Out;
11+
12+
13+
use Lukasoppermann\Httpstatus\Httpstatus;
14+
use PHPDraft\Model\Elements\ObjectStructureElement;
15+
16+
abstract class BaseTemplateGenerator
17+
{
18+
/**
19+
* Type of sorting to do on objects.
20+
*
21+
* @var int
22+
*/
23+
public $sorting;
24+
/**
25+
* CSS Files to load.
26+
*
27+
* @var array
28+
*/
29+
public $css = [];
30+
/**
31+
* JS Files to load.
32+
*
33+
* @var array
34+
*/
35+
public $js = [];
36+
/**
37+
* JSON object of the API blueprint.
38+
*
39+
* @var mixed
40+
*/
41+
protected $categories = [];
42+
/**
43+
* The template file to load.
44+
*
45+
* @var string
46+
*/
47+
protected $template;
48+
/**
49+
* The image to use as a logo.
50+
*
51+
* @var string
52+
*/
53+
protected $image = null;
54+
/**
55+
* The base URl of the API.
56+
*
57+
* @var
58+
*/
59+
protected $base_data;
60+
/**
61+
* The Http Status resolver.
62+
*
63+
* @var Httpstatus
64+
*/
65+
protected $http_status;
66+
/**
67+
* Structures used in all data.
68+
*
69+
* @var ObjectStructureElement[]
70+
*/
71+
protected $base_structures = [];
72+
}

0 commit comments

Comments
 (0)