]>
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
. commands
. exceptions
. CommandException
;
11 import org
. asamk
. signal
. commands
. exceptions
. IOErrorException
;
12 import org
. asamk
. signal
. manager
. Manager
;
13 import org
. slf4j
. Logger
;
14 import org
. slf4j
. LoggerFactory
;
16 import java
. io
. IOException
;
17 import java
. util
. HashSet
;
20 import java
. util
. stream
. Collectors
;
22 public class GetUserStatusCommand
implements LocalCommand
{
24 private final static Logger logger
= LoggerFactory
. getLogger ( GetUserStatusCommand
. class );
27 public void attachToSubparser ( final Subparser subparser
) {
28 subparser
. help ( "Check if the specified phone number/s have been registered" );
29 subparser
. addArgument ( "number" ). help ( "Phone number" ). nargs ( "+" );
30 subparser
. addArgument ( "--json" )
31 . 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." )
32 . action ( Arguments
. storeTrue ());
36 public Set
< OutputType
> getSupportedOutputTypes () {
37 return Set
. of ( OutputType
. PLAIN_TEXT
, OutputType
. JSON
);
41 public void handleCommand ( final Namespace ns
, final Manager m
) throws CommandException
{
42 // Setup the json object mapper
43 var inJson
= ns
. get ( "output" ) == OutputType
. JSON
|| ns
. getBoolean ( "json" );
45 // TODO delete later when "json" variable is removed
46 if ( ns
. getBoolean ( "json" )) {
47 logger
. warn ( " \" --json \" option has been deprecated, please use the global \" --output=json \" instead." );
50 // Get a map of registration statuses
51 Map
< String
, Boolean
> registered
;
53 registered
= m
. areUsersRegistered ( new HashSet
<>( ns
. getList ( "number" )));
54 } catch ( IOException e
) {
55 logger
. debug ( "Failed to check registered users" , e
);
56 throw new IOErrorException ( "Unable to check if users are registered" );
61 final var jsonWriter
= new JsonWriter ( System
. out
);
63 var jsonUserStatuses
= registered
. entrySet ()
65 . map ( entry
-> new JsonUserStatus ( entry
. getKey (), entry
. getValue ()))
66 . collect ( Collectors
. toList ());
68 jsonWriter
. write ( jsonUserStatuses
);
70 final var writer
= new PlainTextWriterImpl ( System
. out
);
72 for ( var entry
: registered
. entrySet ()) {
73 writer
. println ( "{}: {}" , entry
. getKey (), entry
. getValue ());
78 private static final class JsonUserStatus
{
82 public boolean isRegistered
;
84 public JsonUserStatus ( String name
, boolean isRegistered
) {
86 this . isRegistered
= isRegistered
;