Subversion Repositories SmartDukaan

Rev

Rev 12355 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.support.utils;

import in.shop2020.model.v1.catalog.AmazonPromotion;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.security.DigestInputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;

import org.apache.commons.codec.binary.Base64;

import com.amazonaws.mws.MarketplaceWebService;
import com.amazonaws.mws.MarketplaceWebServiceClient;
import com.amazonaws.mws.MarketplaceWebServiceConfig;
import com.amazonaws.mws.MarketplaceWebServiceException;
import com.amazonaws.mws.model.IdList;
import com.amazonaws.mws.model.SubmitFeedRequest;
import com.amazonaws.mws.model.SubmitFeedResponse;
import com.ibm.icu.text.SimpleDateFormat;

public class PromotionFeed {
        public String CreatePromotionFeed(List<AmazonPromotion> amazonPromotions) throws IOException{ 
                BufferedReader reader = null;
                BufferedWriter writer = null;
                String promotionFilename = null;
                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
                Calendar calendar = Calendar.getInstance();
                try {
                        promotionFilename = "/tmp/Promotion-"+System.currentTimeMillis()+".txt";
                        reader = new BufferedReader(new FileReader("/tmp/p.txt"));
                        writer = new BufferedWriter(new FileWriter(promotionFilename));
                        String Line;
                        while ((Line = reader.readLine()) != null) {
                                writer.write(Line+"\n");
                        }
                        for(AmazonPromotion am:amazonPromotions){
                            calendar.setTimeInMillis(am.getStartDate());
                        String start = formatter.format(calendar.getTime());
                        calendar.setTimeInMillis(am.getEndDate());
                String end = formatter.format(calendar.getTime());
                                writer.write(am.getSku()+"\t"+
                                                ""+"\t"
                                                +""+"\t"
                                                +""+"\t"
                                                +""+"\t"
                                                +""+"\t"
                                                +"\t"
                                                +"\t"
                                                +"\t"
                                                +"\t"
                                                +"PartialUpdate"+"\t"
                                                +am.getStandardPrice()+"\t"
                                                +""+"\t"        
                                                +""+"\t"
                                                +""+"\t"
                                                +""+"\t"
                                                +"1"+"\t"
                                                +am.getSalePrice()+"\t"
                                                +start+"\t"
                                                +end+"\t"
                                                +""+"\t"+"\n");
                        }

                } catch (FileNotFoundException e1) {
                        e1.printStackTrace();
                }
                finally{
                        writer.close();
                        reader.close();
                        System.out.println("Done");
                }
                return promotionFilename;
        }
        public String SubmitPromotionFeed(String file) throws FileNotFoundException, InterruptedException, MarketplaceWebServiceException{
                MarketplaceWebService service = getMarketplaceServiceInstance();
                SubmitFeedRequest requestPromotion = new SubmitFeedRequest();
                requestPromotion.setMerchant("AF6E3O0VE0X4D");
                requestPromotion.setMarketplaceIdList(new IdList(Arrays.asList("A21TJRUUN4KGV")));
                requestPromotion.setFeedType("_POST_FLAT_FILE_LISTINGS_DATA_");
                FileInputStream promotionfis = new FileInputStream(file);
                requestPromotion.setContentMD5(computeContentMD5HeaderValue(promotionfis));
                requestPromotion.setFeedContent(promotionfis);
                return invokeSubmitFeed(service,requestPromotion);
        }
        public MarketplaceWebService getMarketplaceServiceInstance(){
                final String accessKeyId = "AKIAII3SGRXBJDPCHSGQ";
                final String secretAccessKey = "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";
                final String appName = "Test";
                final String appVersion = "1.0";
                MarketplaceWebServiceConfig config = new MarketplaceWebServiceConfig();
                config.setServiceURL("https://mws.amazonservices.in");
                return new MarketplaceWebServiceClient(
                                accessKeyId, secretAccessKey, appName, appVersion, config);
        }
        public static String computeContentMD5HeaderValue(FileInputStream fis) {
                try {
                        DigestInputStream dis = new DigestInputStream(fis,
                                        MessageDigest.getInstance("MD5"));
                        byte[] buffer = new byte[8192];
                        while (dis.read(buffer) > 0)
                                ;
                        String md5Content = new String(Base64.encodeBase64(dis
                                        .getMessageDigest().digest()));
                        // Effectively resets the stream to be beginning of the file via a
                        fis.getChannel().position(0);
                        return md5Content;
                } catch (NoSuchAlgorithmException e) {
                        e.printStackTrace();
                } catch (IOException e) {
                        e.printStackTrace();
                }
                return null;
        }
        public String invokeSubmitFeed(MarketplaceWebService service,SubmitFeedRequest request) throws InterruptedException, MarketplaceWebServiceException {
                                SubmitFeedResponse response = service.submitFeed(request);
                                return response.getSubmitFeedResult().getFeedSubmissionInfo().getFeedSubmissionId();
        }
}