Skip to content

Commit

Permalink
Implement listing supported mime types in app registry (#1944)
Browse files Browse the repository at this point in the history
  • Loading branch information
ishank011 authored Aug 2, 2021
1 parent 2ec4ae6 commit a133b60
Show file tree
Hide file tree
Showing 11 changed files with 56 additions and 120 deletions.
3 changes: 3 additions & 0 deletions changelog/unreleased/list-mime-types.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Enhancement: Implement listing supported mime types in app registry

https://github.com/cs3org/reva/pull/1944
3 changes: 1 addition & 2 deletions cmd/reva/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ var (
ocmShareUpdateCommand(),
ocmShareListReceivedCommand(),
ocmShareUpdateReceivedCommand(),
openInAppCommand(),
preferencesCommand(),
genCommand(),
publicShareCreateCommand(),
Expand All @@ -79,8 +80,6 @@ var (
shareUpdateCommand(),
shareListReceivedCommand(),
shareUpdateReceivedCommand(),
openInAppCommand(),
openFileInAppProviderCommand(),
transferCreateCommand(),
transferGetStatusCommand(),
transferCancelCommand(),
Expand Down
103 changes: 0 additions & 103 deletions cmd/reva/open-file-in-app-provider.go

This file was deleted.

2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ require (
github.com/cheggaaa/pb v1.0.29
github.com/coreos/go-oidc v2.2.1+incompatible
github.com/cs3org/cato v0.0.0-20200828125504-e418fc54dd5e
github.com/cs3org/go-cs3apis v0.0.0-20210726064751-4e567a2c8df1
github.com/cs3org/go-cs3apis v0.0.0-20210802061248-fecffdb89898
github.com/eventials/go-tus v0.0.0-20200718001131-45c7ec8f5d59
github.com/gdexlab/go-render v1.0.1
github.com/go-ldap/ldap/v3 v3.3.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/cs3org/cato v0.0.0-20200828125504-e418fc54dd5e h1:tqSPWQeueWTKnJVMJffz4pz0o1WuQxJ28+5x5JgaHD8=
github.com/cs3org/cato v0.0.0-20200828125504-e418fc54dd5e/go.mod h1:XJEZ3/EQuI3BXTp/6DUzFr850vlxq11I6satRtz0YQ4=
github.com/cs3org/go-cs3apis v0.0.0-20210726064751-4e567a2c8df1 h1:HLVbsiCs1vydncvl6OsiH8iO3D1/p9l/gZ4nMnwcnjQ=
github.com/cs3org/go-cs3apis v0.0.0-20210726064751-4e567a2c8df1/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
github.com/cs3org/go-cs3apis v0.0.0-20210802061248-fecffdb89898 h1:vU4zvv01HSz2D3Fjeudcsv0SkT7uICPG6sZIHzGvQFY=
github.com/cs3org/go-cs3apis v0.0.0-20210802061248-fecffdb89898/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
Expand Down
4 changes: 0 additions & 4 deletions internal/grpc/services/appprovider/appprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,3 @@ func (s *service) OpenInApp(ctx context.Context, req *providerpb.OpenInAppReques
return res, nil

}

func (s *service) OpenFileInAppProvider(ctx context.Context, req *providerpb.OpenFileInAppProviderRequest) (*providerpb.OpenFileInAppProviderResponse, error) {
return nil, errtypes.NotSupported("Deprecated")
}
15 changes: 15 additions & 0 deletions internal/grpc/services/appregistry/appregistry.go
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,21 @@ func (s *svc) ListAppProviders(ctx context.Context, req *registrypb.ListAppProvi
return res, nil
}

func (s *svc) ListSupportedMimeTypes(ctx context.Context, req *registrypb.ListSupportedMimeTypesRequest) (*registrypb.ListSupportedMimeTypesResponse, error) {
mimeTypes, err := s.reg.ListSupportedMimeTypes(ctx)
if err != nil {
return &registrypb.ListSupportedMimeTypesResponse{
Status: status.NewInternal(ctx, err, "error listing the supported mime types"),
}, nil
}

res := &registrypb.ListSupportedMimeTypesResponse{
Status: status.NewOK(ctx),
MimeTypes: mimeTypes,
}
return res, nil
}

func (s *svc) GetDefaultAppProviderForMimeType(ctx context.Context, req *registrypb.GetDefaultAppProviderForMimeTypeRequest) (*registrypb.GetDefaultAppProviderForMimeTypeResponse, error) {
provider, err := s.reg.GetDefaultProviderForMimeType(ctx, req.MimeType)
if err != nil {
Expand Down
5 changes: 0 additions & 5 deletions internal/grpc/services/gateway/appprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,6 @@ func (s *svc) OpenInApp(ctx context.Context, req *gateway.OpenInAppRequest) (*pr
return s.openLocalResources(ctx, fileInfo, req.ViewMode, req.App)
}

func (s *svc) OpenFileInAppProvider(ctx context.Context, req *gateway.OpenFileInAppProviderRequest) (*providerpb.OpenFileInAppProviderResponse, error) {
// TODO to be removed in a future PR
return nil, errtypes.NotSupported("Deprecated")
}

func (s *svc) openFederatedShares(ctx context.Context, targetURL string, vm gateway.OpenInAppRequest_ViewMode, app string,
insecure, skipVerify bool, nameQueries ...string) (*providerpb.OpenInAppResponse, error) {
log := appctx.GetLogger(ctx)
Expand Down
17 changes: 17 additions & 0 deletions internal/grpc/services/gateway/appregistry.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,23 @@ func (s *svc) ListAppProviders(ctx context.Context, req *registry.ListAppProvide
return res, nil
}

func (s *svc) ListSupportedMimeTypes(ctx context.Context, req *registry.ListSupportedMimeTypesRequest) (*registry.ListSupportedMimeTypesResponse, error) {
c, err := pool.GetAppRegistryClient(s.c.AppRegistryEndpoint)
if err != nil {
err = errors.Wrap(err, "gateway: error calling GetAppRegistryClient")
return &registry.ListSupportedMimeTypesResponse{
Status: status.NewInternal(ctx, err, "error getting app registry client"),
}, nil
}

res, err := c.ListSupportedMimeTypes(ctx, req)
if err != nil {
return nil, errors.Wrap(err, "gateway: error calling ListSupportedMimeTypes")
}

return res, nil
}

func (s *svc) GetDefaultAppProviderForMimeType(ctx context.Context, req *registry.GetDefaultAppProviderForMimeTypeRequest) (*registry.GetDefaultAppProviderForMimeTypeResponse, error) {
c, err := pool.GetAppRegistryClient(s.c.AppRegistryEndpoint)
if err != nil {
Expand Down
1 change: 1 addition & 0 deletions pkg/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import (
type Registry interface {
FindProviders(ctx context.Context, mimeType string) ([]*registry.ProviderInfo, error)
ListProviders(ctx context.Context) ([]*registry.ProviderInfo, error)
ListSupportedMimeTypes(ctx context.Context) (map[string]*registry.AppProviderNameList, error)
AddProvider(ctx context.Context, p *registry.ProviderInfo) error
GetDefaultProviderForMimeType(ctx context.Context, mimeType string) (*registry.ProviderInfo, error)
SetDefaultProviderForMimeType(ctx context.Context, mimeType string, p *registry.ProviderInfo) error
Expand Down
19 changes: 16 additions & 3 deletions pkg/app/registry/static/static.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,7 @@ func (b *reg) AddProvider(ctx context.Context, p *registrypb.ProviderInfo) error
b.providers[p.Address] = p

for _, m := range p.MimeTypes {
_, ok := b.mimetypes[m]
if ok {
if _, ok := b.mimetypes[m]; ok {
b.mimetypes[m].apps = append(b.mimetypes[m].apps, p.Address)
} else {
b.mimetypes[m] = &mimeTypeIndex{apps: []string{p.Address}}
Expand All @@ -131,13 +130,27 @@ func (b *reg) AddProvider(ctx context.Context, p *registrypb.ProviderInfo) error
}

func (b *reg) ListProviders(ctx context.Context) ([]*registrypb.ProviderInfo, error) {
var providers = make([]*registrypb.ProviderInfo, 0, len(b.providers))
providers := make([]*registrypb.ProviderInfo, 0, len(b.providers))
for _, p := range b.providers {
providers = append(providers, p)
}
return providers, nil
}

func (b *reg) ListSupportedMimeTypes(ctx context.Context) (map[string]*registrypb.AppProviderNameList, error) {
mimeTypes := make(map[string]*registrypb.AppProviderNameList)
for _, p := range b.providers {
for _, m := range p.MimeTypes {
if _, ok := mimeTypes[m]; ok {
mimeTypes[m].AppProviderName = append(mimeTypes[m].AppProviderName, p.Name)
} else {
mimeTypes[m] = &registrypb.AppProviderNameList{AppProviderName: []string{p.Name}}
}
}
}
return mimeTypes, nil
}

func (b *reg) SetDefaultProviderForMimeType(ctx context.Context, mimeType string, p *registrypb.ProviderInfo) error {
_, ok := b.mimetypes[mimeType]
if ok {
Expand Down

0 comments on commit a133b60

Please sign in to comment.