Documentation ¶
Overview ¶
Package clientintf holds client-global interfaces and helper functions.
This works as the root for client types.
Index ¶
- Constants
- Variables
- func ChunkIndexMatches(fm *rpc.FileMetadata, index int, hash []byte) bool
- func EstimatePostSize(content, descr string) (uint64, error)
- func EstimateUploadCost(size int64, feeRate uint64) (uint64, error)
- func FileChunkMAtoms(chunkIdx int, fm *rpc.FileMetadata) uint64
- func NetDialer(addr string, log slog.Logger) func(context.Context) (Conn, *tls.ConnectionState, error)
- func NewProxiedDialer(cfg ProxyDialerConfig) func(context.Context) (Conn, *tls.ConnectionState, error)
- func PostTitle(pm *rpc.PostMetadata) string
- type CertConfirmer
- type Conn
- type DecodedInvoice
- type Dialer
- type FreePaymentClient
- func (pc FreePaymentClient) DecodeInvoice(_ context.Context, invoice string) (DecodedInvoice, error)
- func (pc FreePaymentClient) GetInvoice(ctx context.Context, mat int64, cb func(int64)) (string, error)
- func (pc FreePaymentClient) IsInvoicePaid(context.Context, int64, string) error
- func (pc FreePaymentClient) IsPaymentCompleted(context.Context, string) (int64, error)
- func (pc FreePaymentClient) PayInvoice(context.Context, string) (int64, error)
- func (pc FreePaymentClient) PayInvoiceAmount(context.Context, string, int64) (int64, error)
- func (pc FreePaymentClient) PayScheme() string
- type ID
- type OnboardStage
- type OnboardState
- type PaidInviteKey
- func (u *PaidInviteKey) Decode(s string) error
- func (pik PaidInviteKey) Decrypt(box []byte) ([]byte, error)
- func (pik PaidInviteKey) Encode() (string, error)
- func (pik PaidInviteKey) Encrypt(message []byte) ([]byte, error)
- func (pik PaidInviteKey) MarshalJSON() ([]byte, error)
- func (pik PaidInviteKey) RVPoint() ratchet.RVPoint
- func (u PaidInviteKey) String() string
- func (u *PaidInviteKey) UnmarshalJSON(b []byte) error
- type PaymentClient
- type PostID
- type ProxyDialerConfig
- type RawRVID
- type ServerPolicy
- type ServerSessionIntf
- type UserID
Constants ¶
const LockFileName = "app.lock"
Variables ¶
Functions ¶
func ChunkIndexMatches ¶
func ChunkIndexMatches(fm *rpc.FileMetadata, index int, hash []byte) bool
ChunkIndexMatches returns true if the hash of the manifest file at the specified index matches the given hash.
func EstimatePostSize ¶
EstimatePostSize estimates the final size of a post share message, given the specified contents of the post.
func EstimateUploadCost ¶
Returns the estimate cost (in milliatoms) to upload a file of the given size to a remote user. The feeRate must be specified in milliatoms/byte.
func FileChunkMAtoms ¶
func FileChunkMAtoms(chunkIdx int, fm *rpc.FileMetadata) uint64
FileChunkMAtoms returns the cost to download the specified chunk from the file.
func NetDialer ¶
func NetDialer(addr string, log slog.Logger) func(context.Context) (Conn, *tls.ConnectionState, error)
NetDialer returns a client dialer function that always connects to a specific server address.
func NewProxiedDialer ¶
func NewProxiedDialer(cfg ProxyDialerConfig) func(context.Context) (Conn, *tls.ConnectionState, error)
NewProxiedDialer creates a client dialer function when a SOCKS proxy connection is necessary.
func PostTitle ¶
func PostTitle(pm *rpc.PostMetadata) string
PostTitle returns a suggested title for a given post. It fetches from the "title" attribute (if it exists) or from the first non-empty line of the main post content.
Types ¶
type CertConfirmer ¶
type CertConfirmer func(context.Context, *tls.ConnectionState, *zkidentity.PublicIdentity) error
CertConfirmer is a functiion that can be called to confirm whether a given server is safe.
type DecodedInvoice ¶
DecodedInvoice represents an invoice that was successfully decoded by the PaymentClient
func (*DecodedInvoice) IsExpired ¶
func (inv *DecodedInvoice) IsExpired(affordance time.Duration) bool
IsExpired returns whether this invoice has expired taking into account the specified affordance. In other words, it returns true if the expiration time of the invoice is before time.Now().Add(affordance).
type FreePaymentClient ¶
type FreePaymentClient struct{}
FreePaymentClient implements the PaymentClient interface for servers that offer the "free" payment scheme: namely, invoices are requested but there is nothing to pay for.
func (FreePaymentClient) DecodeInvoice ¶
func (pc FreePaymentClient) DecodeInvoice(_ context.Context, invoice string) (DecodedInvoice, error)
func (FreePaymentClient) GetInvoice ¶
func (FreePaymentClient) IsInvoicePaid ¶
func (FreePaymentClient) IsPaymentCompleted ¶ added in v0.1.4
func (FreePaymentClient) PayInvoice ¶
func (FreePaymentClient) PayInvoiceAmount ¶
func (FreePaymentClient) PayScheme ¶
func (pc FreePaymentClient) PayScheme() string
type ID ¶
type ID = zkidentity.ShortID
ID is a 32-byte global ID. This is used as an alias for all 32-byte arrays that are interpreted as unique IDs.
type OnboardStage ¶ added in v0.1.7
type OnboardStage string
OnboardStage tracks stages of the client onboarding process.
const ( StageFetchingInvite OnboardStage = "fetching_invite" StageInviteNoFunds OnboardStage = "invite_no_funds" StageRedeemingFunds OnboardStage = "redeeming_funds" StageWaitingFundsConfirm OnboardStage = "waiting_funds_confirm" StageOpeningOutbound OnboardStage = "opening_outbound" StageWaitingOutConfirm OnboardStage = "waiting_out_confirm" StageOpeningInbound OnboardStage = "opening_inbound" StageInitialKX OnboardStage = "initial_kx" StageOnboardDone OnboardStage = "done" )
type OnboardState ¶ added in v0.1.7
type OnboardState struct { Stage OnboardStage `json:"stage"` Key *PaidInviteKey `json:"key"` Invite *rpc.OOBPublicIdentityInvite `json:"invite"` RedeemTx *chainhash.Hash `json:"redeem_tx"` RedeemAmount dcrutil.Amount `json:"redeem_amount"` OutChannelID string `json:"out_channel_id"` InChannelID string `json:"in_channel_id"` }
OnboardState tracks a state of the client onboarding process.
type PaidInviteKey ¶ added in v0.1.7
type PaidInviteKey struct {
// contains filtered or unexported fields
}
PaidInviteKey is the encryption key that is used in paid invites.
func DecodePaidInviteKey ¶ added in v0.1.7
func DecodePaidInviteKey(s string) (PaidInviteKey, error)
DecodePaidInviteKey decodes a given string as a PaidInviteKey.
func GeneratePaidInviteKey ¶ added in v0.1.7
func GeneratePaidInviteKey() PaidInviteKey
GeneratePaidInviteKey generates a new, cryptographically secure paid invite key.
func (*PaidInviteKey) Decode ¶ added in v0.1.7
func (u *PaidInviteKey) Decode(s string) error
Decode the key from its string encoding.
func (PaidInviteKey) Decrypt ¶ added in v0.1.7
func (pik PaidInviteKey) Decrypt(box []byte) ([]byte, error)
Decrypt a message with this key.
func (PaidInviteKey) Encode ¶ added in v0.1.7
func (pik PaidInviteKey) Encode() (string, error)
Encode this key as a string.
func (PaidInviteKey) Encrypt ¶ added in v0.1.7
func (pik PaidInviteKey) Encrypt(message []byte) ([]byte, error)
Encrypt a message with this key.
func (PaidInviteKey) MarshalJSON ¶ added in v0.1.7
func (pik PaidInviteKey) MarshalJSON() ([]byte, error)
MarshalJSON marshals the id into a json string.
func (PaidInviteKey) RVPoint ¶ added in v0.1.7
func (pik PaidInviteKey) RVPoint() ratchet.RVPoint
RVPoint calculates the RV point that corresponds to this key.
func (PaidInviteKey) String ¶ added in v0.1.7
func (u PaidInviteKey) String() string
String returns the encoded paid invite key or an error string.
func (*PaidInviteKey) UnmarshalJSON ¶ added in v0.1.7
func (u *PaidInviteKey) UnmarshalJSON(b []byte) error
UnmarshalJSON unmarshals the json representation of a ShortID.
type PaymentClient ¶
type PaymentClient interface { PayScheme() string PayInvoice(context.Context, string) (int64, error) PayInvoiceAmount(context.Context, string, int64) (int64, error) GetInvoice(context.Context, int64, func(int64)) (string, error) DecodeInvoice(context.Context, string) (DecodedInvoice, error) IsInvoicePaid(context.Context, int64, string) error IsPaymentCompleted(context.Context, string) (int64, error) }
PaymentClient is the interface for clients that can pay for invoices.
type ProxyDialerConfig ¶
type ProxyDialerConfig struct { ServerAddr string ProxyAddr string ProxyUser string ProxyPass string TorIsolation bool CircuitLimit uint32 Log slog.Logger }
ProxyDialerConfig holds config fields for dialing to the server using a proxy.
type ServerPolicy ¶ added in v0.1.4
ServerPolicy is the policy for a given server session.
type ServerSessionIntf ¶
type ServerSessionIntf interface { SendPRPC(msg rpc.Message, payload interface{}, reply chan<- interface{}) error RequestClose(err error) PayClient() PaymentClient PaymentRates() (uint64, uint64) ExpirationDays() int Policy() ServerPolicy // Context returns a context that gets cancelled once this session stops // running. Context() context.Context }
ServerSessionIntf is the interface available from serverSession to consumers.