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); } }
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); } }
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"); }
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; }
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"); } } } } }
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); }
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"); } }
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"); } }
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"); } }
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++; } } }
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"); } }
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)"); } }
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++; } } } }