1
0
mirror of https://github.com/ToxicCrack/PrintABrick.git synced 2025-05-17 04:40:08 -07:00

Edit Rebrickable dererialization

Edit getSetParts entity deserialization to match getPart entity
This commit is contained in:
David Hübner 2016-11-29 10:22:17 +01:00
parent f7fc175b11
commit 05859a5fb6
3 changed files with 41 additions and 22 deletions

View File

@ -17,7 +17,6 @@ class PartPropertyNameConverter implements NameConverterInterface
case 'part_name': return 'name'; case 'part_name': return 'name';
case 'part_id': return 'id'; case 'part_id': return 'id';
case 'part_type_id': return 'typeId'; case 'part_type_id': return 'typeId';
case 'rb_color_id': return 'colorId';
default: return $propertyName; default: return $propertyName;
} }
} }

View File

@ -22,6 +22,12 @@ class Part
* @var string * @var string
*/ */
private $name; private $name;
/**
* Part type 1 = normal part, 2 = spare part.
*
* @var int
*/
private $type;
/** /**
* Year the part first appeared in sets. * Year the part first appeared in sets.
* *
@ -40,28 +46,12 @@ class Part
* @var string * @var string
*/ */
private $category; private $category;
/**
* Part category/type id matching getPartTypes method values.
*
* @var int
*/
private $typeId;
/** /**
* Array of colors the part appears in. * Array of colors the part appears in.
* *
* @var array * @var array
*/ */
private $colors; private $colors;
/**
* Part color id matching getColors method values.
*
* @var
*/
private $colorId;
/** /**
* Array of related Part IDs used by external systems. * Array of related Part IDs used by external systems.
* *
@ -101,6 +91,22 @@ class Part
$this->id = $id; $this->id = $id;
} }
/**
* @return int
*/
public function getType()
{
return $this->type;
}
/**
* @param int $type
*/
public function setType($type)
{
$this->type = $type;
}
/** /**
* @return int * @return int
*/ */
@ -132,7 +138,6 @@ class Part
{ {
$this->name = $name; $this->name = $name;
} }
/** /**
* @return mixed * @return mixed
*/ */
@ -180,7 +185,6 @@ class Part
{ {
$this->category = $category; $this->category = $category;
} }
/** /**
* @return mixed * @return mixed
*/ */
@ -196,7 +200,6 @@ class Part
{ {
$this->colors = $colors; $this->colors = $colors;
} }
/** /**
* @return mixed * @return mixed
*/ */

View File

@ -74,7 +74,8 @@ class Rebrickable
{ {
$encoders = array(new JsonEncoder()); $encoders = array(new JsonEncoder());
$nameConverter = new PartPropertyNameConverter(); $nameConverter = new PartPropertyNameConverter();
$normalizers = array(new ObjectNormalizer(null, $nameConverter), new ArrayDenormalizer()); $objectNormalizer = new ObjectNormalizer(null, $nameConverter);
$normalizers = array($objectNormalizer, new ArrayDenormalizer());
$serializer = new Serializer($normalizers, $encoders); $serializer = new Serializer($normalizers, $encoders);
return $serializer; return $serializer;
@ -100,7 +101,23 @@ class Rebrickable
$serializer = $this->getSerializer(); $serializer = $this->getSerializer();
$partsSTD = json_decode($data, true)[0]['parts']; $partsSTD = json_decode($data, true)[0]['parts'];
return $data ? $serializer->denormalize($partsSTD, Part::class.'[]', self::FORMAT) : null; if ($data) {
$parts = $serializer->denormalize($partsSTD, Part::class.'[]', self::FORMAT);
foreach ($parts as $key => &$part) {
$part->setCategory($this->getPartTypes()[$partsSTD[$key]['part_type_id']]);
$part->setColors([
0 => [
'color_name' => $partsSTD[$key]['color_name'],
'rb_color_id' => $partsSTD[$key]['rb_color_id'],
'ldraw_color_id' => $partsSTD[$key]['ldraw_color_id'],
],
]);
}
return $data;
}
return null;
} }
/** /**