mirror of
https://github.com/zxing/zxing.git
synced 2025-03-05 20:48:51 -08:00
Remove Amazon results, per request
This commit is contained in:
parent
a17ea97455
commit
1fa90e7074
|
@ -1,177 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2013 ZXing authors
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.google.zxing.client.android.result.supplement;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.StringReader;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.widget.TextView;
|
|
||||||
import com.google.zxing.client.android.HttpHelper;
|
|
||||||
import com.google.zxing.client.android.LocaleManager;
|
|
||||||
import com.google.zxing.client.android.history.HistoryManager;
|
|
||||||
import org.xmlpull.v1.XmlPullParser;
|
|
||||||
import org.xmlpull.v1.XmlPullParserException;
|
|
||||||
import org.xmlpull.v1.XmlPullParserFactory;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Sean Owen
|
|
||||||
*/
|
|
||||||
final class AmazonInfoRetriever extends SupplementalInfoRetriever {
|
|
||||||
|
|
||||||
private final String type;
|
|
||||||
private final String productID;
|
|
||||||
private final String country;
|
|
||||||
|
|
||||||
AmazonInfoRetriever(TextView textView,
|
|
||||||
String type,
|
|
||||||
String productID,
|
|
||||||
HistoryManager historyManager,
|
|
||||||
Context context) {
|
|
||||||
super(textView, historyManager);
|
|
||||||
String country = LocaleManager.getCountry(context);
|
|
||||||
if ("ISBN".equals(type) && !Locale.US.getCountry().equals(country)) {
|
|
||||||
type = "EAN";
|
|
||||||
}
|
|
||||||
this.type = type;
|
|
||||||
this.productID = productID;
|
|
||||||
this.country = country;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
void retrieveSupplementalInfo() throws IOException {
|
|
||||||
boolean success = doRetrieveForCountry(country);
|
|
||||||
if (!success && !"US".equals(country)) {
|
|
||||||
// Also show US results to expand scope of results
|
|
||||||
doRetrieveForCountry("US");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean doRetrieveForCountry(String theCountry) throws IOException {
|
|
||||||
|
|
||||||
CharSequence contents =
|
|
||||||
HttpHelper.downloadViaHttp("https://bsplus.srowen.com/ss?c=" + theCountry + "&t=" + type + "&i=" + productID,
|
|
||||||
HttpHelper.ContentType.XML);
|
|
||||||
|
|
||||||
String detailPageURL = null;
|
|
||||||
Collection<String> authors = new ArrayList<>();
|
|
||||||
String title = null;
|
|
||||||
String formattedNewPrice = null;
|
|
||||||
String formattedUsedPrice = null;
|
|
||||||
boolean error = false;
|
|
||||||
|
|
||||||
try {
|
|
||||||
XmlPullParser xpp = buildParser(contents);
|
|
||||||
|
|
||||||
boolean seenItem = false;
|
|
||||||
boolean seenLowestNewPrice = false;
|
|
||||||
boolean seenLowestUsedPrice = false;
|
|
||||||
|
|
||||||
boolean done = false;
|
|
||||||
for (int eventType = xpp.getEventType();
|
|
||||||
!done && eventType != XmlPullParser.END_DOCUMENT;
|
|
||||||
eventType = xpp.next()) {
|
|
||||||
if (eventType == XmlPullParser.START_TAG) {
|
|
||||||
String name = xpp.getName();
|
|
||||||
switch (name) {
|
|
||||||
case "Item":
|
|
||||||
if (seenItem) {
|
|
||||||
done = true; // terminates loop
|
|
||||||
} else {
|
|
||||||
seenItem = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "DetailPageURL":
|
|
||||||
assertTextNext(xpp);
|
|
||||||
detailPageURL = xpp.getText();
|
|
||||||
break;
|
|
||||||
case "Author":
|
|
||||||
assertTextNext(xpp);
|
|
||||||
authors.add(xpp.getText());
|
|
||||||
break;
|
|
||||||
case "Title":
|
|
||||||
assertTextNext(xpp);
|
|
||||||
title = xpp.getText();
|
|
||||||
break;
|
|
||||||
case "LowestNewPrice":
|
|
||||||
seenLowestNewPrice = true;
|
|
||||||
seenLowestUsedPrice = false;
|
|
||||||
break;
|
|
||||||
case "LowestUsedPrice":
|
|
||||||
seenLowestNewPrice = false;
|
|
||||||
seenLowestUsedPrice = true;
|
|
||||||
break;
|
|
||||||
case "FormattedPrice":
|
|
||||||
if (seenLowestNewPrice || seenLowestUsedPrice) {
|
|
||||||
assertTextNext(xpp);
|
|
||||||
String theText = xpp.getText();
|
|
||||||
if (seenLowestNewPrice) {
|
|
||||||
formattedNewPrice = theText;
|
|
||||||
} else {
|
|
||||||
formattedUsedPrice = theText;
|
|
||||||
}
|
|
||||||
seenLowestNewPrice = false;
|
|
||||||
seenLowestUsedPrice = false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "Errors":
|
|
||||||
error = true;
|
|
||||||
done = true; // terminates loop
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (XmlPullParserException xppe) {
|
|
||||||
throw new IOException(xppe);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (error || detailPageURL == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Collection<String> newTexts = new ArrayList<>();
|
|
||||||
maybeAddText(title, newTexts);
|
|
||||||
maybeAddTextSeries(authors, newTexts);
|
|
||||||
if (formattedNewPrice != null) {
|
|
||||||
maybeAddText(formattedNewPrice, newTexts);
|
|
||||||
} else if (formattedUsedPrice != null) {
|
|
||||||
maybeAddText(formattedUsedPrice, newTexts);
|
|
||||||
}
|
|
||||||
|
|
||||||
append(productID, "Amazon " + theCountry, newTexts.toArray(new String[newTexts.size()]), detailPageURL);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void assertTextNext(XmlPullParser xpp) throws XmlPullParserException, IOException {
|
|
||||||
if (xpp.next() != XmlPullParser.TEXT) {
|
|
||||||
throw new IOException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static XmlPullParser buildParser(CharSequence contents) throws XmlPullParserException {
|
|
||||||
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
|
|
||||||
factory.setNamespaceAware(true);
|
|
||||||
XmlPullParser xpp = factory.newPullParser();
|
|
||||||
xpp.setInput(new StringReader(contents.toString()));
|
|
||||||
return xpp;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -59,18 +59,6 @@ public abstract class SupplementalInfoRetriever extends AsyncTask<Object,Object,
|
||||||
SupplementalInfoRetriever productRetriever =
|
SupplementalInfoRetriever productRetriever =
|
||||||
new ProductResultInfoRetriever(textView, productID, historyManager, context);
|
new ProductResultInfoRetriever(textView, productID, historyManager, context);
|
||||||
productRetriever.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
productRetriever.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||||
switch (productID.length()) {
|
|
||||||
case 12:
|
|
||||||
SupplementalInfoRetriever upcInfoRetriever =
|
|
||||||
new AmazonInfoRetriever(textView, "UPC", normalizedProductID, historyManager, context);
|
|
||||||
upcInfoRetriever.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
|
||||||
break;
|
|
||||||
case 13:
|
|
||||||
SupplementalInfoRetriever eanInfoRetriever =
|
|
||||||
new AmazonInfoRetriever(textView, "EAN", normalizedProductID, historyManager, context);
|
|
||||||
eanInfoRetriever.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else if (result instanceof ISBNParsedResult) {
|
} else if (result instanceof ISBNParsedResult) {
|
||||||
String isbn = ((ISBNParsedResult) result).getISBN();
|
String isbn = ((ISBNParsedResult) result).getISBN();
|
||||||
SupplementalInfoRetriever productInfoRetriever =
|
SupplementalInfoRetriever productInfoRetriever =
|
||||||
|
@ -79,9 +67,6 @@ public abstract class SupplementalInfoRetriever extends AsyncTask<Object,Object,
|
||||||
SupplementalInfoRetriever bookInfoRetriever =
|
SupplementalInfoRetriever bookInfoRetriever =
|
||||||
new BookResultInfoRetriever(textView, isbn, historyManager, context);
|
new BookResultInfoRetriever(textView, isbn, historyManager, context);
|
||||||
bookInfoRetriever.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
bookInfoRetriever.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||||
SupplementalInfoRetriever amazonInfoRetriever =
|
|
||||||
new AmazonInfoRetriever(textView, "ISBN", isbn, historyManager, context);
|
|
||||||
amazonInfoRetriever.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue