@@ -289,111 +289,53 @@ -(NSString*)formatSigningInfo
289289 return prettyPrint;
290290}
291291
292- // convert object to JSON string
292+ // convert obj to JSON
293293-(NSString *)toJSON
294294{
295- // json string
296- NSString *json = nil ;
295+ NSData * jsonData = nil ;
296+ NSString * json = nil ;
297+ NSMutableDictionary * dict = [NSMutableDictionary dictionary ];
297298
298- // json data
299- // ->for intermediate conversions
300- NSData *jsonData = nil ;
301-
302- // plist
303- NSString * filePlist = nil ;
299+ // basic fields
300+ dict[@" name" ] = self.name ?: @" unknown" ;
301+ dict[@" path" ] = self.path ?: @" unknown" ;
302+ dict[@" plist" ] = self.plist ?: @" n/a" ;
304303
305304 // hashes
306- NSString * fileHashes = nil ;
305+ dict[ @" hashes " ] = self. hashes ?: @" unknown " ;
307306
308307 // signing info
309- NSString * fileSigs = nil ;
310-
311- // init file hash to default string
312- // ->used when hashes are nil, or serialization fails
313- fileHashes = @" \" unknown\" " ;
308+ dict[@" signature(s)" ] = self.signingInfo ?: @" unknown" ;
314309
315- // init file signature to default string
316- // ->used when signatures are nil, or serialization fails
317- fileSigs = @" \" unknown\" " ;
318-
319- // convert hashes to JSON
320- if (nil != self.hashes )
310+ // include VT?
311+ if ( [NSProcessInfo .processInfo.arguments containsObject: @" -key" ] &&
312+ ![NSProcessInfo .processInfo.arguments containsObject: @" -skipVT" ] )
321313 {
322- // convert hash dictionary
323- // ->wrap since we are serializing JSON
324- @try
325- {
326- // convert
327- jsonData = [NSJSONSerialization dataWithJSONObject: self .hashes options: kNilOptions error: NULL ];
328- if (nil != jsonData)
329- {
330- // convert data to string
331- fileHashes = [[NSString alloc ] initWithData: jsonData encoding: NSUTF8StringEncoding];
332- }
333- }
334- // ignore exceptions
335- // ->file hashes will just be 'unknown'
336- @catch (NSException *exception)
337- {
338- ;
339- }
314+ dict[@" VT detection" ] = [NSString stringWithFormat: @" %lu /%lu " ,
315+ (unsigned long )[self .vtInfo[VT_RESULTS_POSITIVES] unsignedIntegerValue ],
316+ (unsigned long )[self .vtInfo[VT_RESULTS_TOTAL] unsignedIntegerValue ]];
340317 }
341318
342- // convert signing dictionary to JSON
343- if ( nil != self. signingInfo )
319+ // serialize
320+ @try
344321 {
345- // convert signing dictionary
346- // ->wrap since we are serializing JSON
347- @try
348- {
349- // convert
350- jsonData = [NSJSONSerialization dataWithJSONObject: self .signingInfo options: kNilOptions error: NULL ];
351- if (nil != jsonData)
352- {
353- // convert data to string
354- fileSigs = [[NSString alloc ] initWithData: jsonData encoding: NSUTF8StringEncoding];
355- }
356- }
357- // ignore exceptions
358- // ->file sigs will just be 'unknown'
359- @catch (NSException *exception)
360- {
361- ;
322+ jsonData = [NSJSONSerialization dataWithJSONObject: dict options: kNilOptions error: NULL ];
323+ if (jsonData) {
324+ json = [[NSString alloc ] initWithData: jsonData encoding: NSUTF8StringEncoding];
362325 }
363326 }
364-
365- // provide a default string if the file doesn't have a plist
366- if (nil == self.plist )
367- {
368- // set
369- filePlist = @" n/a" ;
370- }
371- // use plist as is
372- else
373- {
374- // set
375- filePlist = self.plist ;
376- }
377-
378- // init json
379- json = [NSString stringWithFormat: @" \" name\" : \" %@ \" , \" path\" : \" %@ \" , \" plist\" : \" %@ \" , \" hashes\" : %@ , \" signature(s)\" : %@ " , self .name, self .path, filePlist, fileHashes, fileSigs];
380-
381- // include VT?
382- // append detection
383- if ( [NSProcessInfo .processInfo.arguments containsObject: @" -key" ] &&
384- ![NSProcessInfo .processInfo.arguments containsObject: @" -skipVT" ] )
327+ @catch (NSException * exception)
385328 {
386- // append VT detection
387- json = [json stringByAppendingFormat: @" , \" VT detection\" : \" %lu /%lu \" " , (unsigned long )[self .vtInfo[VT_RESULTS_POSITIVES] unsignedIntegerValue ], (unsigned long )[self .vtInfo[VT_RESULTS_TOTAL] unsignedIntegerValue ]];
329+ json = @" {\" error\" : \" serialization failed\" }" ;
388330 }
389331
390- return json;
332+ return json ?: @" { \" error \" : \" serialization failed \" } " ;
391333}
392334
393335// description
394336-(NSString *)description
395337{
396- return [NSString stringWithFormat: @" name: %@ , path: %@ , plist: %@ , hashes: %@ , signature(s): %@ , VT detection: %@ " , self .name, self .path, self .plist, self .hashes, self .signingInfo, self .vtInfo];;
338+ return [NSString stringWithFormat: @" name: %@ , path: %@ , plist: %@ , hashes: %@ , signature(s): %@ , VT detection: %@ " , self .name, self .path, self .plist, self .hashes, self .signingInfo, self .vtInfo];
397339}
398340
399341
0 commit comments