services

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2020 License: MIT Imports: 23 Imported by: 0

Documentation

Overview

services package is au json-rpc service for session management. client can perform three operations on session: - Open to initiate a session with valid credentials - Renew to extends the validty period from a valid session - Close to invalidate a session

Index

Constants

View Source
const (
	SessionDuration = 3 * time.Minute
)
View Source
const (
	VerifySessionSubject = subjectPrefix + "VerifySession"
)
View Source
const Version string = "0.1"

Version

Variables

View Source
var (
	ErrInvalidCrendential    = errors.New("InvalidCredentials")
	ErrMissingCookie         = errors.New("MissingCookie")
	ErrInvalidCookie         = errors.New("ErrInvalidCookie")
	ErrSessionCreationFailed = errors.New("SessionCreationFailed")
	ErrTooManyOpenSession    = errors.New("TooManyOpenSession")
	ErrSessionExpired        = sessions.ErrSessionExpired
	ErrSessionClose          = errors.New("SessionCloseFailed")
)
View Source
var (
	ErrServiceInternalError = errors.New("Service Internal Error")
)
View Source
var (
	StatsMiddleware = stats.New()
)

Functions

func AppendRequestLog

func AppendRequestLog(log *logrus.Entry, r *http.Request) *logrus.Entry

func ContextValues

func ContextValues(ctx context.Context) (bank.Database, *sessions.Session, error)

func CreateCorsOptions

func CreateCorsOptions(corsAllowedOrigins []string) *cors.Cors

func CreateSessionWithCookie added in v0.0.2

func CreateSessionWithCookie(ctx context.Context, r *http.Request, w http.ResponseWriter, userID uint64) error

func GetRequestLog

func GetRequestLog(ctx context.Context, r *http.Request) *logrus.Entry

func GetServiceRequestLog

func GetServiceRequestLog(log *logrus.Entry, r *http.Request, service, operation string) *logrus.Entry

func NewAccountingHandler added in v0.0.2

func NewAccountingHandler(ctx context.Context) http.Handler

func NewSessionHandler

func NewSessionHandler(ctx context.Context) http.Handler

func NewUserHandler

func NewUserHandler(ctx context.Context) http.Handler

func OpenSessionAllowed

func OpenSessionAllowed(ctx context.Context, userID uint64) bool

func RegisterMessageHandlers added in v0.0.2

func RegisterMessageHandlers(ctx context.Context)

func RegisterServices

func RegisterServices(ctx context.Context, mux *mux.Router, corsAllowedOrigins []string)

func RequesterIP

func RequesterIP(r *http.Request) string

Types

type AccountHistoryRequest added in v0.0.2

type AccountHistoryRequest struct {
	SessionArgs
	AccountID string `json:"accountId"`
	From      int64  `json:"from"`
	To        int64  `json:"to"`
}

AccountHistoryRequest holds args for accounting history requests

type AccountHistoryResponse added in v0.0.2

type AccountHistoryResponse struct {
	AccountID  string             `json:"accountId"`
	Currency   string             `json:"currency"`
	From       int64              `json:"from"`
	To         int64              `json:"to"`
	Operations []AccountOperation `json:"operations"`
}

AccountHistoryResponse holds args for accounting requests

type AccountInfo added in v0.0.2

type AccountInfo struct {
	Timestamp   int64        `json:"timestamp"`
	AccountID   string       `json:"accountId"`
	Currency    CurrencyInfo `json:"curency"`
	Name        string       `json:"name"`
	Status      string       `json:"status"`
	Balance     float64      `json:"balance"`
	TotalLocked float64      `json:"totalLocked"`
	Notional    Notional     `json:"notional"`
}

AccountInfo holds account information

type AccountOperation added in v0.0.2

type AccountOperation struct {
	Timestamp   int64   `json:"timestamp"`
	OperationID string  `json:"operationId"`
	Amount      float64 `json:"amount"`
	Balance     float64 `json:"balance"`
	LockAmount  float64 `json:"lockAmount"`
	TotalLocked float64 `json:"totalLocked"`
}

AccountOperation holds account operation

type AccountRequest added in v0.0.2

