Пример #1
0
        // PUT api/EventBroadcasts/5
        public HttpResponseMessage PutEventBroadcast(int broadcastId, EventBroadcast eventBroadcast)
        {
            if (!ModelState.IsValid)
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, ModelState));
            }

            if (broadcastId != eventBroadcast.EventBroadcastId)
            {
                FotoShoutUtils.Log.LogManager.Error(_logger, string.Format(Errors.ERROR_BROADCAST_UPDATE_IDSNOTIDENTICAL, broadcastId, eventBroadcast.EventBroadcastId));
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, string.Format(Errors.ERROR_BROADCAST_UPDATE_IDSNOTIDENTICAL, broadcastId, eventBroadcast.EventBroadcastId)));
            }

            db.Entry(eventBroadcast).State = EntityState.Modified;

            try {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException ex) {
                FotoShoutUtils.Log.LogManager.Error(_logger, ex.ToString());
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, ex.Message));
            }

            return(Request.CreateResponse(HttpStatusCode.OK));
        }
Пример #2
0
        public void Subscribers_are_notified_just_once_even_if_subscribed_multiple_times()
        {
            _counters = new int[2];
            var sut = new EventBroadcast();

            sut.Subscribe(Subscribe1);
            sut.Subscribe(Subscribe1);
            sut.Subscribe(Subscribe2);
            sut.Subscribe(Subscribe2);
            sut.Subscribe(Subscribe2);

            sut.Update(new Event[0], "", 0);

            Assert.Equal(new[] { 1, 1 }, _counters);
        }
Пример #3
0
        // DELETE api/EventBroadcasts/5
        public HttpResponseMessage DeleteEventBroadcast(int broadcastId)
        {
            EventBroadcast eventbroadcast = db.EventBroadcasts.Find(broadcastId);

            if (eventbroadcast == null)
            {
                FotoShoutUtils.Log.LogManager.Error(_logger, string.Format("A broadcast with the id of {0} not found.", broadcastId));
                return(Request.CreateResponse(HttpStatusCode.NotFound));
            }

            db.EventBroadcasts.Remove(eventbroadcast);

            try {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException ex) {
                FotoShoutUtils.Log.LogManager.Error(_logger, ex.ToString());
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, ex));
            }

            return(Request.CreateResponse(HttpStatusCode.OK, eventbroadcast));
        }
Пример #4
0
        // POST api/EventBroadcasts
        public HttpResponseMessage PostEventBroadcast(EventBroadcast eventBroadcast)
        {
            if (ModelState.IsValid && eventBroadcast != null)
            {
                db.EventBroadcasts.Add(eventBroadcast);

                try {
                    db.SaveChanges();
                }
                catch (DbUpdateConcurrencyException ex) {
                    FotoShoutUtils.Log.LogManager.Error(_logger, ex.ToString());
                    throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound, ex.Message));
                }

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, eventBroadcast);
                response.Headers.Location = new Uri(Url.Link("DefaultApi", new { controller = "EventBroadcasts", id = eventBroadcast.EventId, broadcastId = eventBroadcast.EventBroadcastId }));
                return(response);
            }
            else
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, ModelState.Values.SelectMany(v => v.Errors)));
            }
        }
Пример #5
0
        private bool UpdatePermaLinks(EventBroadcast bc, IDictionary <string, string> permaLinks, ICollection <string> newPermaLinks)
        {
            string thumbnails = "";
            string links      = "";

            string[] bcPermaLinks = string.IsNullOrEmpty(bc.PermaLinks) ? null : bc.PermaLinks.Split('|');
            foreach (KeyValuePair <string, string> kv in permaLinks)
            {
                if (!kv.Key.Equals("pending", StringComparison.InvariantCultureIgnoreCase))
                {
                    if (!string.IsNullOrEmpty(thumbnails))
                    {
                        thumbnails += "|";
                    }
                    thumbnails += kv.Key;
                    if (!string.IsNullOrEmpty(links))
                    {
                        links += "|";
                    }
                    links += kv.Value;
                    if (bcPermaLinks == null || !bcPermaLinks.Contains(kv.Value))
                    {
                        newPermaLinks.Add(kv.Value);
                    }
                }
            }
            if (newPermaLinks.Any())
            {
                bc.PermaLinks = links;
                bc.Thumbnails = thumbnails;
                FotoShoutUtils.Log.LogManager.Info(_logger, string.Format("Updated the permalinks for the broadcast {0}.", bc.BroadcastId));
                return(true);
            }

            return(false);
        }
