Dweb - web publishing, RESTful web apps, versioned data and

That’s ok if it worked the first time. Not sure how this will go. If it happens use the name option with publish-new and make sure it’s a different name.

That will force a new history and avoid the GE exists problem.

Good luck!

1 Like

its only a template i found on line but holly hell this is amazing :slight_smile:

dweb open a7ddb192773ab609ea223008a31f572ef4493c6bbc71b996c2d0ef9d86ed335faf2f284527c051c3214b5d2b89388180

11 Likes

Did the moderators ever get a chance to move these to a new thread, that you know of?

I’d really like to continue the discussion with you, but under an on-topic banner.

They haven’t responded. Why don’t you start a new topic anyway and copy your question to it.

Why don’t you start a new topic anyway and copy your question to it

Done. Here.

dweb 0.4.0

I’ve published an update to dweb which includes the following:

  • RESTful APIs to store and get PublicArchive, PrivateArchive, Chunk
  • dweb publish will error right away if you accidentally try to publish-new when you mean publish-update (and vice versa). Thanks to @aatonnomicc for highlighting the need for this.
  • dweb uses PrivateArchive by default when publishing a website but can display websites published using either PublicArchive or PrivateArchive. This is because using PrivateArchive is cheaper and more efficient, but still leaves the data accessible if it is stored for public access.
  • several GET APIs now accept a datamap where appropriate (in addition to data address, archive address, History address etc)

To install or update:
cargo install dweb-cli # Add --locked if that doesn't compile

To view the RESTful APIs:
dweb serve
Then, in another terminal:
dweb openapi-docs

I’m looking for feedback and requests from web devs on this topic: Web client devs - best way to do low level Autonomi REST APIs

Next I’ll be implementing Pointer, Scratchpad and then Vault REST APIs, so if you are interested in using those please let me know any requests on that topic.

8 Likes

dweb 0.4.1

This update includes a lot of tidying and incorporates some feedback from others around REST APIs (@loziniak - I’ve added some support for headers though not gone all the way).

But the big new features are REST APIs to create, update and fetch:

  • Pointer
  • Scratchpad
  • all the REST APIs that incur a cost now include the cost in ANT and ARB-ETH in the response
  • all REST APIs that store data have an optional parameter to say how many times the operation should be tried before returning failure

These APIs are also more flexible than the Autonomi APIs which require the caller to manage multiple owner secrets in order to create more than one object (of all types).

This is achieved by allowing you to use a single owner to create all types, so different types with the same owner are allowed. You can also specify a name for each object, so you can have as many objects of one type as you like, not just one per owner.

I’ve not done much testing of these but have checked I can create Pointers and Scratchpads, with or without names, can update them and get them of course.

To install/update and play with these REST APIs right now, see previous post.

12 Likes

dweb v0.4.3

This REST API update allows web apps to create and update public Scratchpads :partying_face:

…or private/encrypted Scratchpads of course.

This means that you can publish a Scratchpad address that anyone can read, making it possible to ‘follow’ public data. So a status or even a simple chat app for example.

Creating a Scratchpad is charged for but updating it is free.

11 Likes

dweb 0.5.0

An update mainly to take advantage of the client side improvements in Autonomi 0.4.4.

I’ve not tested the improvements myself so if you have a go, please report back how you get on. There are I believe significant changes to improve reliability for uploads and downloads which dweb websites and publishing should benefit from.

To update or install:

cargo install dweb-cli

To publish a website check out the help:

dweb --help
and
dweb publish-new --help
etc

To view a website:
Start the server:
dweb serve
Then in another terminal:

dweb open b4d001a4b826cf9cfca6101f35da73d21c2464ab8abf4d054ea99ecd9a57858f9c74854ae1acf856d244aba5d4a0ed96

It may take quite a while to load at the moment so be patient and if you can, report what happens.

Another site which may no longer work is this one. It used to load ok so I would be very interested if you have success with this from @aatonnomicc :

dweb open a7ddb192773ab609ea223008a31f572ef4493c6bbc71b996c2d0ef9d86ed335faf2f284527c051c3214b5d2b89388180

Swiss army knife

