]>
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
. manager
. Manager
;
10 import org
. slf4j
. Logger
;
11 import org
. slf4j
. LoggerFactory
;
13 import java
. io
. IOException
;
14 import java
. util
. HashSet
;
17 import java
. util
. stream
. Collectors
;
19 public class GetUserStatusCommand
implements LocalCommand
{
21 private final static Logger logger
= LoggerFactory
. getLogger ( GetUserStatusCommand
. class );
24 public void attachToSubparser ( final Subparser subparser
) {
25 subparser
. addArgument ( "number" ). help ( "Phone number" ). nargs ( "+" );
26 subparser
. help ( "Check if the specified phone number/s have been registered" );
27 subparser
. addArgument ( "--json" )
28 . 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." )
29 . action ( Arguments
. storeTrue ());
33 public Set
< OutputType
> getSupportedOutputTypes () {
34 return Set
. of ( OutputType
. PLAIN_TEXT
, OutputType
. JSON
);
38 public int handleCommand ( final Namespace ns
, final Manager m
) {
39 // Setup the json object mapper
40 var inJson
= ns
. get ( "output" ) == OutputType
. JSON
|| ns
. getBoolean ( "json" );
42 // TODO delete later when "json" variable is removed
43 if ( ns
. getBoolean ( "json" )) {
44 logger
. warn ( " \" --json \" option has been deprecated, please use the global \" --output=json \" instead." );
47 // Get a map of registration statuses
48 Map
< String
, Boolean
> registered
;
50 registered
= m
. areUsersRegistered ( new HashSet
<>( ns
. getList ( "number" )));
51 } catch ( IOException e
) {
52 System
. err
. println ( "Unable to check if users are registered" );
58 final var jsonWriter
= new JsonWriter ( System
. out
);
60 var jsonUserStatuses
= registered
. entrySet ()
62 . map ( entry
-> new JsonUserStatus ( entry
. getKey (), entry
. getValue ()))
63 . collect ( Collectors
. toList ());
66 jsonWriter
. write ( jsonUserStatuses
);
67 } catch ( IOException e
) {
68 logger
. error ( "Failed to write json object: {}" , e
. getMessage ());
72 for ( var entry
: registered
. entrySet ()) {
73 System
. out
. println ( entry
. getKey () + ": " + entry
. getValue ());
80 private static final class JsonUserStatus
{
84 public boolean isRegistered
;
86 public JsonUserStatus ( String name
, boolean isRegistered
) {
88 this . isRegistered
= isRegistered
;