Пример #1
0
        public IActionResult UpdateWebsiteDataById([FromRoute] string schemaid, [FromRoute] string clientid, [FromBody] UpdateWebsiteDataRequestModel requestModel)
        {
            ///TODO : Chheck that mongodb driver support long for skip and limit
            // string userid = Request.Headers.Authorization.ToString();
            // command.UserId = userid;
            try
            {
                if (string.IsNullOrEmpty(clientid) || BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() != clientid.Trim().ToUpper())
                {
                    return(new CommonActionResult(CommonAPIResponse.UnAuthorized()));
                }

                requestModel.SchemaId = schemaid;
                // requestModel.SchemaName = schemaname.ToUpper();
                var validationResult = requestModel.Validate();
                if (validationResult.Any())
                {
                    return(BadRequest(validationResult));
                }

                return(new CommonActionResult(MongoConnector.UpdateWebsiteData(requestModel)));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
        public IActionResult UpdateCacheInvalidationStatus([FromRoute] string websiteid, [FromQuery] string clientid, [FromQuery] int nextInvalidationInSec)
        {
            try
            {
                if (string.IsNullOrEmpty(clientid) || BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() != clientid.Trim().ToUpper())
                {
                    return(Unauthorized());
                }

                if (string.IsNullOrEmpty(websiteid))
                {
                    return(new CommonActionResult(CommonAPIResponse.BadRequest(new ValidationResult("Invalid websiteid"))));
                }
                if (nextInvalidationInSec == 0)
                {
                    return(new CommonActionResult(CommonAPIResponse.BadRequest(new ValidationResult("Provide valid next invalidation in secnd paramater"))));
                }

                return(new CommonActionResult(MongoConnector.UpdateCacheInvalidationStatus(websiteid, nextInvalidationInSec)));
            }
            catch (Exception ex)
            {
                return(new CommonActionResult(CommonAPIResponse.InternalServerError(ex)));
            }
        }
Пример #3
0
        public IActionResult KitsuneUpdateDomain([FromQuery] string websiteid, [FromQuery] string newDomain, [FromQuery] string clientid)
        {
            try
            {
                if (string.IsNullOrEmpty(clientid) || BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() != clientid.Trim().ToUpper())
                {
                    return(new CommonActionResult(CommonAPIResponse.UnAuthorized()));
                }

                var requestModel = new KitsuneUpdateDomainRequestModel {
                    CustomerId = websiteid, NewDomain = newDomain
                };
                var validationResult = requestModel.Validate();
                if (validationResult.Any())
                {
                    return(BadRequest(validationResult));
                }

                return(Ok(MongoConnector.UpdateDomainName(requestModel)));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
Пример #4
0
 public IActionResult GetLanguageEntity([FromRoute] string languageid, [FromRoute] string clientid, bool propertygroup = false)
 {
     try
     {
         if (!string.IsNullOrEmpty(clientid) && BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() == clientid.Trim().ToUpper())
         {
             var requestModel = new GetLanguageEntityRequestModel
             {
                 EntityId = languageid,
             };
             var validationResult = requestModel.Validate();
             if (validationResult.Any())
             {
                 return(BadRequest(validationResult));
             }
             if (propertygroup)
             {
                 return(Ok(MongoConnector.GetLanguageEntityByPropertyGroup(requestModel)));
             }
             else
             {
                 return(Ok(MongoConnector.GetLanguageEntity(requestModel)));
             }
         }
         return(Unauthorized());
     }
     catch (Exception ex)
     {
         throw;
     }
 }
Пример #5
0
 public IActionResult GetCustomersPerProject(string clientid, string projectid = null)
 {
     if (!string.IsNullOrEmpty(clientid) && BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() == clientid.Trim().ToUpper())
     {
         return(Ok(MongoConnector.GetLiveWebsiteIds(projectid)));
     }
     return(Unauthorized());
 }
        internal static KitsuneWebsiteCollection CreateDefaultWebsite(string projectId, string projectName, string developerEmail, string clientId)
        {
            try
            {
                if (_kitsuneServer == null)
                {
                    InitializeConnection();
                }

                var userCollection    = _kitsuneDatabase.GetCollection <UserModel>(KitsuneUserCollectionName);
                var websiteCollection = _kitsuneDatabase.GetCollection <KitsuneWebsiteCollection>(KitsuneWebsiteCollectionName);

                UserModel userDetails = userCollection.Find(x => x.UserName.Equals(developerEmail)).Limit(1).FirstOrDefault();

                #region GENERATE WEBSITETAG AND WEBSITEURL
                bool?isSSLEnabled = null;
                // Removes all special characters
                if (projectName.ToLower().Trim().StartsWith("http://"))
                {
                    isSSLEnabled = false;
                }
                string websiteTag = projectName.Replace("http://", "", StringComparison.InvariantCultureIgnoreCase)
                                    .Replace("https://", "", StringComparison.InvariantCultureIgnoreCase)
                                    .Replace("www.", "", StringComparison.InvariantCultureIgnoreCase);
                websiteTag = Regex.Replace(websiteTag, @"[^0-9a-zA-Z]+", "").ToUpper();

                websiteTag = $"{websiteTag}DEFAULT";

                //If the same name website tag exist use {projectname_developerfirstname_01}
                var existingWebsites = websiteCollection.Find(x => x.WebsiteTag == websiteTag).Count();
                if (existingWebsites > 0)
                {
                    Random random = new Random();
                    websiteTag = websiteTag + random.Next(100, 999);
                }

                var basePlugin = BasePluginConfigGenerator.GetBasePlugin(clientId);

                //update clientId if the id is not present
                clientId = basePlugin.GetClientId();
                string websiteDomain = websiteTag.ToUpper() + basePlugin.GetSubDomain();

                #endregion

                //Create new customer
                KitsuneWebsiteCollection customerDetails = CreateNewWebsite(projectId, websiteTag, developerEmail, userDetails.PhoneNumber, developerEmail, websiteDomain, userDetails._id, clientId, isSSLEnabled: isSSLEnabled);
                return(customerDetails);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Пример #7
0
 public IActionResult GetStorageSize([FromQuery] string clientid, [FromQuery] string userid = null)
 {
     try
     {
         if (string.IsNullOrEmpty(clientid) || BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() != clientid.Trim().ToUpper())
         {
             return(new CommonActionResult(CommonAPIResponse.UnAuthorized()));
         }
         return(new CommonActionResult(MongoConnector.GetWebsiteDataStorageSize(userid)));
     }
     catch (Exception ex)
     {
         return(new CommonActionResult(CommonAPIResponse.InternalServerError(ex)));
     }
 }
        public IActionResult GetBasePluginDetails([FromQuery] string projectId, [FromQuery] string clientId)
        {
            if (String.IsNullOrEmpty(clientId))
            {
                //Use this till all data is filled in project - collections
                clientId = MongoConnector.GetClientIdFromWebsiteId(projectId);
            }

            var basePlugin = BasePluginConfigGenerator.GetBasePlugin(clientId);

            return(Ok(new BasePluginResponseModel()
            {
                clientId = basePlugin.GetClientId(),
                clientName = basePlugin.GetClientName(),
                _defaultSubDomain = basePlugin.GetSubDomain(),
            }));
        }
        public IActionResult CreateNewWebsite([FromBody] CreateNewWebsiteRequestModel requestModel, [FromQuery] string clientid = null)
        {
            try
            {
                var authId = AuthHelper.AuthorizeRequest(Request);

                try
                {
                    if (String.IsNullOrEmpty(clientid) && !String.IsNullOrEmpty(requestModel.DeveloperId))
                    {
                        requestModel.ClientId = MongoConnector.GetClientIdFromProjectId(requestModel.ProjectId);
                    }
                }
                catch { }

                requestModel.ClientId = BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId();
                if (string.IsNullOrEmpty(clientid) || requestModel.ClientId != clientid.Trim().ToUpper())
                {
                    return(new CommonActionResult(CommonAPIResponse.UnAuthorized()));
                }

                requestModel.ActivateWebsite = false;

                if (requestModel.ClientId == Constants.ClientIdConstants.NowFloatsClientId)
                {
                    requestModel.ActivateWebsite = true;
                }


                requestModel.DeveloperId = MongoConnector.GetUserIdFromProjectId(requestModel.ProjectId);

                var validationResult = requestModel.Validate();
                if (validationResult.Any())
                {
                    return(new CommonActionResult(CommonAPIResponse.BadRequest(validationResult)));
                }

                return(new CommonActionResult(MongoConnector.CreateNewWebsite(requestModel)));
            }
            catch (Exception ex)
            {
                return(new CommonActionResult(CommonAPIResponse.InternalServerError(ex)));
            }
        }
 public IActionResult ChangeProjectId([FromRoute] string websiteid, [FromRoute] string projectid, [FromQuery] string clientid)
 {
     if (string.IsNullOrEmpty(clientid) || BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() != clientid.Trim().ToUpper())
     {
         return(new CommonActionResult(CommonAPIResponse.UnAuthorized()));
     }
     if (string.IsNullOrEmpty(websiteid) || string.IsNullOrEmpty(projectid))
     {
         return(new CommonActionResult(CommonAPIResponse.BadRequest(new ValidationResult("Invalid input paramater"))));
     }
     try
     {
         return(new CommonActionResult(CommonAPIResponse.OK(MongoConnector.ChangeProjectId(websiteid, projectid))));
     }
     catch (Exception ex)
     {
         return(new CommonActionResult(CommonAPIResponse.InternalServerError(ex)));
     }
 }
Пример #11
0
 public IActionResult GetObjectLink([FromRoute] string websiteid, [FromRoute] string objectid, [FromRoute] string clientid, [FromQuery] string classname, [FromQuery] string schemaid = null)
 {
     if (string.IsNullOrEmpty(clientid) || BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() != clientid.Trim().ToUpper())
     {
         return(new CommonActionResult(CommonAPIResponse.UnAuthorized()));
     }
     if (string.IsNullOrEmpty(classname))
     {
         return(new CommonActionResult(CommonAPIResponse.BadRequest(new System.ComponentModel.DataAnnotations.ValidationResult("Class name can not be empty"))));
     }
     try
     {
         return(new CommonActionResult(MongoConnector.GenerateObjectUrl(websiteid, classname, objectid, schemaid)));
     }
     catch (Exception ex)
     {
         return(new CommonActionResult(CommonAPIResponse.InternalServerError(ex)));
     }
 }
        public IActionResult ToggleCDNCache([FromRoute] string websiteid, [FromQuery] string clientid, [FromQuery] bool enable)
        {
            try
            {
                if (string.IsNullOrEmpty(clientid) || BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() != clientid.Trim().ToUpper())
                {
                    return(Unauthorized());
                }

                if (string.IsNullOrEmpty(websiteid))
                {
                    return(new CommonActionResult(CommonAPIResponse.BadRequest(new ValidationResult("Invalid websiteid"))));
                }

                return(new CommonActionResult(MongoConnector.UpdateCacheInvalidationStatus(websiteid, enable: enable)));
            }
            catch (Exception ex)
            {
                return(new CommonActionResult(CommonAPIResponse.InternalServerError(ex)));
            }
        }
Пример #13
0
        public IActionResult AddOrUpdateWebsite([FromRoute] string schemaname, [FromBody] AddOrUpdateWebsiteRequestModel requestModel, [FromRoute] string clientid = null, [FromRoute] string schemaid = null)
        {
            try
            {
                var userId = AuthHelper.AuthorizeRequest(Request);

                if (string.IsNullOrEmpty(userId) && (string.IsNullOrEmpty(clientid) || BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() != clientid.Trim().ToUpper()))
                {
                    return(new CommonActionResult(CommonAPIResponse.UnAuthorized()));
                }

                requestModel.UserId     = userId;
                requestModel.SchemaId   = schemaid;
                requestModel.SchemaName = schemaname;

                var validationResult = requestModel.Validate();
                if (validationResult.Any())
                {
                    return(BadRequest(validationResult));
                }

                return(Ok(MongoConnector.AddDataForWebsite(requestModel)));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
Пример #14
0
        public IActionResult GetWebsiteData([FromQuery] string website, [FromQuery] string id = null,
                                            [FromQuery] int skip       = 0, [FromQuery] int limit = 100, [FromQuery] string query = null, [FromQuery] string sort = null,
                                            [FromQuery] string include = null, [FromRoute] string clientid = null, [FromRoute] string schemaid = null, [FromRoute] string schemaname = null)
        {
            try
            {
                var requestModel = new GetWebsiteDataRequestModel
                {
                    Limit      = limit,
                    Query      = query,
                    SchemaName = schemaname,
                    Skip       = skip,
                    Sort       = sort,
                    WebsiteId  = website,
                    Include    = include,
                    ClientId   = clientid,
                    SchemaId   = schemaid
                };

                var userId = AuthHelper.AuthorizeRequest(Request);
                if (string.IsNullOrEmpty(userId) && (string.IsNullOrEmpty(clientid) || BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() != clientid.Trim().ToUpper()))
                {
                    return(new CommonActionResult(CommonAPIResponse.UnAuthorized()));
                }
                requestModel.UserId = userId;
                var validationResult = requestModel.Validate();
                if (validationResult.Any())
                {
                    return(BadRequest(validationResult));
                }
                return(Ok(MongoConnector.GetWebsiteData(requestModel)));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
Пример #15
0
 public IActionResult GetWebsiteDataByPropertyPathV2([FromRoute] string schemaid, [FromQuery] string requestObject, [FromRoute] string clientid = null)
 {
     try
     {
         var userId = AuthHelper.AuthorizeRequest(Request);
         if (string.IsNullOrEmpty(userId) && (string.IsNullOrEmpty(clientid) || BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() != clientid.Trim().ToUpper()))
         {
             return(new CommonActionResult(CommonAPIResponse.UnAuthorized()));
         }
         var requestModel = JsonConvert.DeserializeObject <GetWebsiteDataByPropertyPath>(requestObject);
         requestModel.SchemaId = schemaid;
         var validationResult = requestModel.Validate();
         if (validationResult.Any())
         {
             return(BadRequest(validationResult));
         }
         var result = MongoConnector.GetWebsiteDataByPropertyPath(requestModel);
         return(new CommonActionResult(CommonAPIResponse.OK(result)));
     }
     catch (Exception ex)
     {
         return(BadRequest(ex));
     }
 }
Пример #16
0
        //mails


        public string SendEmail(EmailRequestWithAttachments req, EmailUserConfigType configType = EmailUserConfigType.WEBSITE_DEVELOPER, string clientId = null)
        {
            try
            {
                var basePlugin = BasePluginConfigGenerator.GetBasePlugin(clientId);
                var basePluginEmailConfiguration = (configType == EmailUserConfigType.WEBSITE_DEVELOPER) ? basePlugin.GetEmailConfiguration() : basePlugin.GetKAdminEmailConfiguration();

                WithFloatsExternalSMTPConfiguration smtpConfig;

                #region INIT EMAIL CONFIGURATION
                if (req.CustomSMTPConfig == null)
                {
                    smtpConfig = new WithFloatsExternalSMTPConfiguration()
                    {
                        EnableSsl        = basePluginEmailConfiguration.EnableSsl,
                        ServerHost       = basePluginEmailConfiguration.ServerHost,
                        ServerPort       = basePluginEmailConfiguration.ServerPort,
                        SMTPUserName     = basePluginEmailConfiguration.SMTPUserName,
                        SMTPUserPassword = basePluginEmailConfiguration.SMTPUserPassword,
                        TimeOut          = basePluginEmailConfiguration.TimeOut,
                        UserName         = basePluginEmailConfiguration.SMTPUserName
                    };
                }
                else
                {
                    smtpConfig = new WithFloatsExternalSMTPConfiguration()
                    {
                        EnableSsl        = req.CustomSMTPConfig.EnableSsl,
                        ServerHost       = req.CustomSMTPConfig.ServerHost,
                        ServerPort       = req.CustomSMTPConfig.ServerPort,
                        SMTPUserName     = req.CustomSMTPConfig.SMTPUserName,
                        SMTPUserPassword = req.CustomSMTPConfig.SMTPUserPassword,
                        TimeOut          = req.CustomSMTPConfig.TimeOut,
                        UserName         = req.CustomSMTPConfig.UserName
                    };
                }
                #endregion

                var request = (HttpWebRequest)WebRequest.Create(EnvConstants.Constants.EmailAPI);
                request.Method      = "POST";
                request.ContentType = "application/json";

                var requestObj = new KitsuneConvertMailRequest
                {
                    ClientId         = EnvConstants.Constants.KitsuneDevClientId,
                    EmailBody        = req.EmailBody,
                    Subject          = req.Subject,
                    To               = req.To,
                    Attachments      = req.Attachments,
                    From             = basePluginEmailConfiguration.FromEmailAddress,
                    CustomSMTPConfig = smtpConfig
                };

                var jsonSerializer = new DataContractJsonSerializer(typeof(KitsuneConvertMailRequest));
                var mem            = new MemoryStream();
                jsonSerializer.WriteObject(mem, requestObj);

                string finalData = Encoding.UTF8.GetString(mem.ToArray(), 0, (int)mem.Length);
                var    bytes     = new UTF8Encoding().GetBytes(finalData);

                using (Stream stream = request.GetRequestStream())
                {
                    stream.Write(bytes, 0, bytes.Length);
                }

                WebResponse ws = request.GetResponse();
                var         sr = new StreamReader(ws.GetResponseStream());
                var         rs = sr.ReadToEnd();
                return(rs);
            }
            catch (Exception ex)
            {
                return(null);
                //EventLogger.Write(ex, "NowFloats.Boost Exception: Unable to SendMailToServer", null);
            }
        }
Пример #17
0
 public IActionResult GetWebsiteDataByPropertyPath([FromRoute] string schemaid, [FromBody] GetWebsiteDataByPropertyPathV2 requestModel, [FromRoute] string clientid = null)
 {
     try
     {
         var userId = AuthHelper.AuthorizeRequest(Request);
         if (string.IsNullOrEmpty(userId) && (string.IsNullOrEmpty(clientid) || BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() != clientid.Trim().ToUpper()))
         {
             return(new CommonActionResult(CommonAPIResponse.UnAuthorized()));
         }
         requestModel.SchemaId = schemaid;
         var validationResult = requestModel.Validate();
         if (validationResult.Any())
         {
             return(BadRequest(validationResult));
         }
         var result        = new List <GetWebsiteDataByPropertyResponseModel>();
         var segmentRequet = new GetWebsiteDataByPropertyPath()
         {
             SchemaId = requestModel.SchemaId, UserEmail = requestModel.UserEmail, WebsiteId = requestModel.WebsiteId
         };
         foreach (var segments in requestModel.BulkPropertySegments)
         {
             segmentRequet.PropertySegments = segments;
             result.Add(MongoConnector.GetWebsiteDataByPropertyPath(segmentRequet));
         }
         return(new CommonActionResult(CommonAPIResponse.OK(result)));
     }
     catch (Exception ex)
     {
         return(BadRequest(ex));
     }
 }
 public IActionResult GetKitsuneWebsiteDetails(string WebsiteId, [FromQuery] string clientid = null)
 {
     try
     {
         var developerId = AuthHelper.AuthorizeRequest(Request);
         if (string.IsNullOrEmpty(developerId) && (string.IsNullOrEmpty(clientid) || BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() != clientid.Trim().ToUpper()))
         {
             return(new CommonActionResult(CommonAPIResponse.UnAuthorized()));
         }
         return(new CommonActionResult(MongoConnector.GetKitsuneWebsiteDetails(WebsiteId)));
     }
     catch (Exception ex)
     {
         return(new CommonActionResult(CommonAPIResponse.InternalServerError(ex)));
     }
 }
        public IActionResult PushToSitemapQueue([FromQuery] string clientid, [FromQuery] string websiteId)
        {
            try
            {
                if (string.IsNullOrEmpty(clientid) || string.IsNullOrEmpty(websiteId) || BasePluginConfigGenerator.GetBasePlugin(clientid).GetClientId() != clientid.Trim().ToUpper())
                {
                    return(Unauthorized());
                }
                if (websiteId.ToLower() == "all")
                {
                    var liveWebsites = MongoConnector.GetLiveWebsiteIds();
                    if (liveWebsites != null && liveWebsites.Any())
                    {
                        var result = string.Empty;
                        foreach (var website in liveWebsites.Select(x => new KeyValuePair <string, string>(x.Substring(0, x.IndexOf(':')), x.Substring(x.IndexOf(':') + 1))))
                        {
                            result = CommonHelpers.PushSitemapGenerationTaskToSQS(new SitemapGenerationTaskModel()
                            {
                                WebsiteId = website.Key, ProjectId = website.Value
                            });
                        }
                        if (!string.IsNullOrEmpty(result))
                        {
                            return(Ok());
                        }
                    }
                }
                else
                {
                    var result = CommonHelpers.PushSitemapGenerationTaskToSQS(new SitemapGenerationTaskModel()
                    {
                        WebsiteId = websiteId
                    });
                    if (!string.IsNullOrEmpty(result))
                    {
                        return(Ok());
                    }
                }

                return(new CommonActionResult(CommonAPIResponse.BadRequest(new ValidationResult("Invalid sitemap request"))));
            }
            catch (Exception ex)
            {
                return(new CommonActionResult(CommonAPIResponse.InternalServerError(ex)));
            }
        }