Example #1
0
        public async Task <Result <string> > ToShortAsync(string longUrl)
        {
            var result = new Result <string>();

            var r = await _session.HasAsync(longUrl);

            int retry = 10;

            while (!r.Succeeded && retry > 0)
            {
                var shortId = RandomEx.GenerateString(6);

                var link = new Link {
                    Id = shortId, LongUrl = longUrl
                };

                r = await _session.AddAsync(link);

                retry--;
            }

            return(r.Succeeded ? result.Ok(r.Value.Id) : result.Merge(r));
        }