Skip to content

Commit

Permalink
add proxy client
Browse files Browse the repository at this point in the history
  • Loading branch information
AlaaElattar committed May 7, 2024
1 parent 1ed8edc commit fc70bf3
Show file tree
Hide file tree
Showing 11 changed files with 114 additions and 0 deletions.
3 changes: 3 additions & 0 deletions packages/gridproxy_client/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# https://dart.dev/guides/libraries/private-files
# Created by `dart pub`
.dart_tool/
3 changes: 3 additions & 0 deletions packages/gridproxy_client/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## 1.0.0

- Initial version.
2 changes: 2 additions & 0 deletions packages/gridproxy_client/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
A sample command-line application with an entrypoint in `bin/`, library code
in `lib/`, and example unit test in `test/`.
30 changes: 30 additions & 0 deletions packages/gridproxy_client/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# This file configures the static analysis results for your project (errors,
# warnings, and lints).
#
# This enables the 'recommended' set of lints from `package:lints`.
# This set helps identify many issues that may lead to problems when running
# or consuming Dart code, and enforces writing Dart using a single, idiomatic
# style and format.
#
# If you want a smaller set of lints you can change this to specify
# 'package:lints/core.yaml'. These are just the most critical lints
# (the recommended set includes the core lints).
# The core lints are also what is used by pub.dev for scoring packages.

include: package:lints/recommended.yaml

# Uncomment the following section to specify additional rules.

# linter:
# rules:
# - camel_case_types

# analyzer:
# exclude:
# - path/to/excluded/files/**

# For more information about the core and recommended set of lints, see
# https://dart.dev/go/core-lints

# For additional information about configuring this file, see
# https://dart.dev/guides/language/analysis-options
7 changes: 7 additions & 0 deletions packages/gridproxy_client/bin/gridproxy_client.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import 'package:gridproxy_client/gridproxy_client.dart';
import 'package:gridproxy_client/models/nodes.dart';

void main() async {
GridProxyClient client = GridProxyClient('https://gridproxy.dev.grid.tf');
await client.nodes.getNodeStatus(GetNodeStatusOptions(nodeID: 72));
}
8 changes: 8 additions & 0 deletions packages/gridproxy_client/lib/gridproxy_client.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
library client;

import 'dart:convert';
import 'package:gridproxy_client/src/nodes.dart';
import 'package:http/http.dart' as http;


part 'src/client.dart';
7 changes: 7 additions & 0 deletions packages/gridproxy_client/lib/models/nodes.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class GetNodeStatusOptions {
int nodeID;

GetNodeStatusOptions({
required this.nodeID,
});
}
25 changes: 25 additions & 0 deletions packages/gridproxy_client/lib/src/client.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
part of '../gridproxy_client.dart';

class GridProxyClient {
final String baseUrl;
late final Nodes nodes;

GridProxyClient(this.baseUrl) {
nodes = Nodes(this);
}

Future<dynamic> getRequest(String path) async {
try {
final response = await http.get(Uri.parse('$baseUrl$path'));

if (response.statusCode == 200) {
final jsonData = json.decode(response.body);
return jsonData;
} else {
throw Exception('Failed to load data');
}
} catch (e) {
throw Exception('Error: $e');
}
}
}
13 changes: 13 additions & 0 deletions packages/gridproxy_client/lib/src/nodes.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import 'package:gridproxy_client/gridproxy_client.dart';
import 'package:gridproxy_client/models/nodes.dart';

class Nodes {
final GridProxyClient client;

Nodes(this.client);

Future<void> getNodeStatus(GetNodeStatusOptions options) async {
final nodeStatus = await client.getRequest('/nodes/72/status');
print(nodeStatus['status']);
}
}
16 changes: 16 additions & 0 deletions packages/gridproxy_client/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: gridproxy_client
description: A sample command-line application.
version: 1.0.0
# repository: https://github.com/my_org/my_repo

environment:
sdk: ^3.3.3

# Add regular dependencies here.
dependencies:
http: ^1.2.1
# path: ^1.8.0

dev_dependencies:
lints: ^3.0.0
test: ^1.24.0
Empty file.

0 comments on commit fc70bf3

Please sign in to comment.