8000 Separating API Modules by GriceTurrble · Pull Request #55 · python-amazon-mws/python-amazon-mws · GitHub
[go: up one dir, main page]

Skip to content
This repository was archived by the owner on Jan 4, 2025. It is now read-only.
18 changes: 17 additions & 1 deletion mws/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import

from .mws import * # noqa: F401, F403
from .mws import MWS, MWSError
from .apis import Feeds, Finances, InboundShipments, Inventory, OffAmazonPayments, Orders,\
Products, Recommendations, Reports, Sellers
__all__ = [
'Feeds',
'Finances',
'InboundShipments',
'Inventory',
'MWS',
'MWSError',
'OffAmazonPayments',
'Orders',
'Products',
'Recommendations',
'Reports',
'Sellers',
]
25 changes: 25 additions & 0 deletions mws/apis/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from .feeds import Feeds
from .finances import Finances
from .inbound_shipments import InboundShipments
from .inventory import Inventory
from .merchant_fulfillment import MerchantFulfillment
from .offamazonpayments import OffAmazonPayments
from .orders import Orders
from .products import Products
from .recommendations import Recommendations
from .reports import Reports
from .sellers import Sellers

__all__ = [
'Feeds',
'Finances',
'InboundShipments',
'Inventory',
'MerchantFulfillment',
'OffAmazonPayments',
'Orders',
'Products',
'Recommendations',
'Reports',
'Sellers',
]
85 changes: 85 additions & 0 deletions mws/apis/feeds.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
"""
Amazon MWS Feeds API
"""
from __future__ import absolute_import
import warnings

from ..mws import MWS
from .. import utils
from ..decorators import next_token_action


class Feeds(MWS):
"""
Amazon MWS Feeds API
"""
ACCOUNT_TYPE = "Merchant"

NEXT_TOKEN_OPERATIONS = [
'GetFeedSubmissionList',
]

def submit_feed(self, feed, feed_type, marketplaceids=None,
content_type="text/xml", purge='false'):
"""
Uploads a feed ( xml or .tsv ) to the seller's inventory.
Can be used for creating/updating products on Amazon.
"""
data = dict(Action='SubmitFeed',
FeedType=feed_type,
PurgeAndReplace=purge)
data.update(utils.enumerate_param('MarketplaceIdList.Id.', marketplaceids))
md5_hash = utils.calc_md5(feed)
return self.make_request(data, method="POST", body=feed,
extra_headers={'Content-MD5': md5_hash, 'Content-Type': content_type})

@next_token_action('GetFeedSubmissionList')
def get_feed_submission_list(self, feedids=None, max_count=None, feedtypes=None,
processingstatuses=None, fromdate=None, todate=None,
next_token=None):
"""
Returns a list of all feed submissions submitted in the previous 90 days.
That match the query parameters.
"""

data = dict(Action='GetFeedSubmissionList',
MaxCount=max_count,
SubmittedFromDate=fromdate,
SubmittedToDate=todate,)
data.update(utils.enumerate_param('FeedSubmissionIdList.Id', feedids))
data.update(utils.enumerate_param('FeedTypeList.Type.', feedtypes))
data.update(utils.enumerate_param('FeedProcessingStatusList.Status.', processingstatuses))
return self.make_request(data)

def get_submission_list_by_next_token(self, token):
"""
Deprecated.
Use `get_feed_submission_list(next_token=token)` instead.
"""
# data = dict(Action='GetFeedSubmissionListByNextToken', NextToken=token)
# return self.make_request(data)
warnings.warn(
"Use `get_feed_submission_list(next_token=token)` instead.",
DeprecationWarning,
)
return self.get_feed_submission_list(next_token=token)

def get_feed_submission_count(self, feedtypes=None, processingstatuses=None, fromdate=None, todate=None):
data = dict(Action='GetFeedSubmissionCount',
SubmittedFromDate=fromdate,
SubmittedToDate=todate)
data.update(utils.enumerate_param('FeedTypeList.Type.', feedtypes))
data.update(utils.enumerate_param('FeedProcessingStatusList.Status.', processingstatuses))
return self.make_request(data)

def cancel_feed_submissions(self, feedids=None, feedtypes=None, fromdate=None, todate=None):
data = dict(Action='CancelFeedSubmissions',
SubmittedFromDate=fromdate,
SubmittedToDate=todate)
data.update(utils.enumerate_param('FeedSubmissionIdList.Id.', feedids))
data.update(utils.enumerate_param('FeedTypeList.Type.', feedtypes))
return self.make_request(data)

def get_feed_submission_result(self, feedid):
data = dict(Action='GetFeedSubmissionResult', FeedSubmissionId=feedid)
return self.make_request(data, rootkey='Message')
73 changes: 73 additions & 0 deletions mws/apis/finances.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
"""
Amazon MWS Finances API
"""
from __future__ import absolute_import
import warnings

from ..mws import MWS
# from .. import utils
from ..decorators import next_token_action


class Finances(MWS):
"""
Amazon MWS Finances API
"""
URI = "/Finances/2015-05-01"
VERSION = "2015-05-01"
NS = '{https://mws.amazonservices.com/Finances/2015-05-01}'
NEXT_TOKEN_OPERATIONS = [
'ListFinancialEventGroups',
'ListFinancialEvents',
]

@next_token_action('ListFinancialEventGroups')
def list_financial_event_groups(self, created_after=None, created_before=None, max_results=None, next_token=None):
"""
Returns a list of financial event groups
"""
data = dict(
Action='ListFinancialEventGroups',
FinancialEventGroupStartedAfter=created_after,
FinancialEventGroupStartedBefore=created_before,
MaxResultsPerPage=max_results,
)
return self.make_request(data)

def list_financial_event_groups_by_next_token(self, token):
"""
Deprecated.
Use `list_financial_event_groups(next_token=token)` instead.
"""
warnings.warn(
"Use `list_financial_event_groups(next_token=token)` instead.",
DeprecationWarning,
)
return self.list_financial_event_groups(next_token=token)

@next_token_action('ListFinancialEvents')
def list_financial_events(self, financial_event_group_id=None, amazon_order_id=None, posted_after=None,
posted_before=None, max_results=None, next_token=None):
"""
Returns financial events for a user-provided FinancialEventGroupId or AmazonOrderId
"""
data = dict(
Action='ListFinancialEvents',
FinancialEventGroupId=financial_event_group_id,
AmazonOrderId=amazon_order_id,
PostedAfter=posted_after,
PostedBefore=posted_before,
MaxResultsPerPage=max_results,
)
return self.make_request(data)

def list_financial_events_by_next_token(self, token):
"""
Deprecated.
Use `list_financial_events(next_token=token)` instead.
"""
warnings.warn(
"Use `list_financial_events(next_token=token)` instead.",
DeprecationWarning,
)
return self.list_financial_events(next_token=token)
Loading
0