1: <?php
2:
3: namespace SellerLabs\Snagshout\Normalizer;
4:
5: use Joli\Jane\Runtime\Reference;
6: use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
7: use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
8: use Symfony\Component\Serializer\Normalizer\SerializerAwareNormalizer;
9: class ProductNormalizer extends SerializerAwareNormalizer implements DenormalizerInterface, NormalizerInterface
10: {
11: public function supportsDenormalization($data, $type, $format = null)
12: {
13: if ($type !== 'SellerLabs\\Snagshout\\Model\\Product') {
14: return false;
15: }
16: return true;
17: }
18: public function supportsNormalization($data, $format = null)
19: {
20: if ($data instanceof \SellerLabs\Snagshout\Model\Product) {
21: return true;
22: }
23: return false;
24: }
25: public function denormalize($data, $class, $format = null, array $context = array())
26: {
27: $object = new \SellerLabs\Snagshout\Model\Product();
28: if (property_exists($data, 'externalUrl')) {
29: $object->setExternalUrl($data->{'externalUrl'});
30: }
31: if (property_exists($data, 'marketplace')) {
32: $object->setMarketplace($data->{'marketplace'});
33: }
34: if (property_exists($data, 'name')) {
35: $object->setName($data->{'name'});
36: }
37: if (property_exists($data, 'keywords')) {
38: $object->setKeywords($data->{'keywords'});
39: }
40: if (property_exists($data, 'description')) {
41: $object->setDescription($data->{'description'});
42: }
43: if (property_exists($data, 'url')) {
44: $object->setUrl($data->{'url'});
45: }
46: if (property_exists($data, 'ean')) {
47: $object->setEan($data->{'ean'});
48: }
49: if (property_exists($data, 'currency')) {
50: $object->setCurrency($data->{'currency'});
51: }
52: if (property_exists($data, 'price')) {
53: $object->setPrice($data->{'price'});
54: }
55: if (property_exists($data, 'id')) {
56: $object->setId($data->{'id'});
57: }
58: if (property_exists($data, 'amazonData')) {
59: $object->setAmazonData($this->serializer->deserialize($data->{'amazonData'}, 'SellerLabs\\Snagshout\\Model\\AmazonData', 'raw', $context));
60: }
61: if (property_exists($data, 'mainCategory')) {
62: $object->setMainCategory($this->serializer->deserialize($data->{'mainCategory'}, 'SellerLabs\\Snagshout\\Model\\Category', 'raw', $context));
63: }
64: if (property_exists($data, 'featuredImage')) {
65: $object->setFeaturedImage($this->serializer->deserialize($data->{'featuredImage'}, 'SellerLabs\\Snagshout\\Model\\Image', 'raw', $context));
66: }
67: if (property_exists($data, 'media')) {
68: $values = array();
69: foreach ($data->{'media'} as $value) {
70: $values[] = $this->serializer->deserialize($value, 'SellerLabs\\Snagshout\\Model\\Image', 'raw', $context);
71: }
72: $object->setMedia($values);
73: }
74: if (property_exists($data, 'shipping')) {
75: $values_1 = array();
76: foreach ($data->{'shipping'} as $value_1) {
77: $values_1[] = $this->serializer->deserialize($value_1, 'SellerLabs\\Snagshout\\Model\\Shipping', 'raw', $context);
78: }
79: $object->setShipping($values_1);
80: }
81: if (property_exists($data, 'attributes')) {
82: $values_2 = array();
83: foreach ($data->{'attributes'} as $value_2) {
84: $values_2[] = $this->serializer->deserialize($value_2, 'SellerLabs\\Snagshout\\Model\\Attribute', 'raw', $context);
85: }
86: $object->setAttributes($values_2);
87: }
88: if (property_exists($data, 'bookmarkedBy')) {
89: $object->setBookmarkedBy($this->serializer->deserialize($data->{'bookmarkedBy'}, 'SellerLabs\\Snagshout\\Model\\BookmarkMetadata', 'raw', $context));
90: }
91: return $object;
92: }
93: public function normalize($object, $format = null, array $context = array())
94: {
95: $data = new \stdClass();
96: if (null !== $object->getExternalUrl()) {
97: $data->{'externalUrl'} = $object->getExternalUrl();
98: }
99: if (null !== $object->getMarketplace()) {
100: $data->{'marketplace'} = $object->getMarketplace();
101: }
102: if (null !== $object->getName()) {
103: $data->{'name'} = $object->getName();
104: }
105: if (null !== $object->getKeywords()) {
106: $data->{'keywords'} = $object->getKeywords();
107: }
108: if (null !== $object->getDescription()) {
109: $data->{'description'} = $object->getDescription();
110: }
111: if (null !== $object->getUrl()) {
112: $data->{'url'} = $object->getUrl();
113: }
114: if (null !== $object->getEan()) {
115: $data->{'ean'} = $object->getEan();
116: }
117: if (null !== $object->getCurrency()) {
118: $data->{'currency'} = $object->getCurrency();
119: }
120: if (null !== $object->getPrice()) {
121: $data->{'price'} = $object->getPrice();
122: }
123: if (null !== $object->getId()) {
124: $data->{'id'} = $object->getId();
125: }
126: if (null !== $object->getAmazonData()) {
127: $data->{'amazonData'} = $this->serializer->serialize($object->getAmazonData(), 'raw', $context);
128: }
129: if (null !== $object->getMainCategory()) {
130: $data->{'mainCategory'} = $this->serializer->serialize($object->getMainCategory(), 'raw', $context);
131: }
132: if (null !== $object->getFeaturedImage()) {
133: $data->{'featuredImage'} = $this->serializer->serialize($object->getFeaturedImage(), 'raw', $context);
134: }
135: if (null !== $object->getMedia()) {
136: $values = array();
137: foreach ($object->getMedia() as $value) {
138: $values[] = $this->serializer->serialize($value, 'raw', $context);
139: }
140: $data->{'media'} = $values;
141: }
142: if (null !== $object->getShipping()) {
143: $values_1 = array();
144: foreach ($object->getShipping() as $value_1) {
145: $values_1[] = $this->serializer->serialize($value_1, 'raw', $context);
146: }
147: $data->{'shipping'} = $values_1;
148: }
149: if (null !== $object->getAttributes()) {
150: $values_2 = array();
151: foreach ($object->getAttributes() as $value_2) {
152: $values_2[] = $this->serializer->serialize($value_2, 'raw', $context);
153: }
154: $data->{'attributes'} = $values_2;
155: }
156: if (null !== $object->getBookmarkedBy()) {
157: $data->{'bookmarkedBy'} = $this->serializer->serialize($object->getBookmarkedBy(), 'raw', $context);
158: }
159: return $data;
160: }
161: }