diff --git a/LICENSE b/LICENSE index 6730d53..94c6a28 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2018 ResourceAPI Team + Copyright 2018 StratoAPI Team Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/Makefile b/Makefile index 6bc12fb..3ea2f8d 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ GOCMD=go GOBUILD=$(GOCMD) build +GOMOD=$(GOCMD) mod BINARY_NAME=skeleton.so all: build @@ -7,5 +8,8 @@ all: build build: $(GOBUILD) -buildmode=plugin -o $(BINARY_NAME) main.go +tidy: + $(GOMOD) tidy + clean: rm -f $(BINARY_NAME) \ No newline at end of file diff --git a/README.md b/README.md index ed070f7..4ac2f83 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # Plugin-Skeleton -An example plugin for ResourceAPI/Core +An example plugin for StratoAPI/Core diff --git a/go.mod b/go.mod index 3141e6a..d9e5129 100644 --- a/go.mod +++ b/go.mod @@ -1,5 +1,3 @@ -module github.com/ResourceAPI/Plugin-Skeleton +module github.com/StratoAPI/Plugin-Skeleton -replace github.com/ResourceAPI/Interface v0.0.0 => ../Interface - -require github.com/ResourceAPI/Interface v0.0.0 +require github.com/StratoAPI/Interface v0.0.11 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..19883a9 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/StratoAPI/Interface v0.0.11 h1:oms2ia6Rl6TBC98umloNGthx5+aFPDP1oK+1aMog7Ds= +github.com/StratoAPI/Interface v0.0.11/go.mod h1:jLlD9bBfAuFE0VN6FkrvX3cMhuDnbikzonCMprOLsyw= diff --git a/main.go b/main.go index f4b0c83..4ddc138 100644 --- a/main.go +++ b/main.go @@ -3,9 +3,9 @@ package main import ( "fmt" - "github.com/ResourceAPI/Interface/plugins" + "github.com/StratoAPI/Interface/plugins" - "github.com/ResourceAPI/Plugin-Skeleton/skeleton" + "github.com/StratoAPI/Plugin-Skeleton/skeleton" ) type SkeletonPlugin string @@ -18,6 +18,7 @@ func (SkeletonPlugin) Entrypoint() { plugins.GetRegistry().RegisterFacade("skeleton", &skeleton.SkeletonFacade{}) plugins.GetRegistry().RegisterStorage("skeleton", &skeleton.SkeletonStorage{}) plugins.GetRegistry().RegisterFilter("skeleton", &skeleton.SkeletonFilter{}) + plugins.GetRegistry().RegisterMiddleware("skeleton", &skeleton.SkeletonMiddleware{}) plugins.GetRegistry().AssociateFilter("skeleton", "skeleton") fmt.Println("Skeleton Plugin Initialized") } diff --git a/skeleton/filter.go b/skeleton/filter.go index d99e690..1318141 100644 --- a/skeleton/filter.go +++ b/skeleton/filter.go @@ -1,5 +1,7 @@ package skeleton +import "github.com/StratoAPI/Interface/filter" + type SkeletonFilter struct { } @@ -19,6 +21,11 @@ func (skeleton SkeletonFilter) Stop() error { } // Validate structure for filter validness -func (skeleton SkeletonFilter) ValidateFilter(filter interface{}) (bool, error) { +func (skeleton SkeletonFilter) ValidateFilter(filter filter.ProcessedFilter) (bool, error) { return false, nil // TODO } + +// Create a new instance of the filter +func (skeleton SkeletonFilter) CreateFilter(filter string) (interface{}, error) { + return nil, nil // TODO +} diff --git a/skeleton/middleware.go b/skeleton/middleware.go new file mode 100644 index 0000000..2f9ece0 --- /dev/null +++ b/skeleton/middleware.go @@ -0,0 +1,35 @@ +package skeleton + +import "github.com/StratoAPI/Interface/middleware" + +type SkeletonMiddleware struct { +} + +// Initialize the facade. +func (middleware SkeletonMiddleware) Initialize() error { + return nil // TODO +} + +// Start the facade. Must be a blocking call. +func (middleware SkeletonMiddleware) Start() error { + return nil // TODO +} + +// Graceful stopping of the facade with a 30s timeout. +func (middleware SkeletonMiddleware) Stop() error { + return nil // TODO +} + +// Validate request +// If returns nil, it will pass the request onwards +// If returns a pointer, request will get replied to with provided response +func (middleware SkeletonMiddleware) Request(resource string, headers map[string][]string, config interface{}) *middleware.RequestResponse { + return nil // TODO +} + +// Validate and filter response +// If returns nil, it will pass the request onwards with the returned data +// If returns a pointer, request will get replied to with provided response without data +func (middleware SkeletonMiddleware) Response(resource string, headers map[string][]string, data []map[string]interface{}, config interface{}) ([]map[string]interface{}, *middleware.RequestResponse) { + return data, nil // TODO +} diff --git a/skeleton/storage.go b/skeleton/storage.go index d1e196c..8b58b39 100644 --- a/skeleton/storage.go +++ b/skeleton/storage.go @@ -1,5 +1,7 @@ package skeleton +import "github.com/StratoAPI/Interface/filter" + type SkeletonStorage struct { } @@ -19,7 +21,7 @@ func (storage SkeletonStorage) Stop() error { } // Retrieve resources. -func (storage SkeletonStorage) GetResources(resource string, filters []interface{}) ([]map[string]interface{}, error) { +func (storage SkeletonStorage) GetResources(resource string, filters []filter.ProcessedFilter) ([]map[string]interface{}, error) { return nil, nil // TODO } @@ -29,11 +31,11 @@ func (storage SkeletonStorage) CreateResources(resource string, data []map[strin } // Update resources. -func (storage SkeletonStorage) UpdateResources(resource string, data []map[string]interface{}, filters []interface{}) error { +func (storage SkeletonStorage) UpdateResources(resource string, data map[string]interface{}, filters []filter.ProcessedFilter) error { return nil // TODO } // Delete resources. -func (storage SkeletonStorage) DeleteResources(resource string, filters []interface{}) error { +func (storage SkeletonStorage) DeleteResources(resource string, filters []filter.ProcessedFilter) error { return nil // TODO }