Ejemplo n.º 1
0
        public static DataObjectNews CreateNews(DataObjectNews receivedDataObject)
        {
            WebServiceLogEntry log = new WebServiceLogEntry()
            {
                ServiceType = WebServiceType.REST, ServiceName = "IDataService", Method = "CreateNews", Parameters = "DataObjectNews"
            };

            try
            {
                DataServiceHelper.Create(log, receivedDataObject, Common.Helper.GetObjectType("News").NumericId);
                Helper.GetImages(log, receivedDataObject, null);
                receivedDataObject.Update(UserDataContext.GetUserDataContext(OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name));
                if (receivedDataObject.State == ObjectState.Saved)
                {
                    log.Write(HttpStatusCode.OK.ToString());
                    return(receivedDataObject);
                }
                throw new RESTException(HttpStatusCode.NotFound, "Not Updated (specific)");
            }
            catch (RESTException e)
            {
                log.Message = e.StatusDescription;
                log.Write(e.StatusCode.ToString());
                return(null);
            }
            catch (Exception e)
            {
                Helper.SetResponseStatus(log, HttpStatusCode.InternalServerError, string.Format("Not Created -> {0}", e.Message));
                log.ExtendedMessage = e.StackTrace;
                log.Write();
                return(null);
            }
        }
Ejemplo n.º 2
0
        public static DataObjectGeneric GetGeneric(string externalObjectId)
        {
            WebServiceLogEntry log = new WebServiceLogEntry()
            {
                ServiceType = WebServiceType.REST, ServiceName = "IDataService", Method = "GetGeneric", Parameters = externalObjectId
            };

            try
            {
                DataObjectGeneric dataObject = (DataObjectGeneric)DataServiceHelper.Get(log, externalObjectId, Common.Helper.GetObjectType("Generic").NumericId);
                log.Write(HttpStatusCode.OK.ToString());
                return(dataObject);
            }
            catch (RESTException e)
            {
                log.Message = e.StatusDescription;
                log.Write(e.StatusCode.ToString());
                return(null);
            }
            catch (Exception e)
            {
                Helper.SetResponseStatus(log, HttpStatusCode.InternalServerError, string.Format("Not Found -> {0}", e.Message));
                log.ExtendedMessage = e.StackTrace;
                log.Write();
                return(null);
            }
        }
Ejemplo n.º 3
0
 public static Partner GetCurrentPartner(WebServiceLogEntry log)
 {
     log.IP = ((RemoteEndpointMessageProperty)OperationContext.Current.IncomingMessageProperties[RemoteEndpointMessageProperty.Name]).Address;
     if (OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.IsAuthenticated)
     {
         MembershipUser partnerUser = Membership.GetUser(OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name);
         Partner        partner     = Partner.Get(null, new Guid(partnerUser.ProviderUserKey.ToString()));
         if (partner != null)
         {
             log.PartnerID = partner.PartnerID;
             log.UserID    = partner.CurrentUser.UserID;
             DateTime now = DateTime.Now;
             if (partner.RESTCalls < partner.MonthlyRESTCredits || now > partner.LastResetDate.GetEndOfMonth())
             {
                 partner.RESTCalls++;
                 partner.Update();
                 return(partner);
             }
             else
             {
                 throw new RESTException(HttpStatusCode.Forbidden, "Too many rest service calls this month");
             }
         }
         log.UserID = new Guid(partnerUser.ProviderUserKey.ToString());
     }
     throw new RESTException(HttpStatusCode.Forbidden, "Not an authorized partner");
 }
Ejemplo n.º 4
0
 public static void SetResponseStatus(WebServiceLogEntry log, HttpStatusCode statusCode, string statusDescription)
 {
     statusDescription = statusDescription.Replace("\r\n", " ");
     WebOperationContext.Current.OutgoingResponse.StatusCode        = statusCode;
     WebOperationContext.Current.OutgoingResponse.StatusDescription = statusDescription;
     log.Result  = statusCode.ToString();
     log.Message = statusDescription;
 }
