Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Quidchat #30

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
## 0.0.6+8
### Updates
[UPDATE] dependencies.

## 0.0.6+7
### Updates
[FIXED] fixed bug in AliasDTO

## 0.0.6+6
### Updates
[UPDATE] Homepage URL.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Add this to your package's pubspec.yaml file:

```dart
dependencies:
xpx_chain_sdk: 0.0.6+6
xpx_chain_sdk: 0.0.6+7
```

**2. Install it**
Expand Down
58 changes: 58 additions & 0 deletions example/example_namespace.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import 'package:xpx_chain_sdk/xpx_sdk.dart';

/// Simple Namespace API request
void main() async {
const baseUrl = 'http://bctestnet1.brimstone.xpxsirius.io:3000';

const networkType = publicTest;

/// Creating a client instance
/// xpx_chain_sdk uses the Dart's native HttpClient.
/// Depending on the platform, you may want to use either
/// the one which comes from dart:io or the BrowserClient
/// example:
/// 1- import 'package:http/browser_client.dart';
/// 2- var client = newClient(config, BrowserClient());
final client = SiriusClient.fromUrl(baseUrl, null);

final nsId = NamespaceId.fromName('prx');

/// Generate Id from namespaceName
try {
final result = await client.namespace.getNamespace(nsId);
print(result);
} on Exception catch (e) {
print('Exception when calling Namespace->GetNamespace: $e\n');
}
print('\n');

/// Returns friendly names for mosaics.
try {
final result = await client.namespace.getNamespacesNames([nsId]);
print(result);
} on Exception catch (e) {
print('Exception when calling Namespace->GetNamespacesNames: $e\n');
}

final address =
Address.fromPublicKey('A1574ADBE3CD7A065192275344062C92AC82197E811DCC372612702B33477AFB', networkType);

print(address);

/// Gets an list of namespaces for a given account address.
try {
final result = await client.namespace.getNamespacesFromAccount(address);
print(result);
} on Exception catch (e) {
print('Exception when calling Namespace->GetNamespacesFromAccount: $e\n');
}
print('\n');

/// Gets namespaces for a given array of addresses.
try {
final result = await client.namespace.getNamespacesFromAccounts([address]);
print(result);
} on Exception catch (e) {
print('Exception when calling Namespace->GetNamespacesFromAccounts: $e\n');
}
}
4 changes: 2 additions & 2 deletions lib/src/api/api_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -211,13 +211,13 @@ class _ApiClient {
final ps = queryParams.where((p) => p.value != null).map((p) => '${p.name}=${p.value}');
final String queryString = ps.isNotEmpty ? '?${ps.join('&')}' : '';

final String url = baseUrl + path + queryString;
final Uri url = Uri.parse(baseUrl + path + queryString);

headerParams.addAll(_defaultHeaderMap);
headerParams['Content-Type'] = contentType;

if (body is http.MultipartRequest) {
final request = http.MultipartRequest(method, Uri.parse(url));
final request = http.MultipartRequest(method, url);
request.fields.addAll(body.fields);
request.files.addAll(body.files);
request.headers.addAll(body.headers);
Expand Down
2 changes: 1 addition & 1 deletion lib/src/model/alias/alias_dto.dart
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class AddressAliasTransactionInfoDTO {

class AliasDTO {
AliasDTO.fromJson(Map<String, dynamic> json) : assert(json != null, 'json must not be null') {
aliasAction = json['aliasAction'];
aliasAction = json['type'];
mosaicId = UInt64DTO.fromJson(json['mosaicId']);
address = json['address'];
}
Expand Down
40 changes: 12 additions & 28 deletions lib/src/model/alias/alias_model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,25 @@ extension AliasActionTypeToInt on AliasActionType {
}

class Alias {
Alias({this.type, this.address, this.mosaicId});
Alias.fromDTO(AliasDTO dto) : assert(dto != null, 'dto must not be null') {
if (dto.address != null) address = Address.fromEncoded(dto.address);
if (dto.mosaicId != null) mosaicId = MosaicId.fromId(dto.mosaicId.toUint64());
if (dto.aliasAction == 1)
type = AliasType.mosaicAliasType;
else
type = AliasType.addressAliasType;
}

final AliasType type;
AliasType type;

final Address address;
Address address;

final MosaicId mosaicId;
MosaicId mosaicId;

@override
String toString() {
final sb = StringBuffer()..write('{');
if (type != null) {
sb.write('aliasAction: $type,');
}
sb.write('type: ${type.index}, ');
if (mosaicId != null) {
sb.write('mosaicId: $mosaicId');
}
Expand All @@ -50,24 +55,3 @@ class Alias {
return data;
}
}

class AddressAlias implements Alias {
AddressAlias(this.address);

@override
final Address address;

@override
MosaicId get mosaicId => null;

@override
Map<String, dynamic> toJson() {
final data = <String, dynamic>{};
data['aliasAction'] = type.toInt;
data['address'] = address;
return data;
}

@override
AliasType get type => AliasType.addressAliasType;
}
1 change: 1 addition & 0 deletions lib/src/model/namespace.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ library xpx_chain_sdk.namespace;
import 'dart:typed_data';

import 'package:fixnum/fixnum.dart';
import 'package:xpx_chain_sdk/src/model.dart';
import 'package:xpx_chain_sdk/src/model/account.dart';
import 'package:xpx_chain_sdk/src/model/alias.dart';
import 'package:xpx_chain_sdk/src/model/transaction.dart';
Expand Down
45 changes: 26 additions & 19 deletions lib/src/model/namespace/namespace_model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ class NamespaceId extends AssetId {
bool operator ==(final other) =>
identical(this, other) ||
other is NamespaceId && runtimeType == other.runtimeType && toBytes() == other.toBytes();

@override
String toString() => 'NamespaceId: ${toHex()}';
}

class NamespaceName {
Expand All @@ -58,7 +61,7 @@ class NamespaceName {
if (parentId != null) {
sb.writeln('\tparentId: ${parentId.toHex()},');
}
sb.writeln('\tnamespaceId: ${namespaceId.toHex()},');
sb.writeln('\tnamespaceId: $namespaceId,');
sb.writeln('\tname: $name,');
sb.writeln('\n{');
return sb.toString();
Expand Down Expand Up @@ -97,8 +100,7 @@ class NamespaceInfo {
levels = extractLevels(dto);
typeSpace = dto._namespace.type;

alias =
dto._namespace.alias.address != null ? Alias(address: Address.fromEncoded(dto._namespace.alias.address)) : null;
alias = Alias.fromDTO(dto._namespace.alias);
if (dto._namespace.parentId.toUint64().toInt() != 0) {
namespaceId = NamespaceId._(levels[0]);
parent = NamespaceInfo()..namespaceId = NamespaceId._(dto._namespace.parentId.toUint64());
Expand Down Expand Up @@ -134,20 +136,25 @@ class NamespaceInfo {
Alias alias;

@override
String toString() => '{\n'
'\tnamespaceId: $namespaceId,\n'
'\tactive: $active,\n'
'\tindex: $index,\n'
'\tmetaId: $metaId,\n'
'\ttypeSpace: $typeSpace,\n'
'\tdepth: $depth,\n'
'\tlevels: $levels,\n'
'\tparent: $parent,\n'
'\talias: $alias,\n'
'\towner:$owner,\n'
'\tstartHeight: $startHeight,\n'
'\tendHeight: $endHeight\n'
'}\n';
String toString() {
final sb = StringBuffer()..writeln('\n{');
sb.writeln('\tnamespaceId: $namespaceId,');
sb.writeln('\tactive: $active,');
sb.writeln('\tindex: $index,');
if (typeSpace == 0)
sb.writeln('\ttypeSpace: "Root",');
else
sb.writeln('\ttypeSpace: "Sub",');
sb.writeln('\tdepth: $depth,');
if (alias != null) sb.writeln('\talias: $alias,');
sb.writeln('\tlevels: ${levels.map((element) => element.toHex()).toList()},');
if (parent != null) sb.writeln('\tparent: $parent,');
sb.writeln('\towner: $owner,');
sb.writeln('\tstartHeight: $startHeight,');
sb.writeln('\tendHeight: $endHeight');
sb.writeln('}\n');
return sb.toString();
}

static List<NamespaceInfo> listFromDTO(List<dynamic> json) =>
json == null ? null : json.map((value) => NamespaceInfo.fromDTO(value)).toList();
Expand All @@ -162,11 +169,11 @@ class NamespaceInfo {
data['typeSpace'] = typeSpace;
data['depth'] = depth;
data['levels'] = levels;
data['parent'] = parent;
if (parent != null) data['parent'] = parent;
data['owner'] = owner;
data['startHeight'] = startHeight;
data['endHeight'] = endHeight;
data['alias'] = alias;
if (alias != null) data['alias'] = alias;

return data;
}
Expand Down
11 changes: 8 additions & 3 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: xpx_chain_sdk
version: 0.0.6+6
version: 0.0.6+8
#author: 'Eleazar Garrido <[email protected]>'

description: 'The ProximaX Sirius Chain Dart SDK works as a lightweight Dart library for interacting with the Sirius Blockchain.'
Expand All @@ -15,9 +15,14 @@ environment:
dependencies:
http: '^0.12.0'
base32: '^1.0.1'
fixnum: '^0.10.9'
# fixnum: '^1.0.0'
convert: '^2.1.1'
xpx_crypto: '^0.0.3+7'

xpx_crypto:
# path: '../dart-xpx-crypto'
git:
url: https://github.com/proximax-storage/dart-xpx-crypto
ref: "silo_dev"

flat_buffers: '^1.11.0'

Expand Down