]>
nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/commands/GetUserStatusCommand.java
1 package org
. asamk
. signal
. commands
;
3 import net
. sourceforge
. argparse4j
. impl
. Arguments
;
4 import net
. sourceforge
. argparse4j
. inf
. Namespace
;
5 import net
. sourceforge
. argparse4j
. inf
. Subparser
;
7 import org
. asamk
. signal
. JsonWriter
;
8 import org
. asamk
. signal
. OutputType
;
9 import org
. asamk
. signal
. PlainTextWriterImpl
;
10 import org
. asamk
. signal
. manager
. Manager
;
11 import org
. slf4j
. Logger
;
12 import org
. slf4j
. LoggerFactory
;
14 import java
. io
. IOException
;
15 import java
. util
. HashSet
;
18 import java
. util
. stream
. Collectors
;
20 public class GetUserStatusCommand
implements LocalCommand
{
22 private final static Logger logger
= LoggerFactory
. getLogger ( GetUserStatusCommand
. class );
25 public void attachToSubparser ( final Subparser subparser
) {
26 subparser
. addArgument ( "number" ). help ( "Phone number" ). nargs ( "+" );
27 subparser
. help ( "Check if the specified phone number/s have been registered" );
28 subparser
. addArgument ( "--json" )
29 . help ( "WARNING: This parameter is now deprecated! Please use the global \" --output=json \" option instead. \n\n Output received messages in json format, one json object per line." )
30 . action ( Arguments
. storeTrue ());
34 public Set
< OutputType
> getSupportedOutputTypes () {
35 return Set
. of ( OutputType
. PLAIN_TEXT
, OutputType
. JSON
);
39 public int handleCommand ( final Namespace ns
, final Manager m
) {
40 // Setup the json object mapper
41 var inJson
= ns
. get ( "output" ) == OutputType
. JSON
|| ns
. getBoolean ( "json" );
43 // TODO delete later when "json" variable is removed
44 if ( ns
. getBoolean ( "json" )) {
45 logger
. warn ( " \" --json \" option has been deprecated, please use the global \" --output=json \" instead." );
48 // Get a map of registration statuses
49 Map
< String
, Boolean
> registered
;
51 registered
= m
. areUsersRegistered ( new HashSet
<>( ns
. getList ( "number" )));
52 } catch ( IOException e
) {
53 System
. err
. println ( "Unable to check if users are registered" );
59 final var jsonWriter
= new JsonWriter ( System
. out
);
61 var jsonUserStatuses
= registered
. entrySet ()
63 . map ( entry
-> new JsonUserStatus ( entry
. getKey (), entry
. getValue ()))
64 . collect ( Collectors
. toList ());
67 jsonWriter
. write ( jsonUserStatuses
);
68 } catch ( IOException e
) {
69 logger
. error ( "Failed to write json object: {}" , e
. getMessage ());
73 final var writer
= new PlainTextWriterImpl ( System
. out
);
76 for ( var entry
: registered
. entrySet ()) {
77 writer
. println ( "{}: {}" , entry
. getKey (), entry
. getValue ());
79 } catch ( IOException e
) {
88 private static final class JsonUserStatus
{
92 public boolean isRegistered
;
94 public JsonUserStatus ( String name
, boolean isRegistered
) {
96 this . isRegistered
= isRegistered
;