Skip to content

Instantly share code, notes, and snippets.

@samnang
Last active March 19, 2020 07:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save samnang/ad45122a7cdf50d5eebaba355f1126d4 to your computer and use it in GitHub Desktop.
Save samnang/ad45122a7cdf50d5eebaba355f1126d4 to your computer and use it in GitHub Desktop.
Bongloy Agent Network Code Snippits
require "net/http"
require "uri"
require "jwt"
jwt_payload = {
"api_token": "[your api token]",
"timestamp": Time.now.to_i
}
private_key = OpenSSL::PKey::RSA.new(File.read("private_key.pem"))
jwt = JWT.encode(jwt_payload, private_key, 'RS256')
uri = URI.parse("https://agent-network-sandbox.bongloy.com/v1/transfers")
request = Net::HTTP::Post.new(uri.request_uri)
request["Content-Type"] = "application/vnd.api+json"
request["Authorization"] = "Bearer #{jwt}"
request.body = File.read("payload.json")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
response = http.request(request)
p response.body
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse.BodyHandlers;
import java.nio.file.*;
import java.security.*;
import java.security.interfaces.RSAPrivateKey;
import java.security.spec.*;
import java.time.Instant;
import java.util.Base64;
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
class AgentNetworkApp {
public static void main(String[] args) throws Exception {
long unixTimestamp = Instant.now().getEpochSecond();
String payload = Files.readString(Paths.get("payload.json"));
Algorithm algorithm = Algorithm.RSA256(null, (RSAPrivateKey) getPrivateKey());
String token = JWT.create()
.withClaim("api_token", "[your api token]")
.withClaim("timestamp", unixTimestamp)
.sign(algorithm);
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://agent-network-sandbox.bongloy.com/v1/transfers"))
.header("Content-Type", "application/vnd.api+json")
.header("Authorization", "Bearer " + token)
.POST(BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
private static PrivateKey getPrivateKey() throws Exception {
String privateKeyContent = Files.readString(Paths.get("private_key.pem"));
privateKeyContent = privateKeyContent
.replaceAll("\\n", "")
.replace("-----BEGIN PRIVATE KEY-----", "")
.replace("-----END PRIVATE KEY-----", "");
PKCS8EncodedKeySpec keySpecPKCS8 = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKeyContent));
return KeyFactory.getInstance("RSA").generatePrivate(keySpecPKCS8);
}
}
{
"data": {
"type": "transfer",
"attributes": {
"amount": 10000,
"currency": "USD",
"destination_account_number": "002002965",
"metadata": {
"foobar": "foobar"
}
}
}
}
-----BEGIN PRIVATE KEY-----
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
8mFFhvnbdcVIui7wwxk4cyaTSedXzKQ=
-----END PRIVATE KEY-----
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment