refactor: move filters out of parser
Filters are now separate structures to include a product or not based on their own set of properties. For now, include and exclude filters are supported. They take a regex as an argument and include a product if the regex matches (or doesn't match) the product name. This commit will allow us to create new filters on product like on a price range. Signed-off-by: Julien Riou <julien@riou.xyz>
This commit is contained in:
parent
b6feb2d656
commit
244c9f68e7
10 changed files with 212 additions and 206 deletions
|
@ -39,35 +39,14 @@ type AmazonParser struct {
|
|||
}
|
||||
|
||||
// NewAmazonParser to create a new AmazonParser instance
|
||||
func NewAmazonParser(marketplace string, partnerTag string, accessKey string, secretKey string, searches []string, includeRegex string, excludeRegex string, amazonFulfilled bool, amazonMerchant bool, affiliateLinks bool) (*AmazonParser, error) {
|
||||
var err error
|
||||
var includeRegexCompiled, excludeRegexCompiled *regexp.Regexp
|
||||
|
||||
log.Debugf("compiling include name regex")
|
||||
if includeRegex != "" {
|
||||
includeRegexCompiled, err = regexp.Compile(includeRegex)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
log.Debugf("compiling exclude name regex")
|
||||
if excludeRegex != "" {
|
||||
excludeRegexCompiled, err = regexp.Compile(excludeRegex)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
func NewAmazonParser(marketplace string, partnerTag string, accessKey string, secretKey string, searches []string, amazonFulfilled bool, amazonMerchant bool, affiliateLinks bool) *AmazonParser {
|
||||
return &AmazonParser{
|
||||
client: NewAmazonServer(marketplace).CreateClient(partnerTag, accessKey, secretKey),
|
||||
searches: searches,
|
||||
includeRegex: includeRegexCompiled,
|
||||
excludeRegex: excludeRegexCompiled,
|
||||
amazonFulfilled: amazonFulfilled,
|
||||
amazonMerchant: amazonMerchant,
|
||||
affiliateLinks: affiliateLinks,
|
||||
}, nil
|
||||
}
|
||||
}
|
||||
|
||||
// Parse Amazon API to return list of products
|
||||
|
@ -139,10 +118,6 @@ func (p *AmazonParser) Parse() ([]*Product, error) {
|
|||
}
|
||||
}
|
||||
|
||||
// apply filters
|
||||
products = filterInclusive(p.includeRegex, products)
|
||||
products = filterExclusive(p.excludeRegex, products)
|
||||
|
||||
return products, nil
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue