//----Phrases----// public async Task GeneratePhrases(User user, User gm, PhoneticPhrases generated) { // Procedura generiranja frazi // Generira se fraza po fraza. Igrač koji je GameMaster ima ulogu suca koji dobiva // originalnu, generiranu frazu. Ostali igrači u Sessionu dobivaju fonetski ekvivalent. // Sudac (GameMaster) treba sam prosuditi tko je pobjednik u kojoj rundi (na osnovu // tko je točno odgovorio i bio najbrži). Ako se fraza nije generirala, onda se šalje // novi zahtjev prema REST API-ju if (gm.PrivateAddress == user.PrivateAddress) { GameMaster = user; GMConnectionId = Context.ConnectionId; } generated = restApi.GeneratePhoneticEquivalents(); if (!string.IsNullOrEmpty(generated.PhraseGenerated) && !string.IsNullOrEmpty(generated.PhrasePhonetic)) { await Clients.GroupExcept(user.PublicAddress, GMConnectionId).SendAsync("PhrasesGenerated", generated.PhrasePhonetic); await Clients.Client(GMConnectionId).SendAsync("ListAllPlayers", 0); await Clients.Client(GMConnectionId).SendAsync("OriginalPhraseFetched", generated.PhraseGenerated); await Clients.Group(user.PublicAddress).SendAsync("SetupTimer", 0); } else { await Clients.Groups(user.PublicAddress).SendAsync("PhrasesNotGenerated", generated); } }
private PhoneticPhrases GetPhoneticEquivalents(string phrase) { // Dohvaća i generira fonetske ekvivalente List <PhoneticEquivalentPair> phoneticPairs = new List <PhoneticEquivalentPair>(); bool flag = false; string[] dissected = phrase.Split(); foreach (string word in dissected) { var request = (HttpWebRequest)WebRequest.Create("https://api.datamuse.com/words?sl=" + word); request.UserAgent = "curl"; request.Method = "GET"; var responseData = ""; using (WebResponse response = request.GetResponse()) { using (var reader = new StreamReader(response.GetResponseStream())) { responseData = reader.ReadToEnd(); } } PhoneticEquivalent[] phonEquiv = JsonConvert.DeserializeObject <List <PhoneticEquivalent> >(responseData).ToArray(); List <PhoneticEquivalent> highestScorePhonetics = new List <PhoneticEquivalent>(); foreach (PhoneticEquivalent pe in phonEquiv) { if (pe.Score > 92 && pe.Score <= 99) { highestScorePhonetics.Add(pe); } } if (highestScorePhonetics.Count == 0) { flag = true; } phoneticPairs.Add(new PhoneticEquivalentPair(highestScorePhonetics, word)); } if (flag) { return(new PhoneticPhrases("", "")); } else { PhoneticPhrases phoneticPhrase = GenerateRandomPhonetic(phoneticPairs, phrase); return(phoneticPhrase); } }