Theta EdgeStore Gateway Alpha

API

Auth Token

To upload data to Theta EdgeStore, an auth token in the following format must be present in the HTTP request header: [timestamp].[wallet address].[signature], where signature = eth_sign(”Theta EdgeStore Call ${timestamp}”)

Sample code in Javascript (Browser)

if (!window.ethereum) {
  // should not reach here.
  throw 'wallet not installed';
}

const timestamp = Date.now().toString();
const msg = 'Theta EdgeStore Call ' + timestamp; 

const sig = await window.ethereum.request({
  method: 'personal_sign',
  params: [msg, address],
});

const auth_token = timestamp + "." + address + "." + sig;

// 1673992464885.0xec2a725e3855275c0c7cd725bf0dc7be95dca517.0x80a7f6ffc969f33603c532a72469d9e47edf6758c496b7d772210f745b63897a0b0a954fa16ed8aaa1321d7b73a23a6d65ea66bb4b345a6ee79aeb30fd5d8df61c

Sample code in Go

timestamp := now.Unix().UnixMilli()
msg := fmt.Sprintf("Theta EdgeStore Call %s", timestamp)
preSigned := "\x19Ethereum Signed Message:\n" + strconv.Itoa(len(msg)) + msg
sig, _ := wallet.Sign(preSigned)
authToken := fmt.Sprintf("%d.%s.%s", timestamp, wallet.Address(), sig.String())

Upload Data

POST https://api.thetaedgestore.com/api/v2/data

Upload a single file:

curl \
  -H 'x-theta-edgestore-auth: 1673992464885.0xec2a725e3855275c0c7cd725bf0dc7be95dca517.0x80a7f6ffc969f33603c532a72469d9e47edf6758c496b7d772210f745b63897a0b0a954fa16ed8aaa1321d7b73a23a6d65ea66bb4b345a6ee79aeb30fd5d8df61c' \
  -F "[email protected]/Users/ribao/California.jpeg" \
  https://api.thetaedgestore.com/api/v2/data

Output:

{"key":"0x9678e6e2c10062ac2c845d542d7d62931346b2a0ff18628c7fe28cfe0a097636"}

Upload a directory:

curl \
  -H 'x-theta-edgestore-auth: 1673992464885.0xec2a725e3855275c0c7cd725bf0dc7be95dca517.0x80a7f6ffc969f33603c532a72469d9e47edf6758c496b7d772210f745b63897a0b0a954fa16ed8aaa1321d7b73a23a6d65ea66bb4b345a6ee79aeb30fd5d8df61c' \
  -F "[email protected]/Users/ribao/theta-foodcourt/demo_website/index.html;filename=demo_website/index.html" \
  -F "[email protected]/Users/ribao/theta-foodcourt/demo_website/pic.jpeg;filename=demo_website/pic.jpeg" \
  -F "[email protected]/Users/ribao/theta-foodcourt/demo_website/css/main.css;filename=demo_website/css/main.css" \
  -F "[email protected]/Users/ribao/theta-foodcourt/demo_website/nested/second.html;filename=demo_website/nested/second.html" \
  https://api.thetaedgestore.com/api/v2/data

Output:

{"key":"0x5dd30f193e4c46fb95e938b5772050ac502546c5da398e431c2c5e2f05286a30"}

Retrieve Data

Retrieve a single file:

GET https://data.thetaedgestore.com/api/v2/data/0x378f7d9173201617afbe00b71153219f914f1125aff7aff1ad997f6d6c126fb1

To retrieve a file inside a directory, append relative path to the URL:

GET https://data.thetaedgestore.com/api/v2/data/0x5dd30f193e4c46fb95e938b5772050ac502546c5da398e431c2c5e2f05286a30/pic.jpeg