gc_rsa 1.3.4 → 1.3.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gc_rsa",
3
- "version": "1.3.4",
3
+ "version": "1.3.5",
4
4
  "main": "src/index.js",
5
5
  "license": "MIT",
6
6
  "scripts": {
package/src/lib/obj.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { mapKeys, isEmpty, includes } from "lodash-es";
2
+ import { stringify } from "qs"
2
3
 
3
4
  export const concat = obj => {
4
5
  let str = "";
@@ -18,5 +19,11 @@ export const concatURL = (pathname, query) => {
18
19
  return isEmpty(query)
19
20
  ? pathname
20
21
  : (includes(pathname, "?") ? pathname : pathname + "?") +
21
- query.substring(1);
22
+ query.substring(1);
22
23
  };
24
+
25
+ export const buildUrl = (pathname, params) => {
26
+ return isEmpty(params)
27
+ ? pathname
28
+ : `${pathname}?${stringify(params)}`;
29
+ }
@@ -1,17 +1,20 @@
1
1
  // import stringify from "qs/lib/stringify";
2
- import { concat, concatURL } from "./obj";
2
+ import { concat, concatURL, buildUrl } from "./obj";
3
3
  import parse from "qs/lib/parse";
4
- import { isObject, isString, isEmpty, now, random } from "lodash-es";
4
+ import { isObject, isString, isEmpty, now, random, get } from "lodash-es";
5
5
  import { parse as urlParseLib } from "url";
6
6
  import crypto from "./crypto";
7
7
  import sort from "./sort";
8
8
  import transformHeaders from "./transformHeaders";
9
9
 
10
10
  const FormHeader = "application/x-www-form-urlencoded";
11
- const signature = (request, { appkey, appsecret, engineType }) => {
11
+ const signature = (request, { appkey, appsecret, originQuery }) => {
12
12
  try {
13
13
  if (appkey && appsecret) {
14
- const { method, headers, url } = request;
14
+ const { method, url: originUrl } = request;
15
+ let url = originQuery ? buildUrl(originUrl, originQuery) : originUrl
16
+ let headers = get(request, "headers") || get(request, "header")
17
+
15
18
  const { Accept } = headers;
16
19
  const urlParsed = urlParseLib(url, true),
17
20
  queryObject = urlParsed.query;
@@ -26,20 +29,15 @@ const signature = (request, { appkey, appsecret, engineType }) => {
26
29
  if (!headers["Accept"]) {
27
30
  headers["Accept"] = "*/*";
28
31
  }
29
- //如果不是Form提交 对content签名
32
+ // 只有当 Body 非 Form 表单时才计算 MD5
30
33
  if (request.body && headers["Content-Type"].indexOf(FormHeader) === -1) {
31
34
  contentMD5 = crypto.md5Content(request.body);
32
35
  headers["Content-MD5"] = contentMD5;
33
36
  } else {
34
- //如果是Form表单提交
35
37
  let formObject = request.body;
36
- let obj;
37
- if (isObject(formObject)) {
38
- obj = sort(formObject);
39
- }
38
+
40
39
  if (isString(formObject)) {
41
40
  const obj = parse(formObject);
42
- console.log("objobj", obj);
43
41
  if (isEmpty(query)) {
44
42
  query = obj;
45
43
  } else {
@@ -55,11 +53,9 @@ const signature = (request, { appkey, appsecret, engineType }) => {
55
53
  headers["X-Gw-Key"] = appkey;
56
54
  headers["X-Gw-Timestamp"] = now();
57
55
  headers["X-Gw-Nonce"] = random(1000000000000, 9999999999999);
58
- const stringToSign = `${method}\n${
59
- Accept ? Accept : "*/*"
60
- }\n${contentMD5}\n${ContentType}\n\n${
61
- transformHeaders(headers).transformHeader
62
- }${decodeURIComponent(urlPath)}`;
56
+ const stringToSign = `${method}\n${Accept ? Accept : "*/*"
57
+ }\n${contentMD5}\n${ContentType}\n\n${transformHeaders(headers).transformHeader
58
+ }${decodeURIComponent(urlPath)}`;
63
59
  console.log("==============", urlPath, "======================");
64
60
  console.log(stringToSign);
65
61
  console.log("==============", urlPath, "======================");