Ejemplo n.º 5
0
        public static void GeoTag(WebServiceLogEntry log, DataObject dataObject, Partner partner)
        {
            if (!string.IsNullOrEmpty(dataObject.CountryCode) && (!string.IsNullOrEmpty(dataObject.City) || !string.IsNullOrEmpty(dataObject.Zip)) && (dataObject.Geo_Lat == double.MinValue || dataObject.Geo_Long == double.MinValue))
            {
                string queryStreet  = string.IsNullOrEmpty(dataObject.Street) ? null : dataObject.Street;
                string queryZip     = string.IsNullOrEmpty(dataObject.Zip) ? null : dataObject.Zip;
                string queryCity    = string.IsNullOrEmpty(dataObject.City) ? null : dataObject.City;
                string queryCountry = dataObject.CountryCode;

                GeoPoint geoPoint = _4screen.CSB.DataAccess.Business.Utils.GetGeoPointFromDB(queryStreet, queryZip, queryCity, queryCountry);
                if (geoPoint != null) // Geo info from cache
                {
                    dataObject.Geo_Lat  = geoPoint.Lat;
                    dataObject.Geo_Long = geoPoint.Long;
                    log.GeoService      = "LocalCache";
                }
                else // Get geo info from service
                {
                    bool autoGeoTagging = bool.Parse(ConfigurationManager.AppSettings["AutoGeoTagging"]);
                    if (autoGeoTagging)
                    {
                        if (partner.GeoServiceCalls < partner.MonthlyGeoServiceCredits)
                        {
                            partner.GeoServiceCalls++;
                            partner.Update();

                            geoPoint       = GeoTagging.GeoTagging.GetGeoPosition(queryStreet, queryZip, queryCity, null, queryCountry);
                            log.GeoService = "VirtualEarth";
                            if (geoPoint != null)
                            {
                                if (!string.IsNullOrEmpty(queryStreet))
                                {
                                    geoPoint.StreetAndNumber = queryStreet;
                                }
                                if (!string.IsNullOrEmpty(queryCity))
                                {
                                    geoPoint.City = queryCity;
                                }
                                geoPoint.CountryCode = queryCountry;
                                if (!string.IsNullOrEmpty(geoPoint.ZipCode) || !string.IsNullOrEmpty(geoPoint.City))
                                {
                                    dataObject.Geo_Lat  = geoPoint.Lat;
                                    dataObject.Geo_Long = geoPoint.Long;
                                    dataObject.Zip      = geoPoint.ZipCode ?? string.Empty;
                                    _4screen.CSB.DataAccess.Business.Utils.StoreGeoPointInDB(geoPoint);
                                }
                            }
                        }
                        else
                        {
                            throw new Exception("Too many geo service calls this month");
                        }
                    }
                }
            }
        }
Ejemplo n.º 6
0
        public static bool GetImage(WebServiceLogEntry log, string url, int objectType, Guid userID, string imageName, out int width, out int height, out decimal aspectRatio)
        {
            log.FilesToDownload++;

            width       = 0;
            height      = 0;
            aspectRatio = 1.0m;

            try
            {
                string uploadPath = string.Format(@"{0}\{1}\P", ConfigurationManager.AppSettings["ConverterRootPathUpload"], userID.ToString());
                if (!Directory.Exists(uploadPath))
                {
                    Directory.CreateDirectory(uploadPath);
                }

                string fileExtension = string.Empty;
                Match  match         = Regex.Match(url, @"\.(jpeg|jpg|gif|png)$", RegexOptions.IgnoreCase);
                if (match.Success)
                {
                    fileExtension = match.Groups[1].Captures[0].Value;
                }
                if (!string.IsNullOrEmpty(fileExtension))
                {
                    string imageID = Guid.NewGuid().ToString();
                    string filenameUploadOriginal = string.Format(@"{0}\{1}.{2}", uploadPath, imageID, fileExtension);

                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                    Http.DownloadFile(request, filenameUploadOriginal);

                    FileInfo assembly = new FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);
                    _4screen.CSB.ImageHandler.Business.ImageHandler imageHandler = new _4screen.CSB.ImageHandler.Business.ImageHandler(ConfigurationManager.AppSettings["MediaDomainName"], ConfigurationManager.AppSettings["ConverterRootPath"], userID.ToString(), imageName, true, assembly.DirectoryName + "/Configurations/");

                    imageHandler.DoConvert(filenameUploadOriginal, "ExtraSmallCroppedJpg", _4screen.CSB.ImageHandler.Business.ImageHandler.ReturnPath.Url);
                    imageHandler.DoConvert(filenameUploadOriginal, "SmallCroppedJpg", _4screen.CSB.ImageHandler.Business.ImageHandler.ReturnPath.Url);
                    imageHandler.DoConvert(filenameUploadOriginal, "LargeResizedJpg", _4screen.CSB.ImageHandler.Business.ImageHandler.ReturnPath.Url);
                    width  = imageHandler.ImageInfo.Width;
                    height = imageHandler.ImageInfo.Height;
                    if (height > 0)
                    {
                        aspectRatio = Math.Round((decimal)width / (decimal)height, 3);
                    }
                    imageHandler.DoConvert(filenameUploadOriginal, "CopyArchive", _4screen.CSB.ImageHandler.Business.ImageHandler.ReturnPath.Url);

                    return(true);
                }
            }
            catch (Exception e)
            {
                log.Message += string.Format("URL={0},Error={1},", url, e.Message.Replace("\r\n", " "));
                return(false);
            }
            return(false);
        }
Ejemplo n.º 7
0
 public override void Validate(string userName, string password)
 {
     if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password) || !Membership.ValidateUser(userName, password))
     {
         WebServiceLogEntry log = new WebServiceLogEntry()
         {
             ServiceType = WebServiceType.REST, Message = "User validation failed -> Username " + userName, Result = HttpStatusCode.Forbidden.ToString()
         };
         log.Write();
         throw new SecurityTokenException("Unknown Username or Incorrect Password");
     }
 }
Ejemplo n.º 8
0
        public static DataObject Get(WebServiceLogEntry log, string externalObjectId, int objectType)
        {
            Partner partner = Helper.GetCurrentPartner(log);

            DataObject dataObject = GetInstance(partner.CurrentUser.Nickname, objectType, externalObjectId, partner.PartnerID);

            if (dataObject.State != ObjectState.Added)
            {
                log.ObjectID = dataObject.ObjectID;
                return(dataObject);
            }
            else
            {
                throw new RESTException(HttpStatusCode.NotFound, "Not Found");
            }
        }
Ejemplo n.º 9
0
        public static DataObject Update(WebServiceLogEntry log, DataObject receivedDataObject, int objectType)
        {
            Partner partner = Helper.GetCurrentPartner(log);

            DataObject dataObject = GetInstance(partner.CurrentUser.Nickname, objectType, receivedDataObject.ExternalObjectID, partner.PartnerID);

            if (dataObject.State != ObjectState.Added)
            {
                log.ObjectID = dataObject.ObjectID;
                receivedDataObject.UserID = dataObject.UserID;

                dataObject.Status = ObjectStatus.Public;
                if (!receivedDataObject.CommunityID.HasValue)
                {
                    dataObject.CommunityID = partner.CommunityID;
                }
                else
                {
                    dataObject.CommunityID = receivedDataObject.CommunityID;
                }

                filter.UpdateFilter(dataObject, receivedDataObject);

                dataObject.Update(UserDataContext.GetUserDataContext(OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name));
                if (dataObject.State == ObjectState.Saved)
                {
                    try
                    {
                        Helper.GeoTag(log, dataObject, partner);
                        return(dataObject);
                    }
                    catch (Exception geoTaggingException)
                    {
                        Helper.SetResponseStatus(log, HttpStatusCode.OK, string.Format("Updated but not GeoTagged -> {0}", geoTaggingException.Message));
                        return(dataObject);
                    }
                }
                else
                {
                    throw new RESTException(HttpStatusCode.InternalServerError, "Not Updated (generic)");
                }
            }
            else
            {
                throw new RESTException(HttpStatusCode.NotFound, "Not Found");
            }
        }
