예제 #1
0
    def get(self, slack_id):
        slack = SlackHelper(current_app.config['SLACK_TOKEN'])
        try:
            slack_user = slack.get_user(slack_id)
        except SlackUserNotFound as e:
            logging.error('Slack Api Error: {}'.format(str(e)))
            return Response.error(
                {'general': [Response.NOT_FOUND.format("Player")]}, 404)
        except SlackRequestFailed as e:
            logging.error('Slack Api Error: {}'.format(str(e)))
            return Response.error({'general': [Response.REQUEST_FAILED]}, 503)

        player = Player.query.get(slack_id)
        if player is None:
            player = Player()

        player.merge_slack_user(slack_user)
        return Response.success(player_schema.dump(player).data)
예제 #2
0
    def get(self):
        slack = SlackHelper(current_app.config['SLACK_TOKEN'])
        players = Player.query.all()
        try:
            slack_users = slack.get_users(search_term=request.args.get("s"))
        except SlackRequestFailed as e:
            logging.error('Slack Api Error: {}'.format(str(e)))
            return Response.error({'general': [Response.REQUEST_FAILED]}, 503)
        players = enrich_slack_users_with_players(slack_users, players)

        return Response.success(players_schema.dump(players).data)
예제 #3
0
    def patch(self, slack_id):
        slack = SlackHelper(current_app.config['SLACK_TOKEN'])

        request_data = request.get_json(force=True)
        if not request_data:
            return Response.error({'general': [Response.BODY_EMPTY]}, 400)

        unk = validate_schema_unknown_fields(player_schema, request_data)
        errors = player_schema.validate(request_data)
        errors = dict(**unk, **errors)
        if errors:
            return Response.error(errors, 422)

        try:
            slack_user = slack.get_user(slack_id)
        except SlackUserNotFound as e:
            logging.error('Slack Api Error: {}'.format(str(e)))
            return Response.error(
                {'slack_id': Response.INVALID.format("Slack ID")}, 422)
        except SlackRequestFailed as e:
            logging.error('Slack Api Error: {}'.format(str(e)))
            return Response.error({'general': [Response.REQUEST_FAILED]}, 503)

        player = Player.query.get(slack_id)
        response_code = 200
        if not player:
            player = Player()
            player.slack_id = slack_id
            response_code = 201
            db.session.add(player)

        player_schema.load(request_data, instance=player)

        db.session.commit()
        player.merge_slack_user(slack_user)

        return Response.success(player_schema.dump(player).data, response_code)