// // AmazonRequest.swift // Vendoo // // Created by cole alban on 8/28/16. // Copyright © 2016 Okechi Onyeje. All rights reserved. // import Foundation /* This class will represent a request to the Amazon MWS API. It will contain methods for creating headers, getting the headers back as a queryString(used to sign the request), and metadata regarding the transaction. */ class AmazonRequest{ /* This helper function will set the headers for the posting a new item to mws request: The request headers will be set for feedType: The type of feed this request will be for */ func setRequestHeaders(request: NSMutableURLRequest, feedType: FeedType ){ request.HTTPMethod = "POST" request.addValue("text/xml", forHTTPHeaderField: "Content-Type") request.addValue("SubmitFeed", forHTTPHeaderField: "Action") request.addValue(self.awsAccessKeyId, forHTTPHeaderField: "AWSAccessKeyId") request.addValue(self.sellerId, forHTTPHeaderField: "Merchant") request.addValue(getIso8601DateTimeString(), forHTTPHeaderField: "Timestamp") request.addValue("2009-01-01", forHTTPHeaderField: "Version") request.addValue(feedType.rawValue, forHTTPHeaderField: "FeedType") request.addValue("HmacSHA256", forHTTPHeaderField: "SignatureMethod") request.addValue("2", forHTTPHeaderField: "SignatureVersion") } /* This helper function will return an iso8601 formatted datetime string return: an iso8601 formatted datetime string */ func getIso8601DateTimeString()->String{ let dateFormatter: NSDateFormatter = NSDateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" dateFormatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") return dateFormatter.stringFromDate(NSDate()) } /* This will return a properly formatted header in string form Note: This is before the query is signed. */ func getRequestHeaderAsString(request: NSMutableURLRequest)->String{ var queryString: String = "POST\nmws.amazonservices.com\n\\"+ queryString += "AwsAccessKeyId="+request.valueForHTTPHeaderField("AwsAccessKeyId") queryString += "&Action="+request.valueForHTTPHeaderField("Action") queryString += "&FeedType="+request.valueForHTTPHeaderField("FeedType") queryString += "&SellerId="+request.valueForHTTPHeaderField("SellerId") queryString += "&SignatureMethod="+request.valueForHTTPHeaderField("SignatureMethod") queryString += "&SignatureVersion="+request.valueForHTTPHeaderField("SignatureVersion") queryString += "&Timestamp="+request.valueForHTTPHeaderField("Timestamp") queryString += "&Version="+request.valueForHTTPHeaderField("Version") return queryString } }