Exemple #1
0
        public async Task <Tuple <bool, string> > InsertUrl(UrlShortenedModelDb model, ILogger logger)
        {
            try
            {
                logger.Log(LogLevel.Information, _INSERT_NEW_URL_TRACE);

                var collection = this._MongoDatabase.GetCollection <UrlShortenedModelDb>(this._MongoCollection);

                await collection.InsertOneAsync(model);

                return(new Tuple <bool, string>(true, model.short_code));
            }
            catch (MongoWriteException ex)
            {
                logger.Log(LogLevel.Critical, ex, _INSERT_NEW_URL_TRACE);

                return(new Tuple <bool, string>(false, ""));
            }
            catch (Exception ex)
            {
                logger.Log(LogLevel.Critical, ex, _INSERT_NEW_URL_TRACE);

                return(new Tuple <bool, string>(false, ""));
            }
        }
Exemple #2
0
        public async Task<Tuple<bool,ResponsePostNewUrlModel>> GenerateShortUrl(string url)
        {
            try
            {
                this._Logger.Log(LogLevel.Information, _GENERATE_SHORT_URL_TRACE);

                var sizeCode = Convert.ToInt32(this._Configuration["SizeCode"].ToString());

                var doc = new UrlShortenedModelDb()
                {
                    url = url,
                    obj = (int)OBJ_DOCUMENT.SHORT_URL,
                    short_code = Tools.GetAlphanumericRandom(sizeCode),
                    created_date = DateTime.UtcNow
                };

                var result = await this._MongoTransaction.InsertUrl(doc, this._Logger);

                if(result.Item1)
                {
                    var response = new ResponsePostNewUrlModel()
                    {
                        short_url = doc.short_code
                    };

                    return new Tuple<bool, ResponsePostNewUrlModel>(true, response);
                }

                return new Tuple<bool, ResponsePostNewUrlModel>(false, null);

            }
            catch(Exception ex)
            {
                this._Logger.Log(LogLevel.Critical, ex, _GENERATE_SHORT_URL_TRACE);

                return new Tuple<bool, ResponsePostNewUrlModel>(false, null);
            }
        }