Example #1
0
        public void FixedPriceTransaction()
        {
            JsonServiceStub stub = new JsonServiceStub(@"{
					""Timestamp"":""2014-08-28T00:57:16.237Z"",
					""Ack"":""Success"",
					""Build"":""E847_CORE_APINOT_16496971_R1"",
					""Version"":""847"",
					""ClientAlerts"":
					{
						""ClientAlertEvent"":[
						{
							""EventType"":""FixedPriceTransaction"",
							""FixedPriceTransaction"":
							{
								""EventType"":""FixedPriceTransaction"",
								""Timestamp"":""2014-08-28T00:56:44.298Z"",
								""ItemID"":""171285956209"",
								""BidCount"":0,
								""SellerUserID"":""beachrife"",
								""EndTime"":""2014-08-28T00:56:42.000Z"",
								""CurrentPrice"":{""Value"":39.95,""CurrencyID"":""AUD""},
								""Title"":""BILLABONG Ladies ROAMING Crew Fleece Jumper (8 10) NEW"",
								""GalleryURL"":""http://i.ebayimg.com/00/s/ODAwWDgwMA==/z/QJIAAOxy4eJTOj66/$_12.JPG?set_id=880000500F"",
								""Quantity"":6,
								""Transaction"":[
								{
									""AmountPaid"":{""Value"":39.95,""CurrencyID"":""AUD""},
									""QuantitySold"":1,
									""BuyerUserID"":""mahon_laure"",
									""TransactionID"":""1259131016007"",
									""CreatedDate"":""2014-08-28T00:56:42.000Z"",
									""OrderLineItemID"":""171285956209-1259131016007""
								}]
							}
						}]
					},
					""SessionData"":""AQAAAUgZ6WgAAA1TSUQ9NDcyNzk3N3xTVD0xfDF8TEFDVFY9MTQwOTE4NzQzNjIzN3xFSFdNPTE4MTk4MjUyNzE1fFRJRFg9MnxMSVVQPTE0MDkxODcwMTU4ODJ8UExIUz1bXbjHcSgRBfSOvMHkoy4pPXzm6iNv""
				}"                );

            GetUserAlertsCall call = new GetUserAlertsCall(this.Logger, stub);

            call.Execute();

            Assert.IsNotNull(call.ApiResponse.ClientAlerts);
            Assert.IsNotNull(call.ApiResponse.ClientAlerts.ClientAlertEvent);
            Assert.AreEqual(ClientAlertsEventTypeCodeType.FixedPriceTransaction, call.ApiResponse.ClientAlerts.ClientAlertEvent[0].EventType);
            Assert.AreEqual(1, call.ApiResponse.ClientAlerts.ClientAlertEvent.Length);
            Assert.IsInstanceOfType(call.ApiResponse.ClientAlerts.ClientAlertEvent[0], typeof(EndOfTransactionEventType));

            EndOfTransactionEventType eventType = (EndOfTransactionEventType)call.ApiResponse.ClientAlerts.ClientAlertEvent[0];

            Assert.AreEqual(new DateTime(2014, 08, 28, 0, 56, 44, 298, DateTimeKind.Utc), eventType.Timestamp);
            Assert.AreEqual("171285956209", eventType.ItemID);
            Assert.AreEqual("beachrife", eventType.SellerUserID);
            Assert.AreEqual(new DateTime(2014, 08, 28, 0, 56, 42, 000, DateTimeKind.Utc), eventType.EndTime);
            Assert.IsNotNull(eventType.CurrentPrice);
            Assert.AreEqual(39.95d, eventType.CurrentPrice.Value);
            Assert.AreEqual("AUD", eventType.CurrentPrice.CurrencyID);
            Assert.AreEqual("BILLABONG Ladies ROAMING Crew Fleece Jumper (8 10) NEW", eventType.Title);
            Assert.AreEqual("http://i.ebayimg.com/00/s/ODAwWDgwMA==/z/QJIAAOxy4eJTOj66/$_12.JPG?set_id=880000500F", eventType.GalleryURL);
            Assert.AreEqual(6, eventType.Quantity);
            Assert.IsNotNull(eventType.Transaction);

            ClientAlertsTransactionType transactionType = eventType.Transaction;

            Assert.IsNotNull(transactionType.AmountPaid);
            Assert.AreEqual(39.95d, transactionType.AmountPaid.Value);
            Assert.AreEqual("AUD", transactionType.AmountPaid.CurrencyID);
            Assert.AreEqual(1, transactionType.QuantitySold);
            Assert.AreEqual("mahon_laure", transactionType.BuyerUserID);
            Assert.AreEqual("1259131016007", transactionType.TransactionID);
            Assert.AreEqual(new DateTime(2014, 08, 28, 0, 56, 42, 000, DateTimeKind.Utc), transactionType.CreatedDate);
            Assert.AreEqual("171285956209-1259131016007", transactionType.OrderLineItemID);
        }