Пример #6
0
        private void PublishPhotoToChannel(EventTDO ev, PhotoTDO photo, ChannelGroup channelGroup)
        {
            if (channelGroup.Fields == null || !channelGroup.Fields.Any())
            {
                FotoShoutUtils.Log.LogManager.Info(_logger, string.Format("There is no broadcast fields in the {0} template.", channelGroup.Name));
                return;
            }

            PhotoAnnotation annotation = _fsWebService.Get <PhotoAnnotation>("PhotoAnnotation/" + photo.PhotoId, true);

            FotoShoutUtils.Log.LogManager.Info(_logger, string.Format("Publishing the {0} photo to the {1} channel group...", photo.Filename, string.IsNullOrEmpty(channelGroup.Name) ? channelGroup.ID.ToString() : channelGroup.Name));

            string        filename = photo.Folder.EndsWith(Path.DirectorySeparatorChar.ToString()) ? photo.Folder : (photo.Folder + Path.DirectorySeparatorChar) + Constants.STR_PROCESSED + Path.DirectorySeparatorChar + photo.Filename;
            PostBroadcast bc       = new PostBroadcast {
                TemplateID      = channelGroup.ID,
                Status          = "Pending Publish",
                Description     = "FotoShout Broadcast",
                Name            = Path.GetFileNameWithoutExtension(photo.Filename),
                ScheduledTime   = DateTime.Now.ToShortDateString(),
                BroadcastFields = new List <BroadcastFieldValue>()
            };

            foreach (BroadcastField bf in channelGroup.Fields)
            {
                if (bf.Name.Equals("Album Title", StringComparison.InvariantCultureIgnoreCase))
                {
                    BroadcastFieldValue bfv = new BroadcastFieldValue {
                        IdToken = bf.IdToken,
                        Value   = string.IsNullOrEmpty(ev.PublishAlbum) ? ev.EventName : ev.PublishAlbum
                    };
                    bc.BroadcastFields.Add(bfv);
                }
                else if (bf.Name.Equals("Album Description", StringComparison.InvariantCultureIgnoreCase))
                {
                    BroadcastFieldValue bfv = new BroadcastFieldValue {
                        IdToken = bf.IdToken,
                        Value   = string.IsNullOrEmpty(ev.PublishAlbum) ? ev.EventName : ev.PublishAlbum
                    };
                    bc.BroadcastFields.Add(bfv);
                }
                else if (bf.Name.Equals("Upload Photos", StringComparison.InvariantCultureIgnoreCase))
                {
                    string serverUri = _c9WebService.UploadFile("Media/Upload", filename);
                    if (string.IsNullOrEmpty(serverUri))
                    {
                        throw new PublishingException(string.Format("Unexpected error: Can not upload the {0} photo.", photo.Filename));
                    }
                    BroadcastFieldValue bfv = new BroadcastFieldValue {
                        IdToken = bf.IdToken,
                        Value   = serverUri
                    };
                    bc.BroadcastFields.Add(bfv);
                }
                else if (bf.Name.Equals("Title", StringComparison.InvariantCultureIgnoreCase))
                {
                    BroadcastFieldValue bfv = new BroadcastFieldValue {
                        IdToken = bf.IdToken,
                        Value   = bc.Name
                    };
                    bc.BroadcastFields.Add(bfv);
                }
                else if (bf.Name.Equals("Image File", StringComparison.InvariantCultureIgnoreCase))
                {
                    string serverUri = _c9WebService.UploadFile("Media/Upload", filename);
                    if (string.IsNullOrEmpty(serverUri))
                    {
                        throw new PublishingException(string.Format("Unexpected error: Can not upload the {0} photo.", photo.Filename));
                    }
                    BroadcastFieldValue bfv = new BroadcastFieldValue {
                        IdToken = bf.IdToken,
                        Value   = serverUri
                    };
                    bc.BroadcastFields.Add(bfv);
                }
                else if (bf.Name.Equals("File", StringComparison.InvariantCultureIgnoreCase))
                {
                    string serverUri = _c9WebService.UploadFile("Media/Upload", filename);
                    if (string.IsNullOrEmpty(serverUri))
                    {
                        throw new PublishingException(string.Format("Unexpected error: Can not upload the {0} photo.", photo.Filename));
                    }
                    BroadcastFieldValue bfv = new BroadcastFieldValue {
                        IdToken = bf.IdToken,
                        Value   = serverUri
                    };
                    bc.BroadcastFields.Add(bfv);
                }
            }

            string ret = _c9WebService.UploadString("Broadcast", GeneratePostContent <PostBroadcast>(bc));

            if (!string.IsNullOrEmpty(ret))
            {
                EventBroadcast eventBroadcast = new EventBroadcast {
                    BroadcastId = int.Parse(ret.Trim(new char[] { '\"' })),
                    EventId     = ev.EventId,
                    PhotoId     = photo.PhotoId,
                    Status      = 0
                };
                ret = _fsWebService.UploadString("EventBroadcasts", GeneratePostContent <EventBroadcast>(eventBroadcast));
            }
            else
            {
                throw new PublishingException(string.Format("Unsuccessully publishing the \"{0}\" photo using the \"{1}\" channel group.", photo.Filename, channelGroup.Name));
            }

            FotoShoutUtils.Log.LogManager.Info(_logger, string.Format("Published the {0} photo.", photo.Filename));
        }
Пример #7
0
 void OnDestroy()
 {
     instance = null;
 }