Skip to content

Commit

Permalink
Merge pull request #18 from DIG-Network/release/v0.0.1-alpha.18
Browse files Browse the repository at this point in the history
Release/v0.0.1 alpha.18
  • Loading branch information
MichaelTaylor3D authored Sep 16, 2024
2 parents cf452ea + ed310bb commit 8477abf
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 13 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@

All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.

### [0.0.1-alpha.18](https://github.com/DIG-Network/dig-chia-sdk/compare/v0.0.1-alpha.17...v0.0.1-alpha.18) (2024-09-16)


### Features

* add ssl to content server adapter ([6d45228](https://github.com/DIG-Network/dig-chia-sdk/commit/6d4522880b7d8e3ab1bf3c86f93d54007e5da220))

### [0.0.1-alpha.17](https://github.com/DIG-Network/dig-chia-sdk/compare/v0.0.1-alpha.16...v0.0.1-alpha.17) (2024-09-16)


Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@dignetwork/dig-sdk",
"version": "0.0.1-alpha.17",
"version": "0.0.1-alpha.18",
"description": "",
"type": "commonjs",
"main": "./dist/index.js",
Expand Down
35 changes: 25 additions & 10 deletions src/DigNetwork/ContentServer.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,31 @@
import fs from "fs";
import http from "http";
import { URL } from "url";
import { Readable } from "stream";
import { DataStore } from "../blockchain";
import { getOrCreateSSLCerts } from "../utils/ssl";

export class ContentServer {
private ipAddress: string;
private storeId: string;
private static readonly port = 80;
private static certPath: string;
private static keyPath: string;
private static readonly port = 4161;

constructor(ipAddress: string, storeId: string) {
this.ipAddress = ipAddress;
this.storeId = storeId;

if (!ContentServer.certPath || !ContentServer.keyPath) {
const { certPath, keyPath } = getOrCreateSSLCerts();
ContentServer.certPath = certPath;
ContentServer.keyPath = keyPath;
}
}

// Method to get the content of a specified key from the peer, with optional challenge query
public async getKey(key: string, rootHash: string, challengeHex?: string): Promise<string> {
// Construct the base URL
let url = `http://${this.ipAddress}/chia.${this.storeId}.${rootHash}/${key}`;
let url = `https://${this.ipAddress}/chia.${this.storeId}.${rootHash}/${key}`;

// If a challenge is provided, append it as a query parameter
if (challengeHex) {
Expand All @@ -43,33 +52,33 @@ export class ContentServer {

// Method to get the .well-known information
public async getWellKnown(): Promise<any> {
const url = `http://${this.ipAddress}/.well-known`;
const url = `https://${this.ipAddress}/.well-known`;
return this.fetchJson(url);
}

// Method to get the list of known stores
public async getKnownStores(): Promise<any> {
const url = `http://${this.ipAddress}/.well-known/stores`;
const url = `https://${this.ipAddress}/.well-known/stores`;
return this.fetchJson(url);
}

// Method to get the index of all stores
public async getStoresIndex(): Promise<any> {
const url = `http://${this.ipAddress}/`;
const url = `https://${this.ipAddress}/`;
return this.fetchJson(url);
}

// Method to get the index of keys in a store
public async getKeysIndex(): Promise<any> {
const url = `http://${this.ipAddress}/${this.storeId}`;
const url = `https://${this.ipAddress}/${this.storeId}`;
return this.fetchJson(url);
}

// Method to check if a specific key exists (HEAD request)
public async headKey(
key: string
): Promise<{ success: boolean; headers?: http.IncomingHttpHeaders }> {
const url = `http://${this.ipAddress}/${this.storeId}/${key}`;
const url = `https://${this.ipAddress}/${this.storeId}/${key}`;
return this.head(url); // Return the object from head method
}

Expand All @@ -78,14 +87,14 @@ export class ContentServer {
success: boolean;
headers?: http.IncomingHttpHeaders;
}> {
const url = `http://${this.ipAddress}/${this.storeId}`;
const url = `https://${this.ipAddress}/${this.storeId}`;
console.log({ url });
return this.head(url); // Return the object from head method
}

public streamKey(key: string): Promise<Readable> {
return new Promise((resolve, reject) => {
const url = `http://${this.ipAddress}/${this.storeId}/${key}`;
const url = `https://${this.ipAddress}/${this.storeId}/${key}`;
const urlObj = new URL(url);

const requestOptions = {
Expand Down Expand Up @@ -141,6 +150,9 @@ export class ContentServer {
(urlObj.protocol === "http:" ? 80 : ContentServer.port),
path: urlObj.pathname + urlObj.search,
method: "HEAD",
key: fs.readFileSync(ContentServer.keyPath),
cert: fs.readFileSync(ContentServer.certPath),
rejectUnauthorized: false,
};

const request = http.request(requestOptions, (response) => {
Expand Down Expand Up @@ -244,6 +256,9 @@ export class ContentServer {
port: urlObj.port || ContentServer.port,
path: urlObj.pathname + urlObj.search, // Include query params
method: "GET",
key: fs.readFileSync(ContentServer.keyPath),
cert: fs.readFileSync(ContentServer.certPath),
rejectUnauthorized: false,
};

const request = http.request(requestOptions, (response) => {
Expand Down

0 comments on commit 8477abf

Please sign in to comment.