Skip to content

Commit 77d3ee9

Browse files
Merge pull request #114 from w0o/master
fix: example server token services will now use regional watson service urls if those were set
2 parents aedff50 + 88a31c6 commit 77d3ee9

File tree

3 files changed

+49
-37
lines changed

3 files changed

+49
-37
lines changed

Diff for: examples/readme.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Setup - Node.js
2727
Setup - Python
2828
--------------
2929

30-
1. `cd` into the `examples/` directory and run `pip install watson_developer_cloud flask` (or `easy_install...`) to install python dependencies
30+
1. `cd` into the `examples/` directory and run `pip install watson_developer_cloud flask python-dotenv pyopenssl` (or `easy_install...`) to install python dependencies.
3131
2. run `bower install` to install client-side dependencies
3232
3. edit `server.py` to include your service credentials (or create a `.env` file)
3333
4. run `python server.py`

Diff for: examples/server.js

+18-26
Original file line numberDiff line numberDiff line change
@@ -89,25 +89,21 @@ var sttAuthService = new AuthorizationV1(
8989
{
9090
username: process.env.SPEECH_TO_TEXT_USERNAME, // or hard-code credentials here
9191
password: process.env.SPEECH_TO_TEXT_PASSWORD,
92-
iam_apikey: process.env.SPEECH_TO_TEXT_IAM_APIKEY // if using an RC service
92+
iam_apikey: process.env.SPEECH_TO_TEXT_IAM_APIKEY, // if using an RC service
93+
url: process.env.SPEECH_TO_TEXT_URL ? process.env.SPEECH_TO_TEXT_URL : SpeechToTextV1.URL
9394
},
9495
vcapServices.getCredentials('speech_to_text') // pulls credentials from environment in bluemix, otherwise returns {}
9596
)
9697
);
9798
app.use('/api/speech-to-text/token', function(req, res) {
98-
sttAuthService.getToken(
99-
{
100-
url: SpeechToTextV1.URL
101-
},
102-
function(err, token) {
103-
if (err) {
104-
console.log('Error retrieving token: ', err);
105-
res.status(500).send('Error retrieving token');
106-
return;
107-
}
108-
res.send(token);
99+
sttAuthService.getToken({}, function(err, token) {
100+
if (err) {
101+
console.log('Error retrieving token: ', err);
102+
res.status(500).send('Error retrieving token');
103+
return;
109104
}
110-
);
105+
res.send(token);
106+
});
111107
});
112108

113109
// text to speech token endpoint
@@ -116,25 +112,21 @@ var ttsAuthService = new AuthorizationV1(
116112
{
117113
username: process.env.TEXT_TO_SPEECH_USERNAME, // or hard-code credentials here
118114
password: process.env.TEXT_TO_SPEECH_PASSWORD,
119-
iam_apikey: process.env.TEXT_TO_SPEECH_IAM_APIKEY // if using an RC service
115+
iam_apikey: process.env.TEXT_TO_SPEECH_IAM_APIKEY, // if using an RC service
116+
url: process.env.TEXT_TO_SPEECH_URL ? process.env.TEXT_TO_SPEECH_URL : TextToSpeechV1.URL
120117
},
121118
vcapServices.getCredentials('text_to_speech') // pulls credentials from environment in bluemix, otherwise returns {}
122119
)
123120
);
124121
app.use('/api/text-to-speech/token', function(req, res) {
125-
ttsAuthService.getToken(
126-
{
127-
url: TextToSpeechV1.URL
128-
},
129-
function(err, token) {
130-
if (err) {
131-
console.log('Error retrieving token: ', err);
132-
res.status(500).send('Error retrieving token');
133-
return;
134-
}
135-
res.send(token);
122+
ttsAuthService.getToken({}, function(err, token) {
123+
if (err) {
124+
console.log('Error retrieving token: ', err);
125+
res.status(500).send('Error retrieving token');
126+
return;
136127
}
137-
);
128+
res.send(token);
129+
});
138130
});
139131

140132
const port = process.env.PORT || process.env.VCAP_APP_PORT || 3000;

Diff for: examples/server.py

+30-10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os, json
22
from flask import Flask
33
from watson_developer_cloud import AuthorizationV1 as Authorization
4+
from watson_developer_cloud import IAMTokenManager
45
from watson_developer_cloud import SpeechToTextV1 as SpeechToText
56
from watson_developer_cloud import TextToSpeechV1 as TextToSpeech
67
from dotenv import load_dotenv
@@ -9,21 +10,29 @@
910
load_dotenv('.env')
1011

1112
# Text to Speech
12-
TTS_USERNAME = os.environ.get('TTS_USERNAME'); # '<Text to Speech username>'
13-
TTS_PASSWORD = os.environ.get('TTS_PASSWORD'); # '<Text to Speech password'
13+
TTS_USERNAME = os.environ.get('TEXT_TO_SPEECH_USERNAME') # '<Text to Speech username>'
14+
TTS_PASSWORD = os.environ.get('TEXT_TO_SPEECH_PASSWORD') # '<Text to Speech password'
15+
TTS_APIKEY = os.environ.get('TEXT_TO_SPEECH_IAM_APIKEY') # '<Text to Speech IAM API key'
16+
TTS_URL = os.environ.get('TEXT_TO_SPEECH_URL') # '<Text to Speech URL>'
1417

1518
# Speech to Text
16-
STT_USERNAME = os.environ.get('STT_USERNAME'); # '<Speech to Text username>'
17-
STT_PASSWORD = os.environ.get('STT_PASSWORD'); # '<Speech to Text password>'
19+
STT_USERNAME = os.environ.get('SPEECH_TO_TEXT_USERNAME') # '<Speech to Text username>'
20+
STT_PASSWORD = os.environ.get('SPEECH_TO_TEXT_PASSWORD') # '<Speech to Text password>'
21+
STT_APIKEY = os.environ.get('SPEECH_TO_TEXT_IAM_APIKEY') # '<Speech to Text IAM API key>'
22+
STT_URL = os.environ.get('SPEECH_TO_TEXT_URL') # '<Speech to Text URL>'
1823

1924
# on bluemix, automatically pull credentials from environment
2025
if 'VCAP_SERVICES' in os.environ:
2126
stt = json.loads(os.environ['VCAP_SERVICES'])['speech_to_text'][0]
2227
STT_USERNAME = stt["credentials"]["username"]
2328
STT_PASSWORD = stt["credentials"]["password"]
29+
STT_APIKEY = stt["credentials"]["apikey"]
30+
STT_URL = stt["credentials"]["url"] if stt["credentials"]["url"] else SpeechToText.default_url
2431
tts = json.loads(os.environ['VCAP_SERVICES'])['text_to_speech'][0]
2532
TTS_USERNAME = tts["credentials"]["username"]
2633
TTS_PASSWORD = tts["credentials"]["password"]
34+
TTS_APIKEY = tts["credentials"]["apikey"]
35+
TTS_URL = tts["credentials"]["url"] if tts["credentials"]["url"] else TextToSpeech.default_url
2736

2837
app = Flask(__name__, static_url_path='')
2938

@@ -33,13 +42,24 @@ def root():
3342

3443
@app.route('/api/speech-to-text/token')
3544
def getSttToken():
36-
print(STT_USERNAME)
37-
authorization = Authorization(username=STT_USERNAME, password=STT_PASSWORD)
38-
return authorization.get_token(url=SpeechToText.default_url)
45+
if (STT_APIKEY):
46+
iamTokenManager = IAMTokenManager(iam_apikey=STT_APIKEY)
47+
token = iamTokenManager.get_token()
48+
else:
49+
authorization = Authorization(username=STT_USERNAME, password=STT_PASSWORD)
50+
token = authorization.get_token(url=STT_URL)
51+
return token
3952

4053
@app.route('/api/text-to-speech/token')
4154
def getTtsToken():
42-
authorization = Authorization(username=TTS_USERNAME, password=TTS_PASSWORD)
43-
return authorization.get_token(url=TextToSpeech.default_url)
55+
if (TTS_APIKEY):
56+
iamTokenManager = IAMTokenManager(iam_apikey=TTS_APIKEY)
57+
token = iamTokenManager.get_token()
58+
else:
59+
authorization = Authorization(username=TTS_USERNAME, password=TTS_PASSWORD)
60+
token = authorization.get_token(url=TTS_URL)
61+
return token
4462

45-
app.run(debug=True)
63+
# NOTE: ssl_context='adhoc' fixes response encoding (Flask 400 BAD_REQUEST) errors over SSL
64+
if __name__ == '__main__':
65+
app.run(ssl_context='adhoc', debug=True)

0 commit comments

Comments
 (0)