using System.Collections.Generic;
using System.Linq;
using Amazon.SellingPartnerApiSDK.AmazonSpApiSDK.Models.Exceptions;
using Amazon.SellingPartnerApiSDK.AmazonSpApiSDK.Runtime;
namespace Amazon.SellingPartnerApiSDK.Misc
{
///
/// Amazon市场信息
/// https://developer-docs.amazon.com/sp-api/docs/marketplace-ids
///
public class MarketPlace
{
private MarketPlace(string id, Region region, Country country, BaseXML.BaseCurrencyCode currencyCode)
{
Id = id;
Region = region;
Country = country;
CurrencyCode = currencyCode;
}
public string Id { get; set; }
public Region Region { get; set; }
public Country Country { get; set; }
public BaseXML.BaseCurrencyCode CurrencyCode { get; set; }
//NorthAmerica
public static MarketPlace US =>
new MarketPlace("ATVPDKIKX0DER", Region.NorthAmerica, Country.US, BaseXML.BaseCurrencyCode.USD);
public static MarketPlace Canada => new MarketPlace("A2EUQ1WTGCTBG2", Region.NorthAmerica, Country.CA,
BaseXML.BaseCurrencyCode.CAD);
public static MarketPlace Mexico => new MarketPlace("A1AM78C64UM0Y8", Region.NorthAmerica, Country.MX,
BaseXML.BaseCurrencyCode.MXN);
public static MarketPlace Brazil => new MarketPlace("A2Q3Y263D00KWC", Region.NorthAmerica, Country.BR,
BaseXML.BaseCurrencyCode.BRL);
//Europe
public static MarketPlace Spain =>
new MarketPlace("A1RKKUPIHCS9HS", Region.Europe, Country.ES, BaseXML.BaseCurrencyCode.EUR);
public static MarketPlace UnitedKingdom =>
new MarketPlace("A1F83G8C2ARO7P", Region.Europe, Country.UK, BaseXML.BaseCurrencyCode.GBP);
public static MarketPlace France =>
new MarketPlace("A13V1IB3VIYZZH", Region.Europe, Country.FR, BaseXML.BaseCurrencyCode.EUR);
public static MarketPlace Belgium =>
new MarketPlace("AMEN7PMS3EDWL", Region.Europe, Country.BE, BaseXML.BaseCurrencyCode.EUR);
public static MarketPlace Netherlands =>
new MarketPlace("A1805IZSGTT6HS", Region.Europe, Country.NL, BaseXML.BaseCurrencyCode.EUR);
public static MarketPlace Germany =>
new MarketPlace("A1PA6795UKMFR9", Region.Europe, Country.DE, BaseXML.BaseCurrencyCode.EUR);
public static MarketPlace Italy =>
new MarketPlace("APJ6JRA9NG5V4", Region.Europe, Country.IT, BaseXML.BaseCurrencyCode.EUR);
public static MarketPlace Sweden =>
new MarketPlace("A2NODRKZP88ZB9", Region.Europe, Country.SE, BaseXML.BaseCurrencyCode.SEK);
//ZA
public static MarketPlace Poland =>
new MarketPlace("A1C3SOZRARQ6R3", Region.Europe, Country.PL, BaseXML.BaseCurrencyCode.PLN);
public static MarketPlace Egypt =>
new MarketPlace("ARBP9OOSHTCHU", Region.Europe, Country.EG, BaseXML.BaseCurrencyCode.EGP);
public static MarketPlace Turkey =>
new MarketPlace("A33AVAJ2PDY3EV", Region.Europe, Country.TR, BaseXML.BaseCurrencyCode.TRY);
public static MarketPlace SaudiArabia =>
new MarketPlace("A17E79C6D8DWNP", Region.Europe, Country.SA, BaseXML.BaseCurrencyCode.SAR);
public static MarketPlace UnitedArabEmirates => new MarketPlace("A2VIGQ35RCS4UG", Region.Europe, Country.AE,
BaseXML.BaseCurrencyCode.AED);
public static MarketPlace India =>
new MarketPlace("A21TJRUUN4KGV", Region.Europe, Country.IN, BaseXML.BaseCurrencyCode.INR);
//FarEast
public static MarketPlace Singapore =>
new MarketPlace("A19VAU5U5O7RUS", Region.FarEast, Country.SG, BaseXML.BaseCurrencyCode.SGD);
public static MarketPlace Australia =>
new MarketPlace("A39IBJ37TRP1C6", Region.FarEast, Country.AU, BaseXML.BaseCurrencyCode.AUD);
public static MarketPlace Japan =>
new MarketPlace("A1VC38T7YXB528", Region.FarEast, Country.JP, BaseXML.BaseCurrencyCode.JPY);
public static ICollection GetMarketPlaceList()
{
var list = new List
{
//NorthAmerica
US,
Canada,
Mexico,
Brazil,
//Europe
Spain,
UnitedKingdom,
France,
Belgium,
Netherlands,
Germany,
Italy,
Sweden,
Egypt,
Poland,
Turkey,
UnitedArabEmirates,
India,
SaudiArabia,
//FarEast
Singapore,
Australia,
Japan
};
return list;
}
public static MarketPlace GetMarketPlaceById(string marketPlaceId)
{
var list = GetMarketPlaceList();
var marketPlace = list.FirstOrDefault(a => a.Id == marketPlaceId);
if (marketPlace == null)
throw new AmazonInvalidInputException(
"InvalidInput, Unable to found the MarketPlace by the given MarketPlaceId!");
return marketPlace;
}
public static MarketPlace GetMarketplaceByCountryCode(string countryCode)
{
var list = GetMarketPlaceList();
var marketPlace = list.FirstOrDefault(a => a.Country.Code == countryCode);
if (marketPlace == null)
throw new AmazonInvalidInputException(
"InvalidInput, Unable to found the MarketPlace by the given countryCode!");
return marketPlace;
}
}
}