# Copyright 2015 IBM Corp. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import os, json, requests
from flask import Flask, jsonify, request

app = Flask(__name__)

VCAP_SERVICES = "{\"language_translation\":[{\"name\":\"Language Translation-bc\",\"label\":\"language_translation\",\"tags\":[\"watson\",\"ibm_created\",\"ibm_dedicated_public\"],\"plan\":\"standard\",\"credentials\":{\"url\":\"https://gateway.watsonplatform.net/language-translation/api\",\"username\":\"b22a962b-bb4f-489c-b66e-3d572f5659cb\",\"password\":\"xjzQ1pI4BvUE\"}}]}"

def getVcapServices():
    if 'VCAP_SERVICES' in os.environ:
        val = os.environ['VCAP_SERVICES']
    else: # local machine
        val = VCAP_SERVICES
    return json.loads(val)

def callLanguageTranslation(api, data=None):
    services = getVcapServices()
    url = services['language_translation'][0]['credentials']['url']
    user = services['language_translation'][0]['credentials']['username']
    password = services['language_translation'][0]['credentials']['password']
    auth = (user, password)
    headers = {'accept': 'application/json'}
    if not data:
        r = requests.get(url + api, auth=auth, headers=headers)
        val = r.json()
    else:
        r = requests.post(url + api, json=data, auth=auth, headers=headers)
        val = r.json()
    return jsonify(val)

@app.route('/', methods=['GET', 'POST'])
def Welcome():
    if request.method == 'POST':
        text = request.form['wiym']
        data = {'source': 'fr', 'target': 'en', 'text': [text]}
        return callLanguageTranslation(VCAP_SERVICES, '/v2/translate', data)
    else:
        return app.send_static_file('index.html')

@app.route('/myapp')
def WelcomeToMyapp():
    return callLanguageTranslation('/v2/identifiable_languages')

@app.route('/myapp1')
def WelcomeToMyapp1():
    data = {'source': 'fr', 'target': 'en', 'text': ['Bonjour mon pote']}
    return callLanguageTranslation('/v2/translate', data)

@app.route('/env')
def GetEnv():
    val = {'ENV': dict(os.environ)}
    val['VCAP_SERVICES'] = getVcapServices()
    return jsonify(val)

@app.route('/api/people')
def GetPeople():
    list = [
        {'name': 'John', 'age': 28},
        {'name': 'Bill', 'val': 26}
    ]
    return jsonify(results=list)

@app.route('/api/people/<name>')
def SayHello(name):
    message = {
        'message': 'Hello ' + name
    }
    return jsonify(results=message)

port = os.getenv('PORT', '5000')
if __name__ == "__main__":
	app.run(host='0.0.0.0', port=int(port), debug=True)
