Compare commits

...

9 commits
v1.0.2 ... main

3 changed files with 76 additions and 6 deletions

9
go.mod
View file

@ -1,5 +1,10 @@
module git.ailur.dev/ailur/fg-nucleus-library
go 1.23.1
go 1.23.3
require github.com/google/uuid v1.6.0
require (
git.ailur.dev/ailur/fg-library/v3 v3.6.2
github.com/google/uuid v1.6.0
)
require github.com/go-chi/chi/v5 v5.2.0 // indirect

4
go.sum
View file

@ -1,2 +1,6 @@
git.ailur.dev/ailur/fg-library/v3 v3.6.2 h1:PNJKxpvbel2iDeB9+/rpYRyMoim6JjRHOXPYFYky7Ng=
git.ailur.dev/ailur/fg-library/v3 v3.6.2/go.mod h1:ArNsafpqES2JuxQM5aM+bNe0FwHLIsL6pbjpiWvDwGs=
github.com/go-chi/chi/v5 v5.2.0 h1:Aj1EtB0qR2Rdo2dG4O94RIU35w2lvQSj6BRA4+qwFL0=
github.com/go-chi/chi/v5 v5.2.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=

69
main.go
View file

@ -1,7 +1,11 @@
package library
import (
"github.com/google/uuid"
"crypto/ed25519"
library "git.ailur.dev/ailur/fg-library/v3"
"github.com/google/uuid"
"io"
"time"
)
type OAuthInformation struct {
@ -18,7 +22,64 @@ type OAuthResponse struct {
}
type File struct {
Name string `validate:"required"`
User uuid.UUID `validate:"required"`
Bytes []byte // Only used in write operations
Name string `validate:"required"`
User uuid.UUID `validate:"required"`
Reader *io.LimitedReader // Only used for write operations
}
type Quota struct {
User uuid.UUID `validate:"required"`
Bytes int64 `validate:"required"`
}
var (
StorageService = uuid.MustParse("00000000-0000-0000-0000-000000000003")
OAuthService = uuid.MustParse("00000000-0000-0000-0000-000000000004")
)
func OAuthSignup(oauth OAuthInformation, information *library.ServiceInitializationInformation) (OAuthResponse, error) {
message, err := information.SendAndAwaitISMessage(OAuthService, 1, oauth, time.Second*3)
if err != nil {
return OAuthResponse{}, err
}
return message.Message.(OAuthResponse), nil
}
func GetPublicKey(information *library.ServiceInitializationInformation) (ed25519.PublicKey, error) {
message, err := information.SendAndAwaitISMessage(OAuthService, 2, nil, time.Second*3)
if err != nil {
return nil, err
}
return message.Message.(ed25519.PublicKey), nil
}
func GetOAuthHostname(information *library.ServiceInitializationInformation) (string, error) {
message, err := information.SendAndAwaitISMessage(OAuthService, 0, nil, time.Second*3)
if err != nil {
return "", err
}
return message.Message.(string), nil
}
func InitializeOAuth(oauth OAuthInformation, information *library.ServiceInitializationInformation) (oauthResponse OAuthResponse, pk ed25519.PublicKey, hostname string, err error) {
pk, err = GetPublicKey(information)
if err != nil {
return
}
hostname, err = GetOAuthHostname(information)
if err != nil {
return
}
oauthResponse, err = OAuthSignup(oauth, information)
if err != nil {
return
}
return
}