File size: 1,736 Bytes
5e71af7
a202b6d
1c007bb
a202b6d
1c007bb
 
 
 
 
 
a202b6d
 
 
 
 
1c007bb
 
 
a202b6d
 
 
5e71af7
a202b6d
 
 
1c007bb
 
 
a202b6d
1c007bb
 
c10a05f
 
a202b6d
 
1c007bb
 
5e71af7
 
 
d5ef8f7
5e71af7
 
 
 
 
d5ef8f7
 
 
 
 
 
 
 
 
 
 
 
 
 
1c007bb
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import random
from a3c.play import get_play_model_path, play
from flask import Flask, request, jsonify
from flask_cors import cross_origin
from wordle_env.words import target_vocabulary
from wordle_env.wordle import get_env

app = Flask(__name__)


def validate_goal_word(word):
    if not word:
        return True, 'Goal word not provided'
    if word.upper() not in target_vocabulary:
        return True, 'Goal word not in vocabulary'
    return False, ''


@app.route('/play_word', methods=['GET'])
@cross_origin(origin='*', headers=['Content-Type', 'Authorization'])
def get_play():
    # Get the goal word from the request
    word = request.args.get('goal_word')

    error, msge = validate_goal_word(word)
    if error:
        return jsonify({'error': msge}), 400

    word = word.upper()
    env = get_env()
    model_path = get_play_model_path()
    # Call the play function with the goal word
    # and return the attempts and the result
    won, attempts = play(env, model_path, word)
    return jsonify({'attempts': attempts, 'won': won})


@app.route('/word', methods=['GET'])
@cross_origin(origin='*', headers=['Content-Type', 'Authorization'])
def get_word():
    # Get a random word from the target vocabulary used to train the model
    word = random.choice(target_vocabulary)
    word = word.upper()
    return jsonify({'word': word})


def create_app(settings_override=None):
    """
    Create a Flask application using the app factory pattern.
    :param settings_override: Override settings
    :return: Flask app
    """
    # app.config.from_object("config.settings")

    if settings_override:
        app.config.update(settings_override)

    return app


if __name__ == '__main__':
    app.run(debug=True)