Skip to content

Commit 65251a8

Browse files
committed
- Change chrome OAuth API endpoint to https://www.googleapis.com/oauth2/v4/token
- Minor fixes
1 parent 122c6f9 commit 65251a8

14 files changed

+31
-398
lines changed

README.md

+10
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,16 @@ Tests are written with `py.test`. To run them, use `python setup.py test`.
5858
Alternatively, you may directly run pytest: `python -m pytest` in the root of the repository. In this case make sure you
5959
have all testing dependencies installed.
6060

61+
##### Recording new Betamax cassettes
62+
- To record new cassettes, delete existing `webstore_manager/tests/fixtures/cassettes/*`. Make sure that folder
63+
`webstore_manager/tests/fixtures/cassettes` exists and is empty.
64+
65+
- Run tests with environment variables `refresh_token`, `client_secret`, `code`, `client_id`, `app_id`. You will need to
66+
get them by creating a Google account, API credentials, and running `init` command.
67+
68+
- `app_id` must point to an extension that is already uploaded and has language and region set.
69+
70+
6171
### Documentation
6272
Documentation lives in the `docs` folder. To build it, run `make html` or `make.bat html` on Linux or Windows,
6373
respectively.

VERSION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.7.9
1+
0.7.10

tests/chrome_store/test_chrome.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def test_check_status(betamax_session, auth):
8585
session=betamax_session)
8686

8787
version = store.get_uploaded_version()
88-
assert version == '1.0.12345'
88+
assert version == '1.0.12346'
8989

9090

9191
def test_repack_crx():

tests/files/sample_zip.zip

-42 Bytes
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -1,97 +1 @@
1-
{
2-
"recorded_with": "betamax/0.8.0",
3-
"http_interactions": [
4-
{
5-
"recorded_at": "2017-01-18T15:22:08",
6-
"response": {
7-
"headers": {
8-
"Vary": "Accept-Encoding",
9-
"Alt-Svc": "quic=\":443\"; ma=2592000; v=\"35,34\"",
10-
"Expires": "Mon, 01 Jan 1990 00:00:00 GMT",
11-
"Accept-Ranges": "none",
12-
"X-Frame-Options": "SAMEORIGIN",
13-
"Transfer-Encoding": "chunked",
14-
"Content-Type": "application/json; charset=utf-8",
15-
"X-Content-Type-Options": "nosniff",
16-
"Cache-Control": "no-cache, no-store, max-age=0, must-revalidate",
17-
"Date": "Wed, 18 Jan 2017 15:22:08 GMT",
18-
"Content-Disposition": "attachment; filename=\"json.txt\"; filename*=UTF-8''json.txt",
19-
"Server": "ESF",
20-
"Pragma": "no-cache",
21-
"X-XSS-Protection": "1; mode=block"
22-
},
23-
"url": "https://accounts.google.com/o/oauth2/token",
24-
"status": {
25-
"code": 200,
26-
"message": "OK"
27-
},
28-
"body": {
29-
"encoding": "utf-8",
30-
"string": "{\n \"access_token\" : \"<ACCESS_TOKEN>\",\n \"expires_in\" : 3600,\n \"token_type\" : \"Bearer\"\n}"
31-
}
32-
},
33-
"request": {
34-
"headers": {
35-
"Content-Type": "application/x-www-form-urlencoded",
36-
"User-Agent": "python-requests/2.12.2",
37-
"Accept": "*/*",
38-
"Accept-Encoding": "identity",
39-
"Content-Length": "257",
40-
"Connection": "keep-alive"
41-
},
42-
"uri": "https://accounts.google.com/o/oauth2/token",
43-
"body": {
44-
"encoding": "utf-8",
45-
"string": "client_id=<CLIENT_ID>&refresh_token=<REFRESH_TOKEN>&client_secret=<CLIENT_SECRET>&grant_type=refresh_token&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob"
46-
},
47-
"method": "POST"
48-
}
49-
},
50-
{
51-
"recorded_at": "2017-01-18T15:22:08",
52-
"response": {
53-
"headers": {
54-
"Vary": "Origin",
55-
"Content-Type": "application/json; charset=UTF-8",
56-
"Expires": "Wed, 18 Jan 2017 15:22:08 GMT",
57-
"ETag": "\"zcKCbcvu6shTA9Iu7WA6nfbfCrA/-blXXN4HeOtwfJ7Qs6Xj_UX6aGg\"",
58-
"X-Frame-Options": "SAMEORIGIN",
59-
"Alt-Svc": "quic=\":443\"; ma=2592000; v=\"35,34\"",
60-
"Content-Length": "596",
61-
"Date": "Wed, 18 Jan 2017 15:22:08 GMT",
62-
"Server": "GSE",
63-
"Cache-Control": "private, max-age=0, must-revalidate, no-transform",
64-
"X-Content-Type-Options": "nosniff",
65-
"X-XSS-Protection": "1; mode=block"
66-
},
67-
"url": "https://www.googleapis.com/chromewebstore/v1.1/items/<APP_ID>?projection=draft",
68-
"status": {
69-
"code": 200,
70-
"message": "OK"
71-
},
72-
"body": {
73-
"encoding": "UTF-8",
74-
"string": "{\"kind\":\"chromewebstore#item\",\"id\":\"<APP_ID>\",\"publicKey\":\"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA06F1SfYp6ho9+z/ur6cD\\ndLMJgkn0kStcKRFG39ze7+DaL6rmuqEnlw0skVl1oA8sy7e+5okoOP7hgipGfC7q\\n9aZeW2zoFYanMxQwEnoVD7S2Cpcx4USABoKRD9CkLEhg9GCCY0oP735fN8G7qB+b\\nUpuSl4IRlbKQKaw12eo3WmMRYkX7tzyNyXpJH8YHmkegkx8t2mYIqHGkm5IGUink\\n1tfKLRIjiO8R+N0nlQYjniQPWVhcbsXfBrHB006ArD1VOObZEGPCf5AVMZzQt3qB\\nSyiMbRqIDkU4fvv/KktFxlzIml6Nqnj+DiZPzENftLaW2ZbXtNruGeZ8ZKOHU2XV\\nfQIDAQAB\\n-----END PUBLIC KEY-----\\n\",\"uploadState\":\"NOT_FOUND\",\"crxVersion\":\"1.0.12345\"}"
75-
}
76-
},
77-
"request": {
78-
"headers": {
79-
"x-goog-api-version": "2",
80-
"User-Agent": "python-requests/2.12.2",
81-
"Accept": "*/*",
82-
"Accept-Encoding": "identity",
83-
"Expect": "",
84-
"Authorization": "Bearer <ACCESS_TOKEN>",
85-
"Content-Length": "0",
86-
"Connection": "keep-alive"
87-
},
88-
"uri": "https://www.googleapis.com/chromewebstore/v1.1/items/<APP_ID>?projection=draft",
89-
"body": {
90-
"encoding": "utf-8",
91-
"string": ""
92-
},
93-
"method": "GET"
94-
}
95-
}
96-
]
97-
}
1+
{"http_interactions": [{"recorded_at": "2018-02-26T14:50:30", "request": {"method": "POST", "body": {"encoding": "utf-8", "string": "redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&client_id=<CLIENT_ID>&refresh_token=<REFRESH_TOKEN>&client_secret=<CLIENT_SECRET>&grant_type=refresh_token"}, "uri": "https://www.googleapis.com/oauth2/v4/token", "headers": {"User-Agent": "python-requests/2.12.2", "Accept": "*/*", "Content-Type": "application/x-www-form-urlencoded", "Content-Length": "257", "Accept-Encoding": "identity", "Connection": "keep-alive"}}, "response": {"status": {"message": "OK", "code": 200}, "body": {"encoding": "UTF-8", "string": "{\n \"access_token\": \"<ACCESS_TOKEN>\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3600\n}\n"}, "url": "https://www.googleapis.com/oauth2/v4/token", "headers": {"X-Content-Type-Options": "nosniff", "Pragma": "no-cache", "Transfer-Encoding": "chunked", "Accept-Ranges": "none", "Vary": "X-Origin", "Expires": "Mon, 01 Jan 1990 00:00:00 GMT", "Content-Type": "application/json; charset=UTF-8", "X-Frame-Options": "SAMEORIGIN", "Server": "GSE", "Cache-Control": "no-cache, no-store, max-age=0, must-revalidate", "X-XSS-Protection": "1; mode=block", "Alt-Svc": "hq=\":443\"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=\":443\"; ma=2592000; v=\"41,39,38,37,35\"", "Date": "Mon, 26 Feb 2018 14:50:30 GMT"}}}, {"recorded_at": "2018-02-26T14:50:30", "request": {"method": "GET", "body": {"encoding": "utf-8", "string": ""}, "uri": "https://www.googleapis.com/chromewebstore/v1.1/items/<APP_ID>?projection=draft", "headers": {"User-Agent": "python-requests/2.12.2", "Accept": "*/*", "Authorization": "Bearer <ACCESS_TOKEN>", "x-goog-api-version": "2", "Content-Length": "0", "Accept-Encoding": "identity", "Connection": "keep-alive", "Expect": ""}}, "response": {"status": {"message": "OK", "code": 200}, "body": {"encoding": "UTF-8", "string": "{\"kind\":\"chromewebstore#item\",\"id\":\"<APP_ID>\",\"publicKey\":\"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo90XN0T+lW0tlZjmySCq\\npKjGjbwW+75ev4mRna7HLOpbdDbvv+boxs0YLdYneI6LofkKkWEE86l+znaJXyxu\\n0G2yF90Vc/pYre7UyDk7+RRZKa/0WZXE4sA1Jo2XGoj8mu1wWb5CAqQ2fwZaHYFO\\n9UxEM24rhkyFezTe+gCLrRW83FJC7APH36wNZyW8FQmogh6D8nOzp7o35FSXXivh\\nPE7LlkQ0dRW1W3F6RsWDLyWcB4AKQERQfsWbQgt2yezSrdjyAcSGmKg8Bo/jrMKo\\nr9hPewkkh6xkEmKhOrqgMvUrxPxB9kEcTmhZ6oGt4H2hMVNsmkBUcGkzpHBArHlP\\nTwIDAQAB\\n-----END PUBLIC KEY-----\\n\",\"uploadState\":\"NOT_FOUND\",\"crxVersion\":\"1.0.12346\"}"}, "url": "https://www.googleapis.com/chromewebstore/v1.1/items/<APP_ID>?projection=draft", "headers": {"X-Content-Type-Options": "nosniff", "Expires": "Mon, 26 Feb 2018 14:50:30 GMT", "Content-Length": "596", "Vary": "Origin", "Content-Type": "application/json; charset=UTF-8", "X-Frame-Options": "SAMEORIGIN", "Server": "GSE", "ETag": "\"ScjL6uzcKur_Zh_9YYIwNs7aBB0/jtqiWm9MQnU01TH3M_riD8csboo\"", "Cache-Control": "private, max-age=0, must-revalidate, no-transform", "X-XSS-Protection": "1; mode=block", "Alt-Svc": "hq=\":443\"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=\":443\"; ma=2592000; v=\"41,39,38,37,35\"", "Date": "Mon, 26 Feb 2018 14:50:30 GMT"}}}], "recorded_with": "betamax/0.8.0"}
Original file line numberDiff line numberDiff line change
@@ -1,51 +1 @@
1-
{
2-
"http_interactions": [
3-
{
4-
"response": {
5-
"headers": {
6-
"Accept-Ranges": "none",
7-
"Vary": "Accept-Encoding",
8-
"Server": "ESF",
9-
"Expires": "Mon, 01 Jan 1990 00:00:00 GMT",
10-
"Alt-Svc": "quic=\":443\"; ma=2592000; v=\"35,34\"",
11-
"X-Frame-Options": "SAMEORIGIN",
12-
"Cache-Control": "no-cache, no-store, max-age=0, must-revalidate",
13-
"Content-Disposition": "attachment; filename=\"json.txt\"; filename*=UTF-8''json.txt",
14-
"Content-Type": "application/json; charset=utf-8",
15-
"Transfer-Encoding": "chunked",
16-
"X-Content-Type-Options": "nosniff",
17-
"X-XSS-Protection": "1; mode=block",
18-
"Date": "Thu, 22 Dec 2016 14:22:40 GMT",
19-
"Pragma": "no-cache"
20-
},
21-
"body": {
22-
"string": "{\n \"access_token\" : \"<ACCESS_TOKEN>\",\n \"expires_in\" : 3600,\n \"token_type\" : \"Bearer\"\n}",
23-
"encoding": "utf-8"
24-
},
25-
"url": "https://accounts.google.com/o/oauth2/token",
26-
"status": {
27-
"code": 200,
28-
"message": "OK"
29-
}
30-
},
31-
"recorded_at": "2016-12-22T14:22:40",
32-
"request": {
33-
"headers": {
34-
"Accept-Encoding": "identity",
35-
"Content-Type": "application/x-www-form-urlencoded",
36-
"Connection": "keep-alive",
37-
"User-Agent": "python-requests/2.12.2",
38-
"Content-Length": "257",
39-
"Accept": "*/*"
40-
},
41-
"uri": "https://accounts.google.com/o/oauth2/token",
42-
"body": {
43-
"string": "refresh_token=<REFRESH_TOKEN>&client_secret=<CLIENT_SECRET>&client_id=<CLIENT_ID>&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&grant_type=refresh_token",
44-
"encoding": "utf-8"
45-
},
46-
"method": "POST"
47-
}
48-
}
49-
],
50-
"recorded_with": "betamax/0.8.0"
51-
}
1+
{"http_interactions": [{"recorded_at": "2018-02-26T14:50:06", "request": {"method": "POST", "body": {"encoding": "utf-8", "string": "redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&client_id=<CLIENT_ID>&refresh_token=<REFRESH_TOKEN>&client_secret=<CLIENT_SECRET>&grant_type=refresh_token"}, "uri": "https://www.googleapis.com/oauth2/v4/token", "headers": {"User-Agent": "python-requests/2.12.2", "Accept": "*/*", "Content-Type": "application/x-www-form-urlencoded", "Content-Length": "257", "Accept-Encoding": "identity", "Connection": "keep-alive"}}, "response": {"status": {"message": "OK", "code": 200}, "body": {"encoding": "UTF-8", "string": "{\n \"access_token\": \"<ACCESS_TOKEN>\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3600\n}\n"}, "url": "https://www.googleapis.com/oauth2/v4/token", "headers": {"X-Content-Type-Options": "nosniff", "Pragma": "no-cache", "Transfer-Encoding": "chunked", "Accept-Ranges": "none", "Vary": "X-Origin", "Expires": "Mon, 01 Jan 1990 00:00:00 GMT", "Content-Type": "application/json; charset=UTF-8", "X-Frame-Options": "SAMEORIGIN", "Server": "GSE", "Cache-Control": "no-cache, no-store, max-age=0, must-revalidate", "X-XSS-Protection": "1; mode=block", "Alt-Svc": "hq=\":443\"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=\":443\"; ma=2592000; v=\"41,39,38,37,35\"", "Date": "Mon, 26 Feb 2018 14:50:06 GMT"}}}], "recorded_with": "betamax/0.8.0"}
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"recorded_with": "betamax/0.8.0", "http_interactions": [{"request": {"headers": {"Content-Length": "0", "Authorization": "Bearer <ACCESS_TOKEN>", "Connection": "keep-alive", "x-goog-api-version": "2", "Accept": "*/*", "Accept-Encoding": "identity", "User-Agent": "python-requests/2.12.2"}, "method": "POST", "uri": "https://www.googleapis.com/chromewebstore/v1.1/items/<APP_ID>/publish?publishTarget=default", "body": {"encoding": "utf-8", "string": ""}}, "response": {"headers": {"Transfer-Encoding": "chunked", "Expires": "Mon, 01 Jan 1990 00:00:00 GMT", "Server": "GSE", "Accept-Ranges": "none", "Alt-Svc": "quic=\":443\"; ma=2592000; v=\"35,34\"", "Cache-Control": "no-cache, no-store, max-age=0, must-revalidate", "Pragma": "no-cache", "Date": "Fri, 06 Jan 2017 09:29:57 GMT", "X-Content-Type-Options": "nosniff", "X-XSS-Protection": "1; mode=block", "Vary": "X-Origin", "X-Frame-Options": "SAMEORIGIN", "Content-Type": "application/json; charset=UTF-8"}, "status": {"message": "OK", "code": 200}, "url": "https://www.googleapis.com/chromewebstore/v1.1/items/<APP_ID>/publish?publishTarget=default", "body": {"encoding": "UTF-8", "string": "{\"kind\":\"chromewebstore#item\",\"item_id\":\"<APP_ID>\",\"status\":[\"OK\"],\"statusDetail\":[\"OK.\"]}"}}, "recorded_at": "2017-01-06T09:29:57"}, {"request": {"headers": {"Content-Length": "257", "Connection": "keep-alive", "Accept": "*/*", "Accept-Encoding": "identity", "User-Agent": "python-requests/2.12.2", "Content-Type": "application/x-www-form-urlencoded"}, "method": "POST", "uri": "https://accounts.google.com/o/oauth2/token", "body": {"encoding": "utf-8", "string": "redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&client_secret=<CLIENT_SECRET>&client_id=<CLIENT_ID>&refresh_token=<REFRESH_TOKEN>&grant_type=refresh_token"}}, "response": {"headers": {"Transfer-Encoding": "chunked", "X-Frame-Options": "SAMEORIGIN", "Expires": "Mon, 01 Jan 1990 00:00:00 GMT", "Accept-Ranges": "none", "Server": "ESF", "Content-Disposition": "attachment; filename=\"json.txt\"; filename*=UTF-8''json.txt", "Cache-Control": "no-cache, no-store, max-age=0, must-revalidate", "Pragma": "no-cache", "Date": "Fri, 06 Jan 2017 09:31:43 GMT", "X-Content-Type-Options": "nosniff", "X-XSS-Protection": "1; mode=block", "Vary": "Accept-Encoding", "Alt-Svc": "quic=\":443\"; ma=2592000; v=\"35,34\"", "Content-Type": "application/json; charset=utf-8"}, "status": {"message": "OK", "code": 200}, "url": "https://accounts.google.com/o/oauth2/token", "body": {"encoding": "utf-8", "string": "{\n \"access_token\" : \"<ACCESS_TOKEN>\",\n \"expires_in\" : 3600,\n \"token_type\" : \"Bearer\"\n}"}}, "recorded_at": "2017-01-06T09:31:43"}, {"request": {"headers": {"Content-Length": "0", "Authorization": "Bearer <ACCESS_TOKEN>", "Connection": "keep-alive", "x-goog-api-version": "2", "publishTarget": "trustedTesters", "Accept": "*/*", "Accept-Encoding": "identity", "User-Agent": "python-requests/2.12.2"}, "method": "POST", "uri": "https://www.googleapis.com/chromewebstore/v1.1/items/<APP_ID>/publish?publishTarget=trustedTesters", "body": {"encoding": "utf-8", "string": ""}}, "response": {"headers": {"Transfer-Encoding": "chunked", "X-Frame-Options": "SAMEORIGIN", "Expires": "Mon, 01 Jan 1990 00:00:00 GMT", "Accept-Ranges": "none", "Server": "GSE", "Cache-Control": "no-cache, no-store, max-age=0, must-revalidate", "X-Content-Type-Options": "nosniff", "Pragma": "no-cache", "Date": "Fri, 06 Jan 2017 09:31:50 GMT", "Vary": "X-Origin", "X-XSS-Protection": "1; mode=block", "Alt-Svc": "quic=\":443\"; ma=2592000; v=\"35,34\"", "Content-Type": "application/json; charset=UTF-8"}, "status": {"message": "OK", "code": 200}, "url": "https://www.googleapis.com/chromewebstore/v1.1/items/<APP_ID>/publish?publishTarget=trustedTesters", "body": {"encoding": "UTF-8", "string": "{\"kind\":\"chromewebstore#item\",\"item_id\":\"<APP_ID>\",\"status\":[\"OK\"],\"statusDetail\":[\"OK.\"]}"}}, "recorded_at": "2017-01-06T09:31:50"}]}
1+
{"http_interactions": [{"recorded_at": "2018-02-26T14:50:24", "request": {"method": "POST", "body": {"encoding": "utf-8", "string": "redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&client_id=<CLIENT_ID>&refresh_token=<REFRESH_TOKEN>&client_secret=<CLIENT_SECRET>&grant_type=refresh_token"}, "uri": "https://www.googleapis.com/oauth2/v4/token", "headers": {"User-Agent": "python-requests/2.12.2", "Accept": "*/*", "Content-Type": "application/x-www-form-urlencoded", "Content-Length": "257", "Accept-Encoding": "identity", "Connection": "keep-alive"}}, "response": {"status": {"message": "OK", "code": 200}, "body": {"encoding": "UTF-8", "string": "{\n \"access_token\": \"<ACCESS_TOKEN>\",\n \"token_type\": \"Bearer\",\n \"expires_in\": 3600\n}\n"}, "url": "https://www.googleapis.com/oauth2/v4/token", "headers": {"X-Content-Type-Options": "nosniff", "Pragma": "no-cache", "Transfer-Encoding": "chunked", "Accept-Ranges": "none", "Vary": "X-Origin", "Expires": "Mon, 01 Jan 1990 00:00:00 GMT", "Content-Type": "application/json; charset=UTF-8", "X-Frame-Options": "SAMEORIGIN", "Server": "GSE", "Cache-Control": "no-cache, no-store, max-age=0, must-revalidate", "X-XSS-Protection": "1; mode=block", "Alt-Svc": "hq=\":443\"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=\":443\"; ma=2592000; v=\"41,39,38,37,35\"", "Date": "Mon, 26 Feb 2018 14:50:24 GMT"}}}, {"recorded_at": "2018-02-26T14:50:30", "request": {"method": "POST", "body": {"encoding": "utf-8", "string": ""}, "uri": "https://www.googleapis.com/chromewebstore/v1.1/items/<APP_ID>/publish?publishTarget=trustedTesters", "headers": {"User-Agent": "python-requests/2.12.2", "Accept": "*/*", "Authorization": "Bearer <ACCESS_TOKEN>", "publishTarget": "trustedTesters", "x-goog-api-version": "2", "Content-Length": "0", "Accept-Encoding": "identity", "Connection": "keep-alive"}}, "response": {"status": {"message": "OK", "code": 200}, "body": {"encoding": "UTF-8", "string": "{\"kind\":\"chromewebstore#item\",\"item_id\":\"<APP_ID>\",\"status\":[\"OK\"],\"statusDetail\":[\"OK.\"]}"}, "url": "https://www.googleapis.com/chromewebstore/v1.1/items/<APP_ID>/publish?publishTarget=trustedTesters", "headers": {"X-Content-Type-Options": "nosniff", "Pragma": "no-cache", "Transfer-Encoding": "chunked", "Accept-Ranges": "none", "Vary": "X-Origin", "Expires": "Mon, 01 Jan 1990 00:00:00 GMT", "Content-Type": "application/json; charset=UTF-8", "X-Frame-Options": "SAMEORIGIN", "Server": "GSE", "Cache-Control": "no-cache, no-store, max-age=0, must-revalidate", "X-XSS-Protection": "1; mode=block", "Alt-Svc": "hq=\":443\"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=\":443\"; ma=2592000; v=\"41,39,38,37,35\"", "Date": "Mon, 26 Feb 2018 14:50:30 GMT"}}}], "recorded_with": "betamax/0.8.0"}

0 commit comments

Comments
 (0)