ketoclient

package module
v1.0.1-beta Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 6, 2019 License: MIT Imports: 9 Imported by: 0

README

ory-keto-client Actions Status

Getting Started

ory-keto-client is the Lab259 implementation of the ORY Keto client library.

This client library uses gojek/heimdall to make the requests. Heimdall uses afex/hystrix-go, a netflix/Hystrix implementation in Go, to provide retriers and circuit breaker. Check here to see why is this important.

Usage

TODO

Compatibility

This client was developed and tested with version v0.3.3-sandbox.

Prerequisites

What things you need to setup the project:

Running tests

First, we have to bring up the dependencies:

docker-compose up -d

Then we are able to run the tests:

make test

To enable coverage, execute:

make coverage

To generate the HTML coverage report, execute:

make coverage coverage-html

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotFound           = errors.New("policy not found")
	ErrServerIncompatible = errors.New("server incompatible. required: " + clientVersionCompatibility)
)

Functions

This section is empty.

Types

type AddMembersORYAccessRoleRequest

type AddMembersORYAccessRoleRequest struct {
	Members []string `json:"members"`
}

type AddMembersORYAccessRoleResponseOK

type AddMembersORYAccessRoleResponseOK struct {
	Role ORYAccessControlRole
}

type AllowedORYAccessControlPolicyRequest

type AllowedORYAccessControlPolicyRequest struct {
	Action   string      `json:"action"`
	Context  interface{} `json:"context"`
	Resource string      `json:"resource"`
	Subject  string      `json:"subject"`
}

type AllowedORYAccessControlPolicyResponse

type AllowedORYAccessControlPolicyResponse struct {
	Allowed bool `json:"allowed"`
}

type Client

type Client struct {
	// contains filtered or unexported fields
}

func New

func New(opts ...Option) *Client

func (*Client) AddMembersOryAccessControlRole

func (client *Client) AddMembersOryAccessControlRole(flavor Flavor, id string, request *AddMembersORYAccessRoleRequest) (*AddMembersORYAccessRoleResponseOK, error)

AddMembersOryAccessControlRole deletes an ORY Access Control Policy.

``` PUT /engines/acp/ory/{flavor}/roles/{id}/members HTTP/1.1 Accept: application/json ```

See Also https://www.ory.sh/docs/keto/sdk/api#add-a-member-to-an-ory-access-control-policy-role

func (*Client) AllowedOryAccessControlPolicy

func (client *Client) AllowedOryAccessControlPolicy(flavor Flavor, request *AllowedORYAccessControlPolicyRequest) (*AllowedORYAccessControlPolicyResponse, error)

AllowedOryAccessControlPolicy check if a request is allowed.

See Also https://www.ory.sh/docs/keto/sdk/api#check-if-a-request-is-allowed

func (*Client) CheckVersion

func (client *Client) CheckVersion() error

func (*Client) DeleteOryAccessControlPolicy

func (client *Client) DeleteOryAccessControlPolicy(flavor Flavor, id string) error

DeleteOryAccessControlPolicy deletes an ORY Access Control Policy.

``` DELETE /engines/acp/ory/{flavor}/policies/{id} HTTP/1.1 Accept: application/json ```

See Also https://www.ory.sh/docs/keto/sdk/api#deleteoryaccesscontrolpolicy

func (*Client) DeleteOryAccessControlRole

func (client *Client) DeleteOryAccessControlRole(flavor Flavor, id string) error

DeleteOryAccessControlRole deletes an ORY Access Control Role.

``` DELETE /engines/acp/ory/{flavor}/roles/{id} HTTP/1.1 Accept: application/json ```

See Also https://www.ory.sh/docs/keto/sdk/api#delete-an-ory-access-control-policy-role

func (*Client) GetOryAccessControlPolicy

func (client *Client) GetOryAccessControlPolicy(flavor Flavor, id string) (*GetORYAccessPolicyResponseOK, error)

GetOryAccessControlPolicy list ORY Access Control Policies.

``` GET /engines/acp/ory/{flavor}/policies/{id} HTTP/1.1 Accept: application/json ```