Ejemplo n.º 10
0
        public static void GetImages(WebServiceLogEntry log, DataObjectGeneric receivedGeneric, DataObject generic)
        {
            DataObject dataObject = generic ?? receivedGeneric;

            if (!string.IsNullOrEmpty(receivedGeneric.Image))
            {
                string  imageName = dataObject.ObjectID.ToString();
                int     width, height;
                decimal aspectRatio;
                if (GetImage(log, receivedGeneric.Image, Common.Helper.GetObjectType("Generic").NumericId, dataObject.UserID.Value, imageName, out width, out height, out aspectRatio))
                {
                    dataObject.Image = imageName;
                    dataObject.SetImageType(PictureVersion.XS, PictureFormat.Jpg);
                    dataObject.SetImageType(PictureVersion.S, PictureFormat.Jpg);
                    dataObject.SetImageType(PictureVersion.L, PictureFormat.Jpg);
                    dataObject.SetImageType(PictureVersion.A, PictureFormat.Jpg);
                    log.FilesDownload++;
                }
            }
        }
Ejemplo n.º 11
0
        public static DataObject Delete(WebServiceLogEntry log, string externalObjectId, int objectType)
        {
            Partner partner = Helper.GetCurrentPartner(log);

            DataObject dataObject = GetInstance(partner.CurrentUser.Nickname, objectType, externalObjectId, partner.PartnerID);

            if (dataObject.State != ObjectState.Added)
            {
                log.ObjectID = dataObject.ObjectID;

                DataObjectList <DataObject> relatedItems = DataObjects.Load <DataObject>(new QuickParameters()
                {
                    Udc            = UserDataContext.GetUserDataContext(partner.CurrentUser.Nickname),
                    RelationParams = new RelationParams()
                    {
                        ParentObjectID   = dataObject.ObjectID,
                        ParentObjectType = dataObject.ObjectType,
                    },
                    IgnoreCache   = true,
                    DisablePaging = true
                });
                foreach (DataObject relatedItem in relatedItems)
                {
                    relatedItem.Delete(UserDataContext.GetUserDataContext(OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name));
                }

                dataObject.Delete(UserDataContext.GetUserDataContext(OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name));
                if (dataObject.State == ObjectState.Deleted)
                {
                    return(dataObject);
                }
                else
                {
                    throw new RESTException(HttpStatusCode.InternalServerError, "Not Deleted");
                }
            }
            else
            {
                throw new RESTException(HttpStatusCode.NotFound, "Not Found");
            }
        }
Ejemplo n.º 12
0
        public static void Create(WebServiceLogEntry log, DataObject receivedDataObject, int objectType)
        {
            Partner partner = Helper.GetCurrentPartner(log);

            receivedDataObject.Status    = ObjectStatus.Public;
            receivedDataObject.UserID    = partner.CurrentUser.UserID;
            receivedDataObject.Nickname  = partner.CurrentUser.Nickname;
            receivedDataObject.PartnerID = partner.PartnerID;
            if (!receivedDataObject.CommunityID.HasValue)
            {
                receivedDataObject.CommunityID = partner.CommunityID;
            }
            else
            {
                receivedDataObject.CommunityID = receivedDataObject.CommunityID;
            }

            receivedDataObject.TagList = receivedDataObject.TagList;

            filter.InsertFilter(receivedDataObject);

            receivedDataObject.Insert(UserDataContext.GetUserDataContext(OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name));
            if (receivedDataObject.State == ObjectState.Saved)
            {
                log.ObjectID = receivedDataObject.ObjectID;
                try
                {
                    Helper.GeoTag(log, receivedDataObject, partner);
                }
                catch (Exception geoTaggingException)
                {
                    Helper.SetResponseStatus(log, HttpStatusCode.OK, string.Format("Updated but not GeoTagged -> {0}", geoTaggingException.Message));
                }
            }
            else
            {
                throw new RESTException(HttpStatusCode.NotFound, "Not Created (generic)");
            }
        }
