SCIM tools for Go (Work In Progress)
- server - SCIM server
- client - SCIM client
- resource - Definition of SCIM resource types
- filter - Basic SCIM filter parsing, with a simple SQL generator
package examples_test
import (
"context"
"fmt"
"net/http/httptest"
"github.com/cybozu-go/scim/server"
)
func ExampleClient_UserCreate() {
srv := httptest.NewServer(server.MustNewServer(NewMockBackend()))
defer srv.Close()
// Create a SCIM client: this is wrapped in another function call
// to accomodate for debug tracing, but you can replace it with
// a client.New() call
cl := NewClient(srv.URL)
user, err := cl.User().Create().
DisplayName(`Daisuke Maki`).
ExternalID(`lestrrat`).
UserName(`lestrrat`).
Do(context.TODO())
if err != nil {
fmt.Printf("failed to create user: %s", err)
}
_ = user
// OUTPUT:
//
}
source: ./examples/client_user_create_example_test.go
- Finish implementing sample server
- Probably move it to github.com/cybozu-go/scim-ent
- Implement check in CI to diff against generated code
- Streamline code generation
Generates code in resource
, sample/ent/schema
, and sample
. If you made any changes that result in
changes to code under sample/ent/schema
, you need to run go generate ./sample
as well.
Source file is tools/cmd/genresources/objects.yml
Generates code for ent
, based on files under sample/ent/schema
.
This generates code from ent code, and thus have not source file.
Generates client code. Requires some synchronization between resource
.
Source file is tools/cmd/genclient/calls.yml
Generates filter parser code from filter/parser.go.y
support objects.
Source file is tools/cmd/genfilter/objects.yml
Generates options, as well as run all of go generate
for resource
, sample
, client
, and filer
Source files are located in various places, under the name options.yml