Show QR code into the console
This commit is contained in:
parent
1cba9f7e38
commit
88ca5ce8ac
@ -25,7 +25,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>it.tdlight</groupId>
|
<groupId>it.tdlight</groupId>
|
||||||
<artifactId>tdlight-java</artifactId>
|
<artifactId>tdlight-java</artifactId>
|
||||||
<version>2.7.8.3</version>
|
<version>2.7.8.6</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- TDLight natives -->
|
<!-- TDLight natives -->
|
||||||
|
38
src/main/java/it/tdlight/client/QrCodeTerminal.java
Normal file
38
src/main/java/it/tdlight/client/QrCodeTerminal.java
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
package it.tdlight.client;
|
||||||
|
|
||||||
|
import com.google.zxing.BarcodeFormat;
|
||||||
|
import com.google.zxing.EncodeHintType;
|
||||||
|
import com.google.zxing.MultiFormatWriter;
|
||||||
|
import com.google.zxing.WriterException;
|
||||||
|
import com.google.zxing.common.BitMatrix;
|
||||||
|
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
|
||||||
|
import java.util.Hashtable;
|
||||||
|
|
||||||
|
class QrCodeTerminal {
|
||||||
|
|
||||||
|
public static String getQr(String url) {
|
||||||
|
int width = 40;
|
||||||
|
int height = 40;
|
||||||
|
Hashtable<EncodeHintType, Object> qrParam = new Hashtable<>();
|
||||||
|
qrParam.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
|
||||||
|
qrParam.put(EncodeHintType.CHARACTER_SET, "utf-8");
|
||||||
|
try {
|
||||||
|
BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, width, height, qrParam);
|
||||||
|
return toAscii(bitMatrix);
|
||||||
|
} catch (WriterException ex) {
|
||||||
|
throw new IllegalStateException("Can't encode QR code", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String toAscii(BitMatrix bitMatrix) {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (int rows = 0; rows < bitMatrix.getHeight(); rows++) {
|
||||||
|
for (int cols = 0; cols < bitMatrix.getWidth(); cols++) {
|
||||||
|
boolean x = bitMatrix.get(rows, cols);
|
||||||
|
sb.append(x ? " " : "██");
|
||||||
|
}
|
||||||
|
sb.append("\n");
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -62,8 +62,11 @@ final class ScannerClientInteraction implements ClientInteraction {
|
|||||||
System.out.println(passwordMessage);
|
System.out.println(passwordMessage);
|
||||||
break;
|
break;
|
||||||
case NOTIFY_LINK:
|
case NOTIFY_LINK:
|
||||||
System.out.println("Please confirm this login link on another device: "
|
String link = ((ParameterInfoNotifyLink) parameterInfo).getLink();
|
||||||
+ ((ParameterInfoNotifyLink) parameterInfo).getLink());
|
System.out.println("Please confirm this login link on another device: " + link);
|
||||||
|
System.out.println();
|
||||||
|
System.out.println(QrCodeTerminal.getQr(link));
|
||||||
|
System.out.println();
|
||||||
return "";
|
return "";
|
||||||
case TERMS_OF_SERVICE:
|
case TERMS_OF_SERVICE:
|
||||||
TermsOfService tos = ((ParameterInfoTermsOfService) parameterInfo).getTermsOfService();
|
TermsOfService tos = ((ParameterInfoTermsOfService) parameterInfo).getTermsOfService();
|
||||||
|
@ -3,6 +3,7 @@ module tdlight.java {
|
|||||||
requires org.reactivestreams;
|
requires org.reactivestreams;
|
||||||
requires org.slf4j;
|
requires org.slf4j;
|
||||||
requires it.unimi.dsi.fastutil;
|
requires it.unimi.dsi.fastutil;
|
||||||
|
requires com.google.zxing;
|
||||||
exports it.tdlight.tdlight;
|
exports it.tdlight.tdlight;
|
||||||
exports it.tdlight.tdnative;
|
exports it.tdlight.tdnative;
|
||||||
exports it.tdlight.tdlib;
|
exports it.tdlight.tdlib;
|
||||||
|
@ -68,6 +68,10 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.harawata</groupId>
|
<groupId>net.harawata</groupId>
|
||||||
<artifactId>appdirs</artifactId>
|
<artifactId>appdirs</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.zxing</groupId>
|
||||||
|
<artifactId>core</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
@ -81,6 +85,11 @@
|
|||||||
<groupId>net.harawata</groupId>
|
<groupId>net.harawata</groupId>
|
||||||
<artifactId>appdirs</artifactId>
|
<artifactId>appdirs</artifactId>
|
||||||
<version>1.2.1</version>
|
<version>1.2.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.zxing</groupId>
|
||||||
|
<artifactId>core</artifactId>
|
||||||
|
<version>3.4.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
@ -69,7 +69,11 @@
|
|||||||
<groupId>net.harawata</groupId>
|
<groupId>net.harawata</groupId>
|
||||||
<artifactId>appdirs</artifactId>
|
<artifactId>appdirs</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
<dependency>
|
||||||
|
<groupId>com.google.zxing</groupId>
|
||||||
|
<artifactId>core</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -81,6 +85,11 @@
|
|||||||
<groupId>net.harawata</groupId>
|
<groupId>net.harawata</groupId>
|
||||||
<artifactId>appdirs</artifactId>
|
<artifactId>appdirs</artifactId>
|
||||||
<version>1.2.1</version>
|
<version>1.2.1</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.zxing</groupId>
|
||||||
|
<artifactId>core</artifactId>
|
||||||
|
<version>3.4.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</dependencyManagement>
|
</dependencyManagement>
|
||||||
|
Loading…
Reference in New Issue
Block a user