Example #2
0
        public AlertBase PopulateAlert(Account account, ClientAlertEventType item)
        {
            if (item is FeedbackLeftEventType)
            {
                return(null);                // Feedback received alerts are kind of worthless
            }
            if (item is ItemMarkedPaidEventType && ((ItemMarkedPaidEventType)item).SellerUserID == account.UserId)
            {
                return(null);                // Not interested in alerts informing us we have marked the item as paid.
            }
            // Feedback Received
            if (item is FeedbackReceivedEventType)
            {
                FeedbackReceivedEventType eventType = (FeedbackReceivedEventType)item;
                FeedbackReceivedAlert     alert     = new FeedbackReceivedAlert();

                alert.Account        = account;
                alert.CommentingUser = new User(account.Site, eventType.FeedbackDetail.CommentingUser, eventType.FeedbackDetail.FeedbackScore);
                alert.Item           = new Item(account.Site, eventType.FeedbackDetail.ItemID, eventType.FeedbackDetail.ItemTitle, eventType.FeedbackDetail.ItemPrice);
                alert.CommentText    = eventType.FeedbackDetail.CommentText;
                alert.CommentType    = eventType.FeedbackDetail.CommentType;

                return(alert);
            }             // AskSellerQuestion
            else if (item is AskSellerQuestionEventType)
            {
                AskSellerQuestionEventType eventType = (AskSellerQuestionEventType)item;
                MessageAlert alert = new MessageAlert();

                // Extract some more details from eBay
                {
                    EbayContext       context         = new EbayContext(account.EbayToken);
                    GetMemberMessages getMessagesCall = new GetMemberMessages(context);
                    getMessagesCall.MessageId = eventType.MessageID;

                    getMessagesCall.Execute();
                    MemberMessageExchangeType messageType = getMessagesCall.Message;

                    alert.Account = account;
                    alert.Sender  = new User(account.Site, messageType.Question.SenderID);
                    alert.Subject = messageType.Question.Subject;
                    alert.Body    = messageType.Question.Body.Replace("'", "'");
                    alert.Item    = new Item(account.Site, messageType.Item.ItemID, messageType.Item.Title);

                    foreach (MessageMediaType mediaType in messageType.MessageMedia)
                    {
                        PictureDownloader downloader = new PictureDownloader();
                        Bitmap            bitmap     = downloader.DownloadImage(mediaType.MediaURL);
                        Media             media      = new Media(bitmap, mediaType.MediaURL);
                        alert.MediaList.Add(media);
                    }
                }

                return(alert);
            }
            else if (item is EndOfTransactionEventType && item.EventType == ClientAlertsEventTypeCodeType.FixedPriceTransaction)
            {
                EndOfTransactionEventType eventType = (EndOfTransactionEventType)item;
                ItemSoldAlert             alert     = new ItemSoldAlert();

                alert.TransactionId = eventType.Transaction.TransactionID;
                alert.Account       = account;
                alert.Item          = new Item(account.Site, eventType.ItemID, eventType.Title, eventType.CurrentPrice);
                alert.Buyer         = new User(account.Site, eventType.Transaction.BuyerUserID);
                alert.AmountPaid    = eventType.Transaction.AmountPaid;
                alert.QuantitySold  = eventType.Transaction.QuantitySold;

                if (!String.IsNullOrEmpty(eventType.GalleryURL))
                {
                    PictureDownloader downloader = new PictureDownloader();
                    Bitmap            bitmap     = downloader.DownloadImage(eventType.GalleryURL);
                    Media             media      = new Media(bitmap, eventType.GalleryURL);
                    alert.Item.Media = media;
                }

                return(alert);
            }

            return(null);
        }