Skip to content

Commit

Permalink
fix: raise not found on unsupported language
Browse files Browse the repository at this point in the history
  • Loading branch information
frpouly committed Feb 4, 2024
1 parent 14109c6 commit 5faee35
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 47 deletions.
2 changes: 1 addition & 1 deletion src/Expressio/Controllers/ExpressionsController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public async Task<ActionResult<ExpressionDTO>> GetExpression(long id)

if (expression == null)
{
return NotFound();
return NotFound($"No expression with the following id: {id}");
}

return _mapper.Map<Expression, ExpressionDTO>(expression);
Expand Down
22 changes: 18 additions & 4 deletions src/Expressio/Controllers/MixedExpressionsController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,29 @@ public MixedExpressionsController(ExpressioContext context, IMapper mapper)
[HttpGet("random")]
public async Task<ActionResult<MixedExpressionDTO>> GetRandomMixedExpression(string lang)
{
var mixed_expression = await Task.Run(() => _mixers[lang].Generate());
return _mapper.Map<MixedExpression, MixedExpressionDTO>(mixed_expression);
if(_mixers.TryGetValue(lang, out Mixer? mixer))
{
var mixed_expression = await Task.Run(() => mixer.Generate());
return _mapper.Map<MixedExpression, MixedExpressionDTO>(mixed_expression);
}
else
{
return NotFound($"Language {lang} is not supported");
}
}

[HttpGet("seeded/{seed}")]
public async Task<ActionResult<MixedExpressionDTO>> GetSeededMixedExpression(int seed, string lang)
{
var mixed_expression = await Task.Run(() => _mixers[lang].Generate(seed));
return _mapper.Map<MixedExpression, MixedExpressionDTO>(mixed_expression);
if(_mixers.TryGetValue(lang, out Mixer? mixer))
{
var mixed_expression = await Task.Run(() => mixer.Generate(seed));
return _mapper.Map<MixedExpression, MixedExpressionDTO>(mixed_expression);
}
else
{
return NotFound($"Language {lang} is not supported");
}
}
}
}
38 changes: 38 additions & 0 deletions src/Expressio/Models/Mixer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,42 @@ private void PopulateDictionnary()
foreach(var kv in _dic)
_weights.AddRange(Enumerable.Repeat(kv.Key, kv.Value.NumberOfPossibilities));
}

private class Possibilities
{
public string Word { get; }
private List<Expression> Expressions = new List<Expression>();
public int NumberOfPossibilities {
get
{
return Expressions.Count * (Expressions.Count - 1);
}
}

public Possibilities(string word, Expression expression)
{
Word = word;
Expressions.Add(expression);
}

public void AddExpression(Expression e)
{
Expressions.Add(e);
}

public void RemoveDuplicates()
{
Expressions = Expressions.Distinct().ToList();
}

public MixedExpression Generate(Random rand, int seed)
{
var expressions = Expressions.OrderBy(e => rand.Next()).Take(2).ToList();
return new MixedExpression(
$"{expressions.First().SplitFirst(Word)} {expressions.Last().SplitLast(Word)}",
[expressions.First(), expressions.Last()],
seed
);
}
}
}
42 changes: 0 additions & 42 deletions src/Expressio/Models/Possibilities.cs

This file was deleted.

0 comments on commit 5faee35

Please sign in to comment.