Skip to content

Commit 951341a

Browse files
authored
Merge pull request #28 from b0lle/master
Added serializer for django rest framework
2 parents 641a4fa + d24ce46 commit 951341a

File tree

3 files changed

+8005
-0
lines changed

3 files changed

+8005
-0
lines changed

README.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,34 @@ Throttling value must be `greater than 0` or `False` to disable it. This value t
7575
amazon = AmazonAPI(KEY, SECRET, TAG, COUNTRY, throttling=0.5) # Max one request every two seconds
7676
amazon = AmazonAPI(KEY, SECRET, TAG, COUNTRY, throttling=False) # Unlimited requests per second
7777

78+
**API support**
79+
We provide a serializer for django rest framework, which speeds up your api
80+
implementation.
81+
82+
from amazon.paapi import AmazonAPI
83+
from amazon.serializers import AmazonProductSerializer
84+
from rest_framework import serializers
85+
amazon = AmazonAPI(KEY, SECRET, TAG, COUNTRY)
86+
87+
product = amazon.get_product('B01N5IB20Q')
88+
serialized_product = AmazonProductSerializer(product)
89+
serialized.data # this prints serialized product
90+
91+
if you like to serialize a list of products:
92+
93+
products = amazon.search_products(item_count=40, keywords='Harry')
94+
serialized_products = AmazonProductSerializer(products, many=True)
95+
serialized_products.data
96+
97+
For more Information how to work with serializers see the documentation of
98+
[django rest framework](https://www.django-rest-framework.org/api-guide/serializers/)
99+
100+
78101
Changelog
79102
-------------
103+
Version 3.2.1 (unreleased)
104+
- Added serializer class for django rest framework
105+
- Added serialized data for your convenience
80106
Version 3.2.0
81107
- Added new method for getting browse nodes information.
82108
- Removed the 10 pages limit on search_products and get_variations methods.
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
from rest_framework import serializers
2+
3+
4+
class _AmazonValueUnitSerializer(serializers.Serializer):
5+
value = serializers.FloatField()
6+
unit = serializers.CharField()
7+
8+
9+
class _AmazonDimensionsSerializer(serializers.Serializer):
10+
height = _AmazonValueUnitSerializer()
11+
length = _AmazonValueUnitSerializer()
12+
width = _AmazonValueUnitSerializer()
13+
14+
15+
class _AmazonProductSerializer(serializers.Serializer):
16+
features = serializers.ListField()
17+
languages = serializers.ListField()
18+
formats = serializers.ListField()
19+
pages_count = serializers.ListField()
20+
color = serializers.CharField()
21+
unit_count = serializers.IntegerField()
22+
size = serializers.CharField()
23+
dimensions = _AmazonDimensionsSerializer()
24+
weight = _AmazonValueUnitSerializer()
25+
26+
27+
class _AmazonContributorsSerializer(serializers.Serializer):
28+
name = serializers.CharField()
29+
role = serializers.CharField()
30+
31+
32+
class _AmazonExternalIdsSerializer(serializers.Serializer):
33+
ean = serializers.ListField()
34+
isbn = serializers.ListField()
35+
upc = serializers.ListField()
36+
37+
38+
class _AmazonInfoSerializer(serializers.Serializer):
39+
contributors = _AmazonContributorsSerializer(many=True)
40+
manufacturer = serializers.CharField()
41+
brand = serializers.CharField()
42+
model = serializers.CharField()
43+
part_number = serializers.CharField()
44+
product_group = serializers.CharField()
45+
binding = serializers.CharField()
46+
is_adult = serializers.BooleanField()
47+
audience_rating = serializers.CharField()
48+
edition = serializers.CharField()
49+
warranty = serializers.CharField()
50+
publication_date = serializers.CharField()
51+
release_date = serializers.CharField()
52+
external_ids = _AmazonExternalIdsSerializer()
53+
54+
55+
class _AmazonImageVariantsSerializer(serializers.Serializer):
56+
small = serializers.ListField()
57+
medium = serializers.ListField()
58+
large = serializers.ListField()
59+
60+
61+
class _AmazonImagesSerializer(serializers.Serializer):
62+
small = serializers.CharField()
63+
medium = serializers.CharField()
64+
large = serializers.CharField()
65+
cropped = _AmazonImageVariantsSerializer()
66+
variants = _AmazonImageVariantsSerializer()
67+
68+
69+
class _AmazonTradeInSerializer(serializers.Serializer):
70+
elegible = serializers.BooleanField()
71+
price = serializers.FloatField()
72+
currency = serializers.CharField()
73+
74+
75+
class _AmazonSavingsSerializer(serializers.Serializer):
76+
value = serializers.FloatField()
77+
currency = serializers.CharField()
78+
per_unit = serializers.FloatField()
79+
display = serializers.CharField()
80+
percentage = serializers.FloatField()
81+
82+
83+
class _AmazonPriceSerializer(serializers.Serializer):
84+
value = serializers.FloatField()
85+
currency = serializers.CharField()
86+
per_unit = serializers.FloatField()
87+
display = serializers.CharField()
88+
savings = _AmazonSavingsSerializer()
89+
90+
91+
class _AmazonPvpSerializer(serializers.Serializer):
92+
value = serializers.FloatField()
93+
currency = serializers.CharField()
94+
per_unit = serializers.FloatField()
95+
display = serializers.CharField()
96+
97+
98+
class _AmazonAvailabilitySerializer(serializers.Serializer):
99+
max_order_quantity = serializers.IntegerField()
100+
min_order_quantity = serializers.IntegerField()
101+
type = serializers.CharField()
102+
message = serializers.CharField()
103+
104+
105+
class _AmazonConditionSerializer(serializers.Serializer):
106+
condition = serializers.CharField()
107+
condition_display = serializers.CharField()
108+
sub_condition = serializers.CharField()
109+
sub_condition_display = serializers.CharField()
110+
111+
112+
class _AmazonMerchantSerializer(serializers.Serializer):
113+
default_shipping_country = serializers.CharField()
114+
merchant_id = serializers.CharField()
115+
name = serializers.CharField()
116+
117+
118+
class _AmazonOtherSerializer(serializers.Serializer):
119+
buybox_winner = serializers.BooleanField()
120+
loyalty_points = serializers.IntegerField()
121+
amazon_fulfilled = serializers.BooleanField()
122+
free_shipping_eligible = serializers.BooleanField()
123+
prime_eligible = serializers.BooleanField()
124+
prime_exclusive = serializers.BooleanField()
125+
prime_pantry = serializers.BooleanField()
126+
violates_map = serializers.BooleanField()
127+
offer_id = serializers.CharField()
128+
129+
130+
class _AmazonPricesSerializer(serializers.Serializer):
131+
price = _AmazonPriceSerializer()
132+
pvp = _AmazonPvpSerializer()
133+
availability = _AmazonAvailabilitySerializer()
134+
condition = _AmazonConditionSerializer()
135+
merchant = _AmazonMerchantSerializer()
136+
other = _AmazonOtherSerializer()
137+
138+
139+
class _AmazonOffersSummarySerializer(serializers.Serializer):
140+
highest_price = _AmazonPvpSerializer()
141+
lowest_price = _AmazonPvpSerializer()
142+
condition = _AmazonConditionSerializer()
143+
offer_count = serializers.IntegerField()
144+
145+
146+
class AmazonProductSerializer(serializers.Serializer):
147+
asin = serializers.CharField(max_length=10)
148+
parent_asin = serializers.CharField(max_length=10)
149+
title = serializers.CharField()
150+
url = serializers.CharField()
151+
product = _AmazonProductSerializer()
152+
info = _AmazonInfoSerializer()
153+
images = _AmazonImagesSerializer()
154+
trade_in = _AmazonTradeInSerializer()
155+
prices = _AmazonPricesSerializer()
156+
offers_summary = _AmazonOffersSummarySerializer(many=True)

0 commit comments

Comments
 (0)