See Also https://www.ory.sh/docs/keto/sdk/api#getoryaccesscontrolpolicy

func (*Client) GetOryAccessControlRole

func (client *Client) GetOryAccessControlRole(flavor Flavor, id string) (*GetORYAccessRoleResponseOK, error)

GetOryAccessControlRole return a ORY Access Control Role by ID.

``` GET /engines/acp/ory/{flavor}/roles/{id} HTTP/1.1 Accept: application/json ```

See Also https://www.ory.sh/docs/keto/sdk/api#get-an-ory-access-control-policy-role

func (*Client) HealthAlive

func (client *Client) HealthAlive() (*HealthAliveResponse, error)

HealthAlive returns a 200 status code when the HTTP server is up running.

``` GET /health/alive HTTP/1.1 Accept: application/json ```

See Also https://www.ory.sh/docs/keto/sdk/api#check-alive-status

func (*Client) HealthReadness

func (client *Client) HealthReadness() (*HealthReadnessResponse, error)

HealthReadness returns a 200 status code when the HTTP server is up running and the environment dependencies (e.g. the database) are responsive as well.

``` GET /health/ready HTTP/1.1 Accept: application/json ```

See Also https://www.ory.sh/docs/keto/sdk/api#check-readiness-status

func (*Client) ListOryAccessControlPolicy

func (client *Client) ListOryAccessControlPolicy(flavor Flavor, request *ListORYAccessPolicyRequest) (*ListORYAccessPolicyResponseOK, error)

ListOryAccessControlPolicy list ORY Access Control Policies.

``` GET /engines/acp/ory/{flavor}/policies HTTP/1.1 Accept: application/json ```

See Also https://www.ory.sh/docs/keto/sdk/api#listoryaccesscontrolpolicies

func (*Client) ListOryAccessControlRole

func (client *Client) ListOryAccessControlRole(flavor Flavor, request *ListORYAccessRoleRequest) (*ListORYAccessRoleResponseOK, error)

ListOryAccessControlRole list ORY Access Control Roles.

``` GET /engines/acp/ory/{flavor}/roles HTTP/1.1 Accept: application/json ```

See Also https://www.ory.sh/docs/keto/sdk/api#list-ory-access-control-policy-roles

func (*Client) RemoveMemberOryAccessControlRole

func (client *Client) RemoveMemberOryAccessControlRole(flavor Flavor, id, member string) error

RemoveMemberOryAccessControlRole removes a member from an ORY Access Control Role.

``` DELETE /engines/acp/ory/{flavor}/roles/{id}/members/{member} HTTP/1.1 Accept: application/json ```

See Also https://www.ory.sh/docs/keto/sdk/api#remove-a-member-from-an-ory-access-control-policy-role

func (*Client) UpsertOryAccessControlPolicy

func (client *Client) UpsertOryAccessControlPolicy(flavor Flavor, request *UpsertORYAccessPolicyRequest) (*UpsertORYAccessPolicyResponseOK, error)

UpsertOryAccessControlPolicy an ORY Access Control Policy.

``` PUT /engines/acp/ory/{flavor}/policies HTTP/1.1 Content-Type: application/json Accept: application/json ```

See Also https://www.ory.sh/docs/keto/sdk/api#upsertoryaccesscontrolpolicy

func (*Client) UpsertOryAccessControlRole

func (client *Client) UpsertOryAccessControlRole(flavor Flavor, request *UpsertORYAccessRoleRequest) (*UpsertORYAccessRoleResponseOK, error)

UpsertOryAccessControlRole update or insert a ORY Access Control Role.

Roles group several subjects into one. Rules can be assigned to ORY Access Control Policy (OACP) by using the Role ID as subject in the OACP.

``` PUT /engines/acp/ory/{flavor}/roles HTTP/1.1 Content-Type: application/json Accept: application/json ```

See Also https://www.ory.sh/docs/keto/sdk/api#upsert-an-ory-access-control-policy-role

func (*Client) Version

func (client *Client) Version() (*VersionResponse, error)

Version returns the service version typically notated using semantic versioning.

``` GET /version HTTP/1.1 Accept: application/json ```

See Also https://www.ory.sh/docs/keto/sdk/api#get-service-version

type Effect

type Effect string
const (
	Allow Effect = "allow"
	Deny  Effect = "deny"
)

type Flavor

type Flavor string
const (
	// Exact does an case sensitive equality when comparing the rules.
	//
	// See Also https://www.ory.sh/docs/keto/engines/acp-ory#pattern-matching-strategies
	Exact Flavor = "exact"

	// Glob uses more advanced matching. It supports wildcards, single symbol
	// wildcards, super wildcards, character lists, etc.
	//
	// See Also https://www.ory.sh/docs/keto/engines/acp-ory#pattern-matching-strategies
	Glob Flavor = "glob"

	// Regex uses regexp to match the rules.
	//
	// See Also https://www.ory.sh/docs/keto/engines/acp-ory#pattern-matching-strategies
	Regex Flavor = "regex"
)

type GetORYAccessPolicyResponseOK

type GetORYAccessPolicyResponseOK struct {
	Policy ORYAccessControlPolicy
}

type GetORYAccessRoleResponseOK

type GetORYAccessRoleResponseOK struct {
	Role ORYAccessControlRole
}

type HealthAliveResponse

type HealthAliveResponse struct {
	Status string `json:"status"`
}

type HealthReadnessResponse

type HealthReadnessResponse struct {
	Status string `json:"status"`
}

type ListORYAccessPolicyRequest

type ListORYAccessPolicyRequest struct {
	Limit  int64
	Offset int64
}

type ListORYAccessPolicyResponseOK

type ListORYAccessPolicyResponseOK struct {
	Policies []ORYAccessControlPolicy
}

type ListORYAccessRoleRequest

type ListORYAccessRoleRequest struct {
	Limit  int64
	Offset int64
}

type ListORYAccessRoleResponseOK

type ListORYAccessRoleResponseOK struct {
	Roles []ORYAccessControlRole
}

type ORYAccessControlPolicy

type ORYAccessControlPolicy struct {
	Actions     []string    `json:"actions"`
	Conditions  interface{} `json:"conditions"`
	Description string      `json:"description"`
	Effect      Effect      `json:"effect"`
	ID          string      `json:"id"`
	Resources   []string    `json:"resources"`
	Subjects    []string    `json:"subjects"`
}

type ORYAccessControlRole

type ORYAccessControlRole struct {
	ID      string   `json:"id"`
	Members []string `json:"members"`
}

type Option

type Option func(*Client)

func WithHystrixClient

func WithHystrixClient(client *hystrix.Client) Option

WithHystrixClient creates an option that will define the `hystrix.Client` when creating a new `Client`.

func WithURL

func WithURL(u *url.URL) Option

WithURL creates an option that defines a host name for the Keto server.

type ResponseError

type ResponseError struct {
	Code    int64           `json:"code"`
	Details json.RawMessage `json:"details"`
	Message string          `json:"message,omitempty"`
	Reason  string          `json:"reason,omitempty"`
	Request string          `json:"request,omitempty"`
	Status  string          `json:"status,omitempty"`
}

ResponseError is the default error format for the Keto service.

func (*ResponseError) Error

func (err *ResponseError) Error() string

type UnexpectedResponse

type UnexpectedResponse struct {
	Response *http.Response
}

func (*UnexpectedResponse) Error

func (err *UnexpectedResponse) Error() string

type UpsertORYAccessPolicyRequest

type UpsertORYAccessPolicyRequest struct {
	ORYAccessControlPolicy
}

type UpsertORYAccessPolicyResponseOK

type UpsertORYAccessPolicyResponseOK struct {
	*ORYAccessControlPolicy
}

type UpsertORYAccessRoleRequest

type UpsertORYAccessRoleRequest struct {
	Role ORYAccessControlRole
}

type UpsertORYAccessRoleResponseOK

type UpsertORYAccessRoleResponseOK struct {
	Role ORYAccessControlRole
}

type VersionResponse

type VersionResponse struct {
	Version string `json:"version"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL