rewards

package
v0.27.1-rc-crdb Latest Latest
Warning

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

Go to latest
Published: Dec 5, 2019 License: AGPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Invalid is a default value for offers that don't have correct type associated with it
	Invalid = OfferType(0)
	// FreeCredit is a type of offers used for Free Credit Program
	FreeCredit = OfferType(1)
	// Referral is a type of offers used for Referral Program
	Referral = OfferType(2)
	// Partner is an OfferType used be the Open Source Partner Program
	Partner = OfferType(3)
)
View Source
const (
	// Done is the status of an offer that is no longer in use.
	Done = OfferStatus(iota)
	// Default is the status of an offer when there is no active offer.
	Default
	// Active is the status of an offer that is currently in use.
	Active
)

Variables

View Source
var (
	// ErrPartners is the default error class for partners package.
	ErrPartners = errs.Class("partners")

	// ErrPartnerNotExist is returned when a particular partner does not exist.
	ErrPartnerNotExist = errs.Class("partner does not exist")
)
View Source
var (
	// ErrReachedMaxCapacity is the error class used when an offer has reached its redemption capacity.
	ErrReachedMaxCapacity = errs.Class("offer redemption has reached its capacity")
	// ErrOfferNotExist is the error class used when no current offer is set.
	ErrOfferNotExist = errs.Class("no current offer")
)
View Source
var DefaultPartnersDB = func() PartnersDB {
	list := DefaultPartners()
	db, err := NewPartnersStaticDB(&list)
	if err != nil {
		panic(err)
	}
	return db
}()

DefaultPartnersDB is current default settings.

Functions

func CanonicalUserAgentProduct added in v0.26.0

func CanonicalUserAgentProduct(product string) string

CanonicalUserAgentProduct returns canonicalizes the user agent product, which is suitable for lookups.

Types

type DB

type DB interface {
	ListAll(ctx context.Context) (Offers, error)
	GetActiveOffersByType(ctx context.Context, offerType OfferType) (Offers, error)
	Create(ctx context.Context, offer *NewOffer) (*Offer, error)
	Finish(ctx context.Context, offerID int) error
}

DB holds information about offer

architecture: Database

type NewOffer

type NewOffer struct {
	Name        string
	Description string

	AwardCredit   currency.USD
	InviteeCredit currency.USD

	RedeemableCap int

	AwardCreditDurationDays   int
	InviteeCreditDurationDays int

	ExpiresAt time.Time

	Status OfferStatus
	Type   OfferType
}

NewOffer holds information that's needed for creating a new offer

type Offer

type Offer struct {
	ID          int
	Name        string
	Description string

	AwardCredit   currency.USD
	InviteeCredit currency.USD

	AwardCreditDurationDays   int
	InviteeCreditDurationDays int

	RedeemableCap int

	ExpiresAt time.Time
	CreatedAt time.Time

	Status OfferStatus
	Type   OfferType
}

Offer contains info needed for giving users free credits through different offer programs

func (Offer) IsEmpty

func (offer Offer) IsEmpty() bool

IsEmpty evaluates whether or not an on offer is empty.

func (Offer) IsZero added in v0.26.0

func (offer Offer) IsZero() bool

IsZero returns whether it's equivalent to empty struct.

type OfferStatus

type OfferStatus int

OfferStatus represents the different stage an offer can have in its life-cycle.

func (OfferStatus) IsDefault added in v0.18.0

func (status OfferStatus) IsDefault() bool

IsDefault checks if a offer's status is default

type OfferType

type OfferType int

OfferType indicates the type of an offer

type Offers

type Offers []Offer

Offers contains a slice of offers.

type PartnerInfo added in v0.16.0

type PartnerInfo struct {
	Name string
	ID   string
	UUID *uuid.UUID
}

PartnerInfo contains information about a partner.

func (*PartnerInfo) UserAgent added in v0.26.0

func (p *PartnerInfo) UserAgent() string

UserAgent returns canonical user agent.

type PartnerList added in v0.26.0

type PartnerList struct {
	Partners []PartnerInfo
}

PartnerList defines a json struct for defining partners.

func DefaultPartners added in v0.26.0

func DefaultPartners() PartnerList

DefaultPartners lists Storj default open-source partners.

func PartnersListFromJSONFile added in v0.26.0

func PartnersListFromJSONFile(path string) (*PartnerList, error)

PartnersListFromJSONFile loads a json definition of partners.

type PartnersDB added in v0.26.0

type PartnersDB interface {
	// All returns all partners.
	All(ctx context.Context) ([]PartnerInfo, error)
	// ByName returns partner definitions for a given name.
	ByName(ctx context.Context, name string) (PartnerInfo, error)
	// ByID returns partner definition corresponding to an id.
	ByID(ctx context.Context, id string) (PartnerInfo, error)
	// ByUserAgent returns partner definition corresponding to an user agent string.
	ByUserAgent(ctx context.Context, agent string) (PartnerInfo, error)
}

PartnersDB allows access to partners database.

architecture: Database

type PartnersService added in v0.26.0

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

PartnersService allows manipulating and accessing partner information.

architecture: Service

func NewPartnersService added in v0.26.0

func NewPartnersService(log *zap.Logger, db PartnersDB, domains []string) *PartnersService

NewPartnersService returns a service for handling partner information.

func (*PartnersService) All added in v0.26.0

func (service *PartnersService) All(ctx context.Context) ([]PartnerInfo, error)

All returns all partners.

func (*PartnersService) ByName added in v0.27.0

func (service *PartnersService) ByName(ctx context.Context, name string) (PartnerInfo, error)

ByName looks up partner by name.

func (*PartnersService) ByUserAgent added in v0.27.0

func (service *PartnersService) ByUserAgent(ctx context.Context, userAgentString string) (PartnerInfo, error)

ByUserAgent looks up partner by user agent.

func (service *PartnersService) GeneratePartnerLink(ctx context.Context, offerName string) ([]string, error)

GeneratePartnerLink returns partner referral link.

func (*PartnersService) GetActiveOffer added in v0.26.0

func (service *PartnersService) GetActiveOffer(ctx context.Context, offers Offers, offerType OfferType, partnerID string) (offer *Offer, err error)

GetActiveOffer returns an offer that is active based on its type.

type PartnersStaticDB added in v0.26.0

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

PartnersStaticDB implements partner lookup based on a static definition.

architecture: Database Implementation

func NewPartnersStaticDB added in v0.26.0

func NewPartnersStaticDB(list *PartnerList) (*PartnersStaticDB, error)

NewPartnersStaticDB creates a new PartnersStaticDB.

func (*PartnersStaticDB) All added in v0.26.0

func (db *PartnersStaticDB) All(ctx context.Context) ([]PartnerInfo, error)

All returns all partners.

func (*PartnersStaticDB) ByID added in v0.26.0

func (db *PartnersStaticDB) ByID(ctx context.Context, id string) (PartnerInfo, error)

ByID returns partner definition corresponding to an id.

func (*PartnersStaticDB) ByName added in v0.26.0

func (db *PartnersStaticDB) ByName(ctx context.Context, name string) (PartnerInfo, error)

ByName returns partner definitions for a given name.

func (*PartnersStaticDB) ByUserAgent added in v0.26.0

func (db *PartnersStaticDB) ByUserAgent(ctx context.Context, agent string) (PartnerInfo, error)

ByUserAgent returns partner definition corresponding to an user agent product string.

type RedeemOffer added in v0.18.0

type RedeemOffer struct {
	RedeemableCap int
	Status        OfferStatus
	Type          OfferType
}

RedeemOffer holds field needed for redeem an offer

type UpdateOffer

type UpdateOffer struct {
	ID        int
	Status    OfferStatus
	ExpiresAt time.Time
}

UpdateOffer holds fields needed for update an offer

Jump to

Keyboard shortcuts

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