File tree Expand file tree Collapse file tree 2 files changed +40
-1
lines changed Expand file tree Collapse file tree 2 files changed +40
-1
lines changed Original file line number Diff line number Diff line change 1
1
import { HTTPError } from 'ky'
2
2
import { resolveApiConfig } from '../request'
3
3
import { ApiClient } from '../api-client'
4
+ import { objectPick } from '../utils/objects'
4
5
import { isSuccess , throwRequestFailureError } from './utils/response'
5
6
import { resolveAreaCode } from './utils/user'
6
7
import { JikeUser } from './user'
@@ -235,13 +236,35 @@ export class JikeClient {
235
236
return JSON . stringify ( await this . toJSON ( ) , undefined , space )
236
237
}
237
238
239
+ /**
240
+ * 从 JSON 数据创建
241
+ * @param data 数据
242
+ */
243
+ static fromJSON ( data : JikeClientJSON ) : JikeClient {
244
+ return new JikeClient (
245
+ objectPick ( data , [
246
+ 'endpointId' ,
247
+ 'endpointUrl' ,
248
+ 'bundleId' ,
249
+ 'appVersion' ,
250
+ 'buildNo' ,
251
+ 'userAgent' ,
252
+ 'deviceId' ,
253
+ 'idfv' ,
254
+
255
+ 'accessToken' ,
256
+ 'refreshToken' ,
257
+ ] )
258
+ )
259
+ }
260
+
238
261
/**
239
262
* 反序列化
240
263
* @param data 数据
241
264
*/
242
265
static deserialize ( data : string ) : JikeClient {
243
266
const json : JikeClientJSON = JSON . parse ( data )
244
- return new JikeClient ( { ... json } )
267
+ return this . fromJSON ( json )
245
268
}
246
269
}
247
270
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Create a new subset object by giving keys
3
+ *
4
+ * @category Object
5
+ * @fork {@link https://github.com/antfu/utils/blob/main/src/object.ts#L113 }
6
+ */
7
+ export function objectPick < O , T extends keyof O > (
8
+ obj : O ,
9
+ keys : T [ ] ,
10
+ omitUndefined = false
11
+ ) {
12
+ return keys . reduce ( ( n , k ) => {
13
+ if ( k in obj && ( ! omitUndefined || obj [ k ] !== undefined ) ) n [ k ] = obj [ k ]
14
+ return n
15
+ } , { } as Pick < O , T > )
16
+ }
You can’t perform that action at this time.
0 commit comments