storj / uplink

Storj network Go library
MIT License
122 stars 17 forks source link

Link sharing feature #151

Closed mb4ndeira closed 1 year ago

mb4ndeira commented 1 year ago

A question:

The one feature that was missing when I considered implementing uplink as a web application storage solution client, as opposed to the millions of JavaScript alternatives I'm accustomed to, is file sharing. In every web or mobile client I've developed, it has been necessary to access files on my storage provider via an authorized URL by default. Since Storj offers file sharing through CLI, I assumed it would also be possible to achieve this using the uplink Go library.

Since, I am new to the community and I'm not entirely sure what your vision is for the library. However, since file sharing is the one feature not there for my use case, I am genuinely curious to know whether you have plans to implement it in the future. Thank you.

egonelbre commented 1 year ago

This feature is available through storj.io/uplink/edge. It's not documented as well as other features, but it's possible to decipher how uplink cli uses it from https://github.com/storj/storj/blob/0ca7d19fc766354fe5529a3c4224060c8c488e88/cmd/uplink/cmd_share.go#L21.

Let us know if you need more detailed help.

mb4ndeira commented 1 year ago

I'll take a look, thanks.

mb4ndeira commented 1 year ago

This feature is available through storj.io/uplink/edge. It's not documented as well as other features, but it's possible to decipher how uplink cli uses it from https://github.com/storj/storj/blob/0ca7d19fc766354fe5529a3c4224060c8c488e88/cmd/uplink/cmd_share.go#L21.

Let us know if you need more detailed help.

Hello, I'm back here, hope you're doing well.

So, recently, I took a peek at the package you suggested and tried plugging it's funcs into a grpc server application, but I just stumbled on the edge configuration part, and it's pretty cryptic for me to figure out alone. This doc did not gave any insight.

https://github.com/mb4ndeira/uplink_server/blob/main/uplink_provider/uplink.go

I even tried ignoring it:

var edgeConfig edge.Config

// edgeConfig.AuthServiceAddress =
// edgeConfig.CertificatePEM =

credentials, err := edgeConfig.RegisterAccess(ctx, access, &edge.RegisterAccessOptions{Public: publicAccess})
if err != nil {
    return err
}

But of course it gave me: "AuthServiceAddress is missing".

Appreciate any clarification I can get on this edge config thing, thank you.

mniewrzal commented 1 year ago

Hey, it should be enough to specif only edgeConfig.AuthServiceAddress as https://auth.storjshare.io. This is example how Uplink CLI is using it.

mb4ndeira commented 1 year ago

Hey, it should be enough to specif only edgeConfig.AuthServiceAddress as https://auth.storjshare.io. This is example how Uplink CLI is using it.

You're right, it's enough to only specify "https://auth.storjshare.io" (with port :7777) as the auth address, thank you for the tips, I've implemented successfully here.

CosmicPangolin commented 6 months ago

@mniewrzal @egonelbre

I've been banging my head in disoriented confusion all day in the battle to build a simple file upload http service with both presigned upload urls and long-lasting download urls. This is the optimal setup for my needs but actually requires both S3 gateway and uplink. And since the node library looks functionally handicapped, I had to learn some Go.

In lieu of digging through Storj codebases to find an alternative, I was about to add the Uplink CLI to my libuplink container and make os/exec calls to get the download url that is still undocumented in the SDK despite being the core sharing mechanic on the Storj site.

As I mentioned several weeks ago in the forums, Storj feels HORRIBLY hostile to an app developer. These client libraries are unmaintained and badly need TLC...like, the node library details 5 exposed functions. Some of the core Storj docs are a scattered and disorienting mess (it's a real chore to understand grants/s3/linkshares/uplink/sdks as currently organized). And this particular API is so horribly documented the only way to find it is...a closed issue...

Please, PLEASE make DevX a priority. You can have the best technology and still lose app developers as globally distributed and low-cost competition comes online. (See https://www.tigrisdata.com/, which is now Fly.io's preferred partner).