dweb is for many things, not just for websites:

  • Developers in particular can use it to inspect data types on the network (live or local). And it is a Rust library for building desktop apps.

  • You can publish simple static websites which you can view in any browser, or you can build dynamic web apps using the REST APIs of dweb serve.

More here: dweb/dweb-cli/README.md at main · happybeing/dweb · GitHub

9 Likes

no dice :frowning:

    Replaced package `dweb-cli v0.4.3` with `dweb-cli v0.5.0` (executable `dweb`)
mint@AERO-M:~$ dweb serve
Dweb Autonomi client initialising...
-> public network evm-arbitrum-one
DEBUG: Registered built-in DWEB-NAME: awesome -> 8650c4284430522a638a6fa37dd3e8d610c65b300f89f0199a95a1a9eab0455287f8c8d137fad390654bd9f19b868a5c
dweb main server listening on 127.0.0.1:8080
DEBUG serve with ports HttpRequest : GET /dweb-open/v/a7ddb192773ab609ea223008a31f572ef4493c6bbc71b996c2d0ef9d86ed335faf2f284527c051c3214b5d2b89388180/
DEBUG /dweb-open/v/a7ddb192773ab609ea223008a31f572ef4493c6bbc71b996c2d0ef9d86ed335faf2f284527c051c3214b5d2b89388180/
DEBUG parse_versioned_path_params_with_as_name() v/a7ddb192773ab609ea223008a31f572ef4493c6bbc71b996c2d0ef9d86ed335faf2f284527c051c3214b5d2b89388180/
1:v 2: a7ddb192773ab609ea223008a31f572ef4493c6bbc71b996c2d0ef9d86ed335faf2f284527c051c3214b5d2b89388180 r: 
version:None as_name: anonymous, address_or_name: a7ddb192773ab609ea223008a31f572ef4493c6bbc71b996c2d0ef9d86ed335faf2f284527c051c3214b5d2b89388180 remote_path: 
DEBUG History::from_history_address(a7ddb192773ab609ea223008a31f572ef4493c6bbc71b996c2d0ef9d86ed335faf2f284527c051c3214b5d2b89388180)
>>TRYING pointer_get() unlimited times...
>>TRY 1 of unlimited
failed to get pointer from the network - Network error
>>TRY 2 of unlimited
failed to get pointer from the network - Network error
>>TRY 3 of unlimited
failed to get pointer from the network - Network error
>>TRY 4 of unlimited
failed to get pointer from the network - Network error
>>TRY 5 of unlimited
failed to get pointer from the network - Network error
>>TRY 6 of unlimited
failed to get pointer from the network - Network error
>>TRY 7 of unlimited

1 Like

Yeh, thanks for trying but I think this is a different error. Am looking into it now so don’t bother trying anything else with dweb atm. :folded_hands:

5 Likes

This is my bad as the cool kids say, but not me obvs :smiley: I made a change to support naming of each object type independently and a side effect of this is to break your and @Southside’s websites. Sorry!

If you would like to re-upload or upload again you’ll get a new history address and hopefully this won’t happen again.

It will mean that the name you had for those sites can still be used to access the pointers, but as pointers rather than a history should you want to use those names for pointers in future. (By default, those pointers will have the name of the directory you passed to --files-root, but you may also have specified a name when using publish-new).

3 Likes

here is a news site fresh off the press

dweb open 923780b6a2ad82d6290263330e32d82942dcf199b4801092053bed69c40e34ad1b3aee3368819ea1c2b03b82bee06574

uploading went a lot smoother than last time as well managed to upload it in about an hour :slight_smile:

5 Likes

Marvelous, thank you :grinning_face: Another portfolio template site from @aatonnomicc:

cargo install dweb
dweb serve

Then in another terminal, this will open it in your browser direct from the live Autonomi network. Websites, a blog and other web apps are all possible now!

dweb open 923780b6a2ad82d6290263330e32d82942dcf199b4801092053bed69c40e34ad1b3aee3368819ea1c2b03b82bee06574

Loaded successfully over my mobile/broadband connection. Slow but a good start and things will I expect to keep improving for a while.

That’s 1.7MB in 27 files using a PrivateArchive:

DEBUG from_archive_address() at ddec1667f53d6814b07aeaf4d4ca8466a3fc10785889d9de122a4d93fb8178ca
DEBUG DualArchive attempting to deserialise as PrivateArchive...
DEBUG Retrieved PrivateArchive of 27 files
DEBUG Tree initialised using PrivateArchive
      directories: 6
      files      : 27
      total bytes: 1669084
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/css/animate.min.css" 46575 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/css/bootstrap.min.css" 117150 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/css/font-awesome.min.css" 23739 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/css/templatemo-style.css" 10220 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/fonts/FontAwesome.otf" 93888 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/fonts/fontawesome-webfont.eot" 60767 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/fonts/fontawesome-webfont.svg" 313398 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/fonts/fontawesome-webfont.ttf" 122092 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/fonts/fontawesome-webfont.woff" 71508 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/fonts/fontawesome-webfont.woff2" 56780 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/index.html" 19150 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/js/bootstrap.min.js" 35452 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/js/custom.js" 1630 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/js/jquery.js" 93099 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/js/jquery.singlePageNav.min.js" 2546 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/js/typed.js" 14073 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/js/wow.min.js" 7082 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(1970-01-01 00:00:00) "/.dweb/history-address/923780b6a2ad82d6290263330e32d82942dcf199b4801092053bed69c40e34ad1b3aee3368819ea1c2b03b82bee06574" 1 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/images/home-bg.jpg" 207209 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/images/portfolio-img1.jpg" 27966 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/images/portfolio-img2.jpg" 30731 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/images/portfolio-img3.jpg" 25450 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/images/portfolio-img4.jpg" 41290 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/images/team-img1.jpg" 54309 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/images/team-img2.jpg" 67948 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/images/team-img3.jpg" 55853 bytes and JSON: ""
      [private] c(1970-01-01 00:00:00) m(2017-06-06 08:19:04) "/images/team-img4.jpg" 69178 bytes and JSON: ""
6 Likes

i was just trying to have a go with your fileman web app

im getting this error does it need to be republished since latest update to dweb ?

---- edit just realised it says its not been published yet in the readme :laughing:

1 Like

Yeh, it’s not live yet just for local testing and will need updating before that because of changes to the REST APIs. I’m working on a single file app (codename Winsome) which should be easier for me to get live but quite a bit of work to do on that - even assuming it works! It’s a bit ambitious for such a young network. I have the UI done but all the JavaScript interaction with the network is going to take a week or :zany_face: I think.

So maybe I should update Fileman first. I hit a limitation with the file manager component I was using and didn’t get any help from their community so may need to find something else before it can do much more than view uploaded archives.

1 Like

ill just cool my beens for a week or two then :laughing:
looking forward to testing which ever one you decide to go with :slight_smile:

and by not entering the IF program you have totally ruined my voting strategy :rofl:

7 Likes

dweb v0.5.1

Nothing major in this release but please worth updating for some bug-fixes:

cargo install dweb-cli

3 Likes

So I grabbed that and tried to upload a test site
But despite a reasonably stocked wallet it failed to upload


willie@gagarin:~/projects/maidsafe/test-sites$ dweb publish-new --files-root southside/
Dweb Autonomi client initialising...

DEBUG loaded wallet: 0xc753bA57E0F8Ba81bAcf73Ac1b9242733d39a646
DEBUG     tokens: 6841961542836428720
DEBUG     gas   : 108229723779000
-> public network evm-arbitrum-one
DEBUG publish_or_update_files()...
Creating History on network...
DEBUG History::create_online(southside)
DEBUG create_graph_entry()
DEBUG entry_secret_key: 6e2794f5ea2adb1757510c8827d973ba7605ea737713054926e9970024e85216
DEBUG next_public_key : b15dbabfce0f7e503bc1e4031c044861244fa4a62bee488a4ee4b5e6c88ffb7dfe51215ce0750bbbd56472ba64fc6afc
DEBUG creating GraphEntry::new(
       owner      : b719b34d662b670cc2f7b2ee89a1d33293ffb36d1dddadc807527a8913cb52ea7eb9b9d22293454d2e612ccfab4400a6
       parents    : []
       content    : ee383f084cffaab845617b1c43ffaee8b5c17e8fbbb3ad3d379c96b5b844f24e
       descendents: [b15dbabfce0f7e503bc1e4031c044861244fa4a62bee488a4ee4b5e6c88ffb7dfe51215ce0750bbbd56472ba64fc6afc])