type AccountRequest struct {
	SessionArgs
	RateBase string `json:"rateBase"`
}

AccountRequest holds args for accounting requests

type AccountResponse added in v0.0.2

type AccountResponse struct {
	Accounts []AccountInfo `json:"accounts"`
}

AccountResponse holds args for accounting requests

type AccountingService added in v0.0.2

type AccountingService int

func (*AccountingService) History added in v0.0.2

AccountingService operation return user's accounts

func (*AccountingService) List added in v0.0.2

func (p *AccountingService) List(r *http.Request, request *AccountRequest, reply *AccountResponse) error

AccountingService operation return user's accounts

type CookieCodec

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

func NewCookieCodec

func NewCookieCodec(ctx context.Context) *CookieCodec

func (*CookieCodec) NewRequest

func (p *CookieCodec) NewRequest(r *http.Request) rpc.CodecRequest

type CookieCodecRequest

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

func (*CookieCodecRequest) Method

func (p *CookieCodecRequest) Method() (string, error)

func (*CookieCodecRequest) ReadRequest

func (p *CookieCodecRequest) ReadRequest(args interface{}) error

func (*CookieCodecRequest) WriteError

func (p *CookieCodecRequest) WriteError(w http.ResponseWriter, status int, err error)

func (*CookieCodecRequest) WriteResponse

func (p *CookieCodecRequest) WriteResponse(w http.ResponseWriter, args interface{})

type CurrencyInfo added in v0.0.2

type CurrencyInfo struct {
	Name             string `json:"name"`
	IsCrypto         bool   `json:"isCrypto"`
	DisplayPrecision uint   `json:"displayPrecision"`
}

type Notional added in v0.0.2

type Notional struct {
	RateBase         string  `json:"rateBase"`
	DisplayPrecision uint    `json:"displayPrecision"`
	Rate             float64 `json:"rate"`
	Balance          float64 `json:"balance"`
	TotalLocked      float64 `json:"totalLocked"`
}

type SessionArgs

type SessionArgs struct {
	SessionID string `json:"-"` // SessionID is transmit to client via cookie
}

SessionArgs holds SessionID for operation requests and repls

type SessionOpenRequest

type SessionOpenRequest struct {
	Login    string `json:"login"`
	Password string `json:"password"`
	OTP      string `json:"otp,omitempty"`
}

SessionOpenRequest holds args for open requests

type SessionReply

type SessionReply struct {
	SessionArgs
	Status     string `json:"status"`
	ValidUntil int64  `json:"valid_until"`
}

SessionReply holds session informations for operation replies

type SessionService

type SessionService int

SessionService receiver

func (*SessionService) Close

func (p *SessionService) Close(r *http.Request, request *SessionArgs, reply *SessionReply) error

Close operation close the session and set status to closed

func (*SessionService) Open

func (p *SessionService) Open(r *http.Request, request *SessionOpenRequest, reply *SessionReply) error

Open operation perform check regarding credentials and return a sessionID session has a status [open, close] and a validation period

func (*SessionService) Renew

func (p *SessionService) Renew(r *http.Request, request *SessionArgs, reply *SessionReply) error

Open operation perform check the session validity and extends the validation period

type StatsArgs

type StatsArgs struct {
}

type StatsReply

type StatsReply struct {
	Application string      `json:"application"`
	Version     string      `json:"version"`
	Host        string      `json:"host"`
	Statistics  *stats.Data `json:"statistics"`
}

type StatsService

type StatsService int

func (*StatsService) Status

func (t *StatsService) Status(r *http.Request, args *StatsArgs, result *StatsReply) error

type UserInfoRequest

type UserInfoRequest struct {
	SessionArgs
}

UserInfoRequest holds args for start requests

type UserInfoResponse

type UserInfoResponse struct {
	Email string `json:"email"`
}

UserInfoResponse holds args for start requests

type UserService

type UserService int

KYCService receiver

func (*UserService) Info

func (p *UserService) Info(r *http.Request, request *UserInfoRequest, reply *UserInfoResponse) error

Info operation return user's email

Jump to

Keyboard shortcuts

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