gc_rsa 1.2.2 → 1.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/example/normal/package.json +1 -0
- package/example/normal/src/App.vue +11 -4
- package/example/normal/src/main.js +5 -4
- package/example/normal/vue.config.js +2 -5
- package/example/normal/yarn.lock +107 -2
- package/example/uni-app/.hbuilderx/launch.json +16 -0
- package/example/uni-app/package.json +1 -0
- package/example/uni-app/src/api/index.js +2 -2
- package/example/uni-app/src/main.js +2 -2
- package/example/uni-app/yarn.lock +50 -1
- package/libs/index.html +2 -14
- package/libs/main.js +1 -1
- package/package.json +10 -14
- package/webpack.config.js +18 -9
- package/yarn-error.log +3909 -0
- package/src/adapter/fetch.js +0 -9
- package/src/adapter/fly.js +0 -19
- package/src/adapter/index.js +0 -5
- package/src/adapter/uni.js +0 -23
- package/src/adapter/wx.js +0 -23
- package/src/index.js +0 -50
- package/src/lib/crypto.js +0 -18
- package/src/lib/signature.js +0 -77
- package/src/lib/sort.js +0 -17
- package/src/lib/transformHeaders.js +0 -42
package/src/adapter/fetch.js
DELETED
package/src/adapter/fly.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import fly from "flyio";
|
|
2
|
-
|
|
3
|
-
export default (request, responseCallback) => {
|
|
4
|
-
fly
|
|
5
|
-
.request(request.url, request.data, request)
|
|
6
|
-
.then(function(d) {
|
|
7
|
-
responseCallback({
|
|
8
|
-
statusCode: d.engine.status,
|
|
9
|
-
responseText: d.engine.responseText,
|
|
10
|
-
statusMessage: d.engine.statusText
|
|
11
|
-
});
|
|
12
|
-
})
|
|
13
|
-
.catch(function(err) {
|
|
14
|
-
responseCallback({
|
|
15
|
-
statusCode: err.status,
|
|
16
|
-
statusMessage: err.message
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
};
|
package/src/adapter/index.js
DELETED
package/src/adapter/uni.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export default (req, responseCallback) => {
|
|
2
|
-
uni.request({
|
|
3
|
-
method: req.method,
|
|
4
|
-
url: req.url,
|
|
5
|
-
header: req.headers,
|
|
6
|
-
dataType: req.dataType || "json",
|
|
7
|
-
data: req.body || {},
|
|
8
|
-
success(res) {
|
|
9
|
-
responseCallback({
|
|
10
|
-
statusCode: res.statusCode,
|
|
11
|
-
responseText: res.data,
|
|
12
|
-
headers: res.header,
|
|
13
|
-
statusMessage: res.errMsg
|
|
14
|
-
});
|
|
15
|
-
},
|
|
16
|
-
fail(res) {
|
|
17
|
-
responseCallback({
|
|
18
|
-
statusCode: res.statusCode || 0,
|
|
19
|
-
statusMessage: res.errMsg
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
};
|
package/src/adapter/wx.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export default (req, responseCallback) => {
|
|
2
|
-
wx.request({
|
|
3
|
-
method: req.method,
|
|
4
|
-
url: req.url,
|
|
5
|
-
header: req.headers,
|
|
6
|
-
dataType: req.dataType || "text",
|
|
7
|
-
data: req.body || {},
|
|
8
|
-
success(res) {
|
|
9
|
-
responseCallback({
|
|
10
|
-
statusCode: res.statusCode,
|
|
11
|
-
responseText: res.data,
|
|
12
|
-
headers: res.header,
|
|
13
|
-
statusMessage: res.errMsg
|
|
14
|
-
});
|
|
15
|
-
},
|
|
16
|
-
fail(res) {
|
|
17
|
-
responseCallback({
|
|
18
|
-
statusCode: res.statusCode || 0,
|
|
19
|
-
statusMessage: res.errMsg
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
};
|
package/src/index.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import fly from "flyio";
|
|
2
|
-
import EngineWrapper from "flyio/dist/npm/engine-wrapper";
|
|
3
|
-
import _ from "lodash";
|
|
4
|
-
import signature from "./lib/signature";
|
|
5
|
-
import adapter from "./adapter";
|
|
6
|
-
|
|
7
|
-
// 主函数
|
|
8
|
-
const rsa = (
|
|
9
|
-
options = {
|
|
10
|
-
appkey: "25396816",
|
|
11
|
-
appsecret: "ba09305bef13bf8c17ace9987c66326f",
|
|
12
|
-
engineType: "fly", //底层请求库
|
|
13
|
-
adapter: "fetch" //请求适配器
|
|
14
|
-
}
|
|
15
|
-
) => {
|
|
16
|
-
fly.engine = XMLHttpRequest;
|
|
17
|
-
|
|
18
|
-
var engine = EngineWrapper((request, responseCallback) => {
|
|
19
|
-
try {
|
|
20
|
-
let flag = false;
|
|
21
|
-
|
|
22
|
-
if (options.exclude) {
|
|
23
|
-
for (let index = 0; index < options.exclude.length; index++) {
|
|
24
|
-
const element = options.exclude[index];
|
|
25
|
-
if (request.url.indexOf(element) > -1) {
|
|
26
|
-
flag = true;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
const ad = `${options.adapter ? options.adapter : "fetch"}Adapter`;
|
|
31
|
-
adapter[ad](
|
|
32
|
-
flag || request.headers.noSign ? request : signature(request, options),
|
|
33
|
-
responseCallback
|
|
34
|
-
);
|
|
35
|
-
} catch (error) {
|
|
36
|
-
console.warn(error);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
//覆盖默认
|
|
40
|
-
if (options.engineType == "fly") {
|
|
41
|
-
fly.engine = engine;
|
|
42
|
-
} else {
|
|
43
|
-
XMLHttpRequest = engine;
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
if (typeof window !== "undefined") {
|
|
47
|
-
console.log("window");
|
|
48
|
-
window.gc_rsa = rsa;
|
|
49
|
-
}
|
|
50
|
-
export default rsa;
|
package/src/lib/crypto.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { createHmac, createHash } from "crypto-browserify";
|
|
2
|
-
import _ from "lodash";
|
|
3
|
-
|
|
4
|
-
const sign = (str, secret) => {
|
|
5
|
-
return createHmac("sha256", secret)
|
|
6
|
-
.update(str, "utf8")
|
|
7
|
-
.digest("base64");
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const md5Content = data => {
|
|
11
|
-
return !_.isEmpty(data)
|
|
12
|
-
? createHash("md5")
|
|
13
|
-
.update(data, "utf-8")
|
|
14
|
-
.digest("base64")
|
|
15
|
-
: "";
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
export default { sign, md5Content };
|
package/src/lib/signature.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import qs from "qs";
|
|
2
|
-
import _ from "lodash";
|
|
3
|
-
import urlTool from "url";
|
|
4
|
-
import crypto from "./crypto";
|
|
5
|
-
import sort from "./sort";
|
|
6
|
-
import transformHeaders from "./transformHeaders";
|
|
7
|
-
|
|
8
|
-
const FormHeader = "application/x-www-form-urlencoded";
|
|
9
|
-
const signature = (request, { appkey, appsecret, engineType }) => {
|
|
10
|
-
try {
|
|
11
|
-
if (appkey && appsecret) {
|
|
12
|
-
const { method, headers, url } = request;
|
|
13
|
-
const { Accept } = headers;
|
|
14
|
-
const urlParsed = urlTool.parse(url, true),
|
|
15
|
-
queryObject = urlParsed.query;
|
|
16
|
-
|
|
17
|
-
let contentMD5 = "",
|
|
18
|
-
query = qs.stringify(sort(queryObject), { strictNullHandling: true });
|
|
19
|
-
console.log("=============query=======================");
|
|
20
|
-
console.log(query);
|
|
21
|
-
console.log("====================================");
|
|
22
|
-
//如果没有content-type 默认加上application/json
|
|
23
|
-
if (!headers["Content-Type"]) {
|
|
24
|
-
headers["Content-Type"] = "application/json";
|
|
25
|
-
}
|
|
26
|
-
//如果没有 Accept 默认加上 */*
|
|
27
|
-
if (!headers["Accept"]) {
|
|
28
|
-
headers["Accept"] = "*/*";
|
|
29
|
-
}
|
|
30
|
-
//如果不是Form提交 对content签名
|
|
31
|
-
if (request.body && headers["Content-Type"].indexOf(FormHeader) === -1) {
|
|
32
|
-
contentMD5 = crypto.md5Content(request.body);
|
|
33
|
-
headers["Content-MD5"] = contentMD5;
|
|
34
|
-
} else {
|
|
35
|
-
//如果是Form表单提交
|
|
36
|
-
const formObject = request.body;
|
|
37
|
-
if (_.isObject(formObject)) {
|
|
38
|
-
_.map(formObject, (value, key) => {
|
|
39
|
-
queryObject[key] = value;
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
if (_.isString(formObject)) {
|
|
43
|
-
query += "&" + formObject;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
const urlPath = _.isEmpty(query)
|
|
47
|
-
? urlParsed.pathname
|
|
48
|
-
: urlParsed.pathname + "?" + query;
|
|
49
|
-
const ContentType = headers["Content-Type"]
|
|
50
|
-
? headers["Content-Type"]
|
|
51
|
-
: "";
|
|
52
|
-
headers["X-Gw-Key"] = appkey;
|
|
53
|
-
headers["X-Gw-Timestamp"] = _.now();
|
|
54
|
-
headers["X-Gw-Nonce"] = _.random(1000000000000, 9999999999999);
|
|
55
|
-
const stringToSign = `${method}\n${
|
|
56
|
-
Accept ? Accept : "*/*"
|
|
57
|
-
}\n${contentMD5}\n${ContentType}\n\n${
|
|
58
|
-
transformHeaders(headers).transformHeader
|
|
59
|
-
}${decodeURIComponent(urlPath)}`;
|
|
60
|
-
console.log("==============", urlPath, "======================");
|
|
61
|
-
console.log(stringToSign);
|
|
62
|
-
console.log("==============", urlPath, "======================");
|
|
63
|
-
headers["X-Gw-Signature"] = crypto.sign(stringToSign, appsecret);
|
|
64
|
-
headers["X-Gw-Signature-Headers"] = transformHeaders(
|
|
65
|
-
headers
|
|
66
|
-
).transformHeaderKeys;
|
|
67
|
-
|
|
68
|
-
return request;
|
|
69
|
-
} else {
|
|
70
|
-
console.warn("检查appkey和appsecret");
|
|
71
|
-
}
|
|
72
|
-
} catch (error) {
|
|
73
|
-
console.log("error", error);
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
export default signature;
|
package/src/lib/sort.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import _ from "lodash";
|
|
2
|
-
export default obj => {
|
|
3
|
-
const sortArr = _.sortBy(Object.keys(obj));
|
|
4
|
-
let returnObect = {};
|
|
5
|
-
_.map(sortArr, key => {
|
|
6
|
-
if (_.isEmpty(obj[key])) {
|
|
7
|
-
returnObect[key]=null
|
|
8
|
-
} else {
|
|
9
|
-
if (_.isArray(obj[key])) {
|
|
10
|
-
returnObect[key] = obj[key][0];
|
|
11
|
-
} else {
|
|
12
|
-
returnObect[key] = obj[key];
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
return returnObect;
|
|
17
|
-
};
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import _ from "lodash";
|
|
2
|
-
export default obj => {
|
|
3
|
-
//不加入签名 需要排除的数组
|
|
4
|
-
const excludes = [
|
|
5
|
-
"X-Gw-Signature",
|
|
6
|
-
"X-Gw-Signature-headers",
|
|
7
|
-
"Accept",
|
|
8
|
-
"Content-MD5",
|
|
9
|
-
"Content-Type",
|
|
10
|
-
"Date"
|
|
11
|
-
];
|
|
12
|
-
let transformHeader = "",
|
|
13
|
-
transformHeaderKeys = "",
|
|
14
|
-
first = true;
|
|
15
|
-
|
|
16
|
-
_.chain(obj)
|
|
17
|
-
.keys(obj)
|
|
18
|
-
.map(value => {
|
|
19
|
-
return (
|
|
20
|
-
//排除上面的已经存在的各种header
|
|
21
|
-
!_.includes(excludes, value) && {
|
|
22
|
-
value: obj[value],
|
|
23
|
-
key: _.toLower(value)
|
|
24
|
-
}
|
|
25
|
-
);
|
|
26
|
-
})
|
|
27
|
-
.compact()
|
|
28
|
-
.sortBy(value => {
|
|
29
|
-
return value.key;
|
|
30
|
-
})
|
|
31
|
-
.forEach(item => {
|
|
32
|
-
transformHeader += `${item["key"]}:${item["value"]}\n`;
|
|
33
|
-
if (first) {
|
|
34
|
-
transformHeaderKeys += item["key"];
|
|
35
|
-
} else {
|
|
36
|
-
transformHeaderKeys += "," + item["key"];
|
|
37
|
-
}
|
|
38
|
-
first = false;
|
|
39
|
-
})
|
|
40
|
-
.value();
|
|
41
|
-
return { transformHeader, transformHeaderKeys };
|
|
42
|
-
};
|