DEBUG graph_entry_put() at b719b34d662b670cc2f7b2ee89a1d33293ffb36d1dddadc807527a8913cb52ea7eb9b9d22293454d2e612ccfab4400a6
DEBUG create_pointer_for_update()
DEBUG created pointer at a9d96ebccb2d3813370a0f6ac409b6edfe17eb31cd996f4b7a56b746af92a5ab218701815721829f18b8f744c7fe39a0
DEBUG History::new() created new pointer at 48bac406888a6300fe03c2f34cda401877c429538724091296992bb3effcd5b1
Uploading files to network...
Uploading files from directory (file by file): "southside/"
file: "38_jamaica_st.jpg"
>>TRYING file_content_upload_public() unlimited times...
>>TRY 1 of unlimited
Failed to upload file - Failed to upload file
>>TRY 2 of unlimited
Failed to upload file - Failed to upload file
>>TRY 3 of unlimited

and many many more of the same error.

Cost me 1.513*10e-7 , so it did…

So now we wait for @happybeing to leave the Glenfiddich alone and advise further.
Or he can nip up here, where I will feed him Islay malts instead.
:tumbler_glass:

2 Likes

Finally succeeded - cost me £6.26 in gas fees though :unamused_face:

I make that about $5/MB. Something no right…

dweb open b719b34d662b670cc2f7b2ee89a1d33293ffb36d1dddadc807527a8913cb52ea7eb9b9d22293454d2e612ccfab4400a6


DEBUG creating GraphEntry::new(
       owner      : 90c9bc332113d3e5e6617fd9ec324340ffa1faac1abd1641cd98397c91610486ba84039c8d7d469cbca44ad38d580f5e
       parents    : [a0444c834199a765b57c844d28a07841c4732afdcad6d6064357bd42592b33e5b0036d8868c04231c3a65e532cf137e3]
       content    : 40c159a125060e838e4fd087df2cfe34c7f711deb4f1659a61201bd8624cc830
       descendents: [90c9bc332113d3e5e6617fd9ec324340ffa1faac1abd1641cd98397c91610486ba84039c8d7d469cbca44ad38d580f5e])
DEBUG new_entry address: 90c9bc332113d3e5e6617fd9ec324340ffa1faac1abd1641cd98397c91610486ba84039c8d7d469cbca44ad38d580f5e
Pointer retrieved with counter 0
DEBUG create_pointer_for_update()
DEBUG created pointer at a9d96ebccb2d3813370a0f6ac409b6edfe17eb31cd996f4b7a56b746af92a5ab218701815721829f18b8f744c7fe39a0
Calling pointer_put() with new GraphEntry at: 90c9bc332113d3e5e6617fd9ec324340ffa1faac1abd1641cd98397c91610486ba84039c8d7d469cbca44ad38d580f5e
>>TRYING pointer_put() unlimited times...
>>TRY 1 of unlimited
>>OK
History update online cost: 0.000530581560000000 Gas
History update online cost: 0.000009471196817141 ANT
trove_address added to history: 40c159a125060e838e4fd087df2cfe34c7f711deb4f1659a61201bd8624cc830
Publish update cost: 0.001952219120000000 Gas
Publish update cost: 0.000033910240186210 ANT

CONTENT UPDATED (version 0).
All versions available at HISTORY-ADDRESS:
b719b34d662b670cc2f7b2ee89a1d33293ffb36d1dddadc807527a8913cb52ea7eb9b9d22293454d2e612ccfab4400a6
DWEBNAME:
southside

NOTE:
- To update this content use:

    dweb publish-update --name "southside" --files-root "/home/willie/projects/maidsafe/test-sites/southside/"

- To browse the content (after starting the server with 'dweb serve'):

    dweb open b719b34d662b670cc2f7b2ee89a1d33293ffb36d1dddadc807527a8913cb52ea7eb9b9d22293454d2e612ccfab4400a6


- For help use 'dweb --help'

willie@gagarin:~/projects/maidsafe/test-sites/southside$ du -h
1.7M	./media/images
1.7M	./media
12K	./css
1.7M	.
4 Likes