Ejemplo n.º 13
0
        public static void GetImages(WebServiceLogEntry log, DataObjectNews receivedNews, DataObject news)
        {
            DataObject dataObject = news ?? receivedNews;

            DataObjectList <DataObjectPicture> newsPictures = DataObjects.Load <DataObjectPicture>(new QuickParameters()
            {
                Udc            = UserDataContext.GetUserDataContext(dataObject.Nickname),
                RelationParams = new RelationParams()
                {
                    ParentObjectID   = dataObject.ObjectID,
                    ParentObjectType = dataObject.ObjectType,
                    ChildObjectType  = Common.Helper.GetObjectType("Picture").NumericId
                },
                IgnoreCache   = true,
                DisablePaging = true
            });

            foreach (DataObjectPicture newsPicture in newsPictures)
            {
                newsPicture.Delete(UserDataContext.GetUserDataContext(OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name));
            }
            DataObject.RelDelete(new RelationParams()
            {
                ParentObjectID = dataObject.ObjectID, ParentObjectType = dataObject.ObjectType, ChildObjectType = Common.Helper.GetObjectType("Picture").NumericId
            });

            if (!string.IsNullOrEmpty(receivedNews.Image))
            {
                string  imageName = dataObject.ObjectID.ToString();
                int     width, height;
                decimal aspectRatio;
                if (GetImage(log, receivedNews.Image, Common.Helper.GetObjectType("News").NumericId, dataObject.UserID.Value, imageName, out width, out height, out aspectRatio))
                {
                    dataObject.Image = imageName;
                    dataObject.SetImageType(PictureVersion.XS, PictureFormat.Jpg);
                    dataObject.SetImageType(PictureVersion.S, PictureFormat.Jpg);
                    dataObject.SetImageType(PictureVersion.L, PictureFormat.Jpg);
                    dataObject.SetImageType(PictureVersion.A, PictureFormat.Jpg);
                    log.FilesDownload++;
                }
            }

            if (receivedNews.LargePictures.Count > 0)
            {
                List <string> newsImages   = receivedNews.LargePictures;
                List <string> newsCaptions = receivedNews.PictureCaptions;
                for (int i = 0; i < newsImages.Count; i++)
                {
                    Guid    newsPictureId = Guid.NewGuid();
                    int     width, height;
                    decimal aspectRatio;
                    if (GetImage(log, newsImages[i], Common.Helper.GetObjectType("News").NumericId, dataObject.UserID.Value, newsPictureId.ToString(), out width, out height, out aspectRatio))
                    {
                        DataObjectPicture newsPicture = new DataObjectPicture(UserDataContext.GetUserDataContext(dataObject.Nickname));
                        newsPicture.ObjectID    = newsPictureId;
                        newsPicture.Title       = !string.IsNullOrEmpty(newsCaptions[i]) ? newsCaptions[i].CropString(100) : " ";
                        newsPicture.PartnerID   = dataObject.PartnerID;
                        newsPicture.Description = newsCaptions[i];
                        newsPicture.TagList     = dataObject.TagList;
                        newsPicture.StartDate   = dataObject.StartDate;
                        newsPicture.EndDate     = dataObject.EndDate;
                        newsPicture.CommunityID = dataObject.CommunityID;
                        newsPicture.Status      = dataObject.Status;
                        newsPicture.Copyright   = dataObject.Copyright;
                        newsPicture.Image       = newsPictureId.ToString();
                        newsPicture.Width       = width;
                        newsPicture.Height      = height;
                        newsPicture.AspectRatio = aspectRatio;
                        newsPicture.SetImageType(PictureVersion.XS, PictureFormat.Jpg);
                        newsPicture.SetImageType(PictureVersion.S, PictureFormat.Jpg);
                        newsPicture.SetImageType(PictureVersion.L, PictureFormat.Jpg);
                        newsPicture.SetImageType(PictureVersion.A, PictureFormat.Jpg);
                        newsPicture.Insert(UserDataContext.GetUserDataContext(OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name));

                        DataObject.RelInsert(new RelationParams()
                        {
                            ParentObjectID = dataObject.ObjectID, ParentObjectType = dataObject.ObjectType, ChildObjectID = newsPicture.ObjectID, ChildObjectType = newsPicture.ObjectType
                        }, i);

                        log.FilesDownload++;
                    }
                }
            }
        }