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 =
|
||||
new ProductResultInfoRetriever(textView, productID, historyManager, context);
|
||||
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) {
|
||||
String isbn = ((ISBNParsedResult) result).getISBN();
|
||||
SupplementalInfoRetriever productInfoRetriever =
|
||||
|
@ -79,9 +67,6 @@ public abstract class SupplementalInfoRetriever extends AsyncTask<Object,Object,
|
|||
SupplementalInfoRetriever bookInfoRetriever =
|
||||
new BookResultInfoRetriever(textView, isbn, historyManager, context);
|
||||
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