Skip to content

Commit a073f28

Browse files
Merge pull request #35 from skyflowapi/fix-contentType
add content-type default header
2 parents 6ec242c + 0834218 commit a073f28

29 files changed

+361
-117
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,4 @@ jobs:
3838
pip install requests pyjwt datetime aiohttp cryptography python-dotenv coverage
3939
coverage run --source skyflow -m unittest discover
4040
- name: coverage
41-
run: coverage report
41+
run: coverage report -m

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [1.3.0] - 2021-02-24
6+
7+
### Added
8+
- Request ID in error logs and error responses for API Errors
9+
- Caching to accessToken token
10+
- `isValid` method for validating Service Account bearer token
11+
512
## [1.2.1] - 2022-01-18
613

714
### Fixed

README.md

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,24 @@ The `generateBearerToken(filepath)` function takes the credentials file path for
3232

3333

3434
```python
35-
from skyflow.ServiceAccount import generateBearerToken
35+
from skyflow.Errors import SkyflowError
36+
from skyflow.ServiceAccount import generateBearerToken, isValid
37+
38+
# cache token for reuse
39+
bearerToken = ''
40+
tokenType = ''
41+
def tokenProvider():
42+
if not isValid(bearerToken):
43+
bearerToken, tokenType = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
44+
return bearerToken, tokenType
3645

37-
filepath = '<YOUR_CREDENTIALS_FILE_PATH>'
38-
accessToken, tokenType = generateBearerToken(filepath) # or generateBearerTokenFromCreds(credentials)
46+
try:
47+
accessToken, tokenType = tokenProvider()
48+
print("Access Token:", accessToken)
49+
print("Type of token:", tokenType)
50+
except SkyflowError as e:
51+
print(e)
3952

40-
print("Access Token:", accessToken)
41-
print("Type of token:", tokenType)
4253
```
4354

4455

@@ -49,12 +60,17 @@ To use this module, the skyflow client must first be initialized as follows.
4960

5061
```python
5162
from skyflow.Vault import Client, Configuration
52-
from skyflow.ServiceAccount import generateBearerToken
63+
from skyflow.ServiceAccount import generateBearerToken, isValid
64+
65+
# cache for reuse
66+
bearerToken = ''
5367

54-
#User defined function to provide access token to the vault apis
68+
# User defined function to provide access token to the vault apis
5569
def tokenProvider():
56-
token, _ = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
57-
return token
70+
if isValid(bearerToken):
71+
return bearerToken
72+
bearerToken, _ = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
73+
return bearerToken
5874

5975
#Initializing a Skyflow Client instance with a SkyflowConfiguration object
6076
config = Configuration('<YOUR_VAULT_ID>', '<YOUR_VAULT_URL>', tokenProvider)
@@ -293,9 +309,12 @@ An example of invokeConnection:
293309
```python
294310
from skyflow.Vault import ConnectionConfig, Configuration, RequestMethod
295311

312+
bearerToken = ''
296313
def tokenProvider():
297-
token, _ = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
298-
return token
314+
if isValid(bearerToken):
315+
return bearerToken
316+
bearerToken, _ = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
317+
return bearerToken
299318

300319
try:
301320
config = Configuration('<YOUR_VAULT_ID>', '<YOUR_VAULT_URL>', tokenProvider)

samples/InsertSample.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
from skyflow.Errors import SkyflowError
2-
from skyflow.ServiceAccount import generateBearerToken
2+
from skyflow.ServiceAccount import generateBearerToken, isValid
33
from skyflow.Vault import Client, InsertOptions, Configuration
44

5-
5+
# cache token for reuse
6+
bearerToken = ''
67
def tokenProvider():
7-
token, _ = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
8-
return token
8+
if not isValid(bearerToken):
9+
bearerToken, _ = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
10+
return bearerToken
911

1012
try:
1113
config = Configuration('<YOUR_VAULT_ID>', '<YOUR_VAULT_URL>', tokenProvider)

samples/SATokenSample.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
from skyflow.Errors import SkyflowError
2-
from skyflow.ServiceAccount import generateBearerToken
2+
from skyflow.ServiceAccount import generateBearerToken, isValid
33

4+
# cache token for reuse
5+
bearerToken = ''
6+
tokenType = ''
7+
def tokenProvider():
8+
if not isValid(bearerToken):
9+
bearerToken, tokenType = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
10+
return bearerToken, tokenType
411

512
try:
6-
accessToken, tokenType = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
13+
accessToken, tokenType = tokenProvider()
714
print("Access Token:", accessToken)
815
print("Type of token:", tokenType)
916
except SkyflowError as e:

samples/detokenizeSample.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
from skyflow.Errors import SkyflowError
2-
from skyflow.ServiceAccount import generateBearerToken
2+
from skyflow.ServiceAccount import generateBearerToken, isValid
33
from skyflow.Vault import Client, Configuration
44

5-
5+
# cache token for reuse
6+
bearerToken = ''
67
def tokenProvider():
7-
token, _ = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
8-
return token
8+
if not isValid(bearerToken):
9+
bearerToken, _ = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
10+
return bearerToken
911

1012
try:
1113
config = Configuration('<YOUR_VAULT_ID>', '<YOUR_VAULT_URL>', tokenProvider)

samples/generateBearerTokenFromCredsSample.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import json
22

33
from skyflow.Errors import SkyflowError
4-
from skyflow.ServiceAccount import generateBearerTokenFromCreds
4+
from skyflow.ServiceAccount import generateBearerTokenFromCreds, isValid
55

66
'''
77
This sample demonstrates the usage of generateBearerTokenFromCreds
@@ -10,8 +10,11 @@
1010
- Use generateBearerTokenFromCreds(jsonString) to get the Bearer Token
1111
'''
1212

13+
# cache token for reuse
14+
bearerToken = ''
15+
tokenType = ''
16+
def tokenProvider():
1317

14-
try:
1518
# As an example
1619
credentials = {
1720
"clientID": "<YOUR_clientID>",
@@ -21,7 +24,13 @@
2124
"privateKey": "<YOUR_PEM_privateKey>"
2225
}
2326
jsonString = json.dumps(credentials)
24-
accessToken, tokenType = generateBearerTokenFromCreds(credentials=jsonString)
27+
if not isValid(bearerToken):
28+
bearerToken, tokenType = generateBearerTokenFromCreds(credentials=jsonString)
29+
30+
return bearerToken
31+
32+
try:
33+
accessToken, tokenType = tokenProvider()
2534
print("Access Token:", accessToken)
2635
print("Type of token:", tokenType)
2736
except SkyflowError as e:

samples/getByIDSample.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
from skyflow.Errors import SkyflowError
2-
from skyflow.ServiceAccount import generateBearerToken
2+
from skyflow.ServiceAccount import generateBearerToken, isValid
33
from skyflow.Vault import Client, Configuration, RedactionType
44

55

6+
# cache token for reuse
7+
bearerToken = ''
68
def tokenProvider():
7-
token, _ = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
8-
return token
9+
if not isValid(bearerToken):
10+
bearerToken, _ = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
11+
return bearerToken
912

1013
try:
1114
config = Configuration('<YOUR_VAULT_ID>', '<YOUR_VAULT_URL>', tokenProvider)

samples/invokeConnectionSample.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
from skyflow.Errors import SkyflowError
2-
from skyflow.ServiceAccount import generateBearerToken
2+
from skyflow.ServiceAccount import generateBearerToken, isValid
33
from skyflow.Vault import Client, Configuration, RequestMethod, ConnectionConfig
44

55
'''
66
This sample is for generating CVV using Skyflow Connection with a third party integration such as VISA
77
'''
88

9-
9+
# cache token for reuse
10+
bearerToken = ''
1011
def tokenProvider():
11-
token, _ = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
12-
return token
12+
if not isValid(bearerToken):
13+
bearerToken, _ = generateBearerToken('<YOUR_CREDENTIALS_FILE_PATH>')
14+
return bearerToken
15+
1316

1417
try:
1518
config = Configuration('<YOUR_VAULT_ID>', '<YOUR_VAULT_URL>', tokenProvider)

skyflow/Errors/_skyflowErrors.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ class SkyflowErrorMessages(Enum):
2020
JWT_INVALID_FORMAT = "Private key is not in correct format"
2121
MISSING_ACCESS_TOKEN = "accessToken not present in response"
2222
MISSING_TOKEN_TYPE = "tokenType not present in response"
23+
JWT_DECODE_ERROR = "Invalid access token"
2324

2425
# vault
2526
RECORDS_KEY_ERROR = "Records key is missing from payload"

0 commit comments

Comments
 (0)