Skip to content
Snippets Groups Projects
Commit 5e802426 authored by vjrj's avatar vjrj
Browse files

First v2 works. envied use

parent 2bad435a
No related branches found
No related tags found
No related merge requests found
// lib/env/env.dart
// ignore_for_file: avoid_classes_with_only_static_members
import 'package:envied/envied.dart';
import 'package:flutter/foundation.dart';
part 'env.g.dart';
@Envied(path: kReleaseMode ? '.env' : '.env.dev', allowOptionalFields: true)
abstract class Env {
@EnviedField(varName: 'CURRENCY')
static const String currency = _Env.currency;
@EnviedField(varName: 'SENTRY_DSN', obfuscate: true)
static final String? sentryDsn = _Env.sentryDsn;
@EnviedField(varName: 'GITLAB_TOKEN', obfuscate: true)
static final String gitLabToken = _Env.gitLabToken;
// Nodes
// v1
// @EnviedField(defaultValue: 'test_')
@EnviedField(varName: 'DUNITER_NODES')
static const String duniterNodes = _Env.duniterNodes;
@EnviedField(varName: 'CESIUM_PLUS_NODES')
static const String cesiumPlusNodes = _Env.cesiumPlusNodes;
@EnviedField(varName: 'GVA_NODES')
static const String gvaNodes = _Env.gvaNodes;
// v2
@EnviedField(varName: 'ENDPOINTS')
static const String endPoints = _Env.endPoints;
}
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'env.dart';
// **************************************************************************
// EnviedGenerator
// **************************************************************************
// coverage:ignore-file
// ignore_for_file: type=lint
final class _Env {
static const String currency = 'g1';
static const List<int> _enviedkeysentryDsn = <int>[
200271289,
3853299757,
287108020,
576680077,
3865571294,
588150570,
1088974894,
3323932897,
1683844751,
3139416939,
2121525008,
1971345953,
1088674386,
2216131141,
2206133945,
2497063502,
718537447,
616817305,
2450457417,
3075743221,
3459850159,
1075152594,
1129970435,
1140079130,
3980179363,
443052024,
2760731322,
176996108,
220265319,
1182281172,
3355338761,
980147574,
4230465661,
1398330458,
4049740450,
708449756,
521772679,
3300411179,
3984754181,
3317372762,
2706207692,
2229912853,
1753922129,
935756054,
2906195746,
1889056666,
864194104,
1148935166,
3981128709,
4027446070,
756827599,
151034948,
1968120052,
3500060273,
2396974716,
847756793,
688479154,
2983309035,
1375842159,
2650911002,
1162025921,
];
static const List<int> _envieddatasentryDsn = <int>[
200271313,
3853299801,
287108032,
576680189,
3865571245,
588150544,
1088974849,
3323932878,
1683844796,
3139416923,
2121525030,
1971345938,
1088674406,
2216131184,
2206133978,
2497063468,
718537439,
616817326,
2450457388,
3075743120,
3459850139,
1075152567,
1129970482,
1140079225,
3980179393,
443051930,
2760731359,
176996149,
220265303,
1182281190,
3355338810,
980147472,
4230465567,
1398330478,
4049740483,
708449722,
521772772,
3300411166,
3984754275,
3317372729,
2706207628,
2229912934,
1753922100,
935756152,
2906195798,
1889056744,
864194113,
1148935120,
3981128806,
4027446105,
756827554,
151034929,
1968119962,
3500060180,
2396974607,
847756759,
688479197,
2983308953,
1375842056,
2650911029,
1162025975,
];
static final String? sentryDsn = String.fromCharCodes(List<int>.generate(
_envieddatasentryDsn.length,
(int i) => i,
growable: false,
).map((int i) => _envieddatasentryDsn[i] ^ _enviedkeysentryDsn[i]));
static const List<int> _enviedkeygitLabToken = <int>[
1820632391,
2741614692,
1221080240,
3077052417,
1175689579,
1408005707,
2511761521,
3777920400,
1914320043,
1690394812,
2356598653,
1355401136,
186536105,
1096726632,
3734241214,
1916313220,
978141910,
4078787033,
4272166551,
3640101148,
];
static const List<int> _envieddatagitLabToken = <int>[
1820632383,
2741614606,
1221080264,
3077052505,
1175689535,
1408005693,
2511761474,
3777920458,
1914320121,
1690394822,
2356598582,
1355401155,
186536138,
1096726620,
3734241261,
1916313300,
978141826,
4078786967,
4272166563,
3640101231,
];
static final String gitLabToken = String.fromCharCodes(List<int>.generate(
_envieddatagitLabToken.length,
(int i) => i,
growable: false,
).map((int i) => _envieddatagitLabToken[i] ^ _enviedkeygitLabToken[i]));
static const String duniterNodes =
'https://g1.duniter.fr https://g1.le-sou.org https://g1.cgeek.fr https://g1.monnaielibreoccitanie.org https://g1.duniter.fr https://g1.le-sou.org https://g1.cgeek.fr';
static const String cesiumPlusNodes =
'https://g1.data.le-sou.org https://g1.data.e-is.pro https://g1.data.presles.fr https://g1.data.mithril.re https://g1.data.brussels.ovh https://g1.data.pini.fr';
static const String gvaNodes =
'https://g1v1.p2p.legal:443/gva https://g1.asycn.io:443/gva https://duniter.pini.fr:443/gva';
static const String endPoints =
'wss://gdev.komun.org/ws wss://1000i100.fr/ws wss://gdev.librelois.fr/ws wss://gdev.p2p.legal/ws wss://gdev.coinduf.eu/ws wss://vit.fdn.org/ws wss://gdev.cgeek.fr/ws wss://gdev.pini.fr/ws';
}
import 'dart:typed_data';
import 'package:polkadart_keyring/polkadart_keyring.dart';
Uint8List hexToU8a(String hexString) {
hexString = hexString.startsWith('0x') ? hexString.substring(2) : hexString;
if (hexString.length % 2 != 0) {
hexString = '0$hexString';
}
return Uint8List.fromList(List<int>.generate(hexString.length ~/ 2, (int i) {
return int.parse(hexString.substring(i * 2, i * 2 + 2), radix: 16);
}));
}
bool isHex(String value, [int bitLength = -1]) {
final RegExp hexRegEx = RegExp(r'^0x[a-fA-F0-9]+$');
return hexRegEx.hasMatch(value) &&
(bitLength == -1 || value.length == 2 + bitLength ~/ 4);
}
// From:
// https://polkadot.js.org/docs/util-crypto/examples/validate-address/
bool isValidV2Address(String address) {
try {
final Keyring keyring = Keyring();
keyring.encodeAddress(
isHex(address) ? hexToU8a(address) : keyring.decodeAddress(address));
return true;
} catch (error) {
return false;
}
}
import 'package:flutter_test/flutter_test.dart';
import 'package:ginkgo/g1/g1_v2_helper.dart';
void main() {
group('isValidAddress', () {
test('returns true for valid addresses', () {
final List<String> validAddresses = <String>[
'5GrpknVvGGrGH3EFuURXeMrWHvbpj3VfER1oX5jFtuGbfzCE',
'5FLdosNUhAJ4zW8NKp65yaXEECUwkuNqVRcmjTEsZ8vvkxuP'
];
for (final String address in validAddresses) {
expect(isValidV2Address(address), isTrue);
}
});
test('returns false for invalid addresses', () {
final List<String> invalidAddresses = <String>[
'1G9tTobcmjgjSg2CEGjmFqZBbB3LQ85PhpMXD7NfnKhhJd3',
'1KjvmrF1uVSaJvmjF1uVSaJF1uVSaJZ9QZ5',
'BrgsSYK3xUzDyztGBHmxq69gfNxBfe2UKpxG21oZUBr5'
];
for (final String address in invalidAddresses) {
expect(isValidV2Address(address), isFalse);
}
});
});
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment