Documentation ¶
Index ¶
- Constants
- Variables
- func DoInit(repoRoot string, nBitsForKeypair int, testnet bool, password string, ...) error
- func GetDropboxApiToken(cfgBytes []byte) (string, error)
- func GetRepoPath(isTestnet bool) (string, error)
- func GetRepublishInterval(cfgBytes []byte) (time.Duration, error)
- func GetTestnetBootstrapAddrs(cfgBytes []byte) ([]string, error)
- func InitConfig(repoRoot string) (*config.Config, error)
- func MigrateUp(repoPath, dbPassword string, testnet bool) error
- type APIConfig
- type Case
- type Cases
- type Chat
- type ChatConversation
- type ChatMessage
- type Config
- type Coupon
- type Coupons
- type DataSharing
- type Datastore
- type Follower
- type Followers
- type Following
- type GroupChatMessage
- type Inventory
- type Metadata
- type Migration
- type ModeratedStores
- type Notifications
- type OfflineMessages
- type Pointers
- type Purchase
- type Purchases
- type ResolverConfig
- type SMTPSettings
- type Sale
- type Sales
- type Settings
- type SettingsData
- type ShippingAddress
- type TorConfig
- type TxMetadata
- type UnfundedSale
- type WalletConfig
Constants ¶
const RepoVersion = "5"
RepoVersion is the default version of new installations.
Variables ¶
var DataPushNodes = []string{
"QmPJuP4Myo8pGL1k56b85Q4rpaoSnmn5L3wLjYHTzbBrk1",
"QmRvbZttqh6CPFiMKWa1jPfRR9JxagYRv4wsvMAG4ADUTj",
"QmbkmTrfSjniyMUfYt9tVUcfZC8yeshVFYsnJ4kuzveYWc",
}
DataPushNodes define certain nodes that are open to store requests
var DefaultBootstrapAddresses = []string{
"/ip4/159.203.115.78/tcp/5001/ipfs/QmPJuP4Myo8pGL1k56b85Q4rpaoSnmn5L3wLjYHTzbBrk1",
"/ip4/104.131.19.44/tcp/5001/ipfs/QmRvbZttqh6CPFiMKWa1jPfRR9JxagYRv4wsvMAG4ADUTj",
"/ip4/45.32.171.119/tcp/5001/ipfs/QmbkmTrfSjniyMUfYt9tVUcfZC8yeshVFYsnJ4kuzveYWc",
}
DefaultBootstrapAddresses defines the addresses that are initially added to the OB node as peers
var ErrRepoExists = errors.New("IPFS configuration file exists. Reinitializing would overwrite your keys. Use -f to force overwrite.")
ErrRepoExists is thrown when trying to initialize a repo that already exists.
var MalformedConfigError error = errors.New("Config file is malformed")
var Migrations = []Migration{ migrations.Migration001, migrations.Migration002, migrations.Migration003, migrations.Migration004, migrations.Migration005, }
var TestnetBootstrapAddresses = []string{}
TestnetBootstrapAddresses defines the addresses that the client connects to initially
Functions ¶
func DoInit ¶
func DoInit(repoRoot string, nBitsForKeypair int, testnet bool, password string, mnemonic string, creationDate time.Time, dbInit func(string, []byte, string, time.Time) error) error
DoInit sets up the Phore Marketplace repository directories
func GetDropboxApiToken ¶
func GetRepoPath ¶ added in v0.9.4
GetRepoPath Returns the directory to store repo data in.
It depends on the OS and whether or not we are on testnet.
func GetRepublishInterval ¶ added in v0.9.3
func GetTestnetBootstrapAddrs ¶ added in v0.9.2
Types ¶
type APIConfig ¶ added in v0.2.0
type APIConfig struct { Authenticated bool AllowedIPs []string Username string Password string CORS *string Enabled bool HTTPHeaders map[string]interface{} SSL bool SSLCert string SSLKey string }
APIConfig represents the configuration for hosting a server.
func GetAPIConfig ¶ added in v0.2.0
type Case ¶ added in v0.5.1
type Case struct { CaseId string `json:"caseId"` Slug string `json:"slug"` Timestamp time.Time `json:"timestamp"` Title string `json:"title"` Thumbnail string `json:"thumbnail"` Total uint64 `json:"total"` BuyerId string `json:"buyerId"` BuyerHandle string `json:"buyerHandle"` VendorId string `json:"vendorId"` VendorHandle string `json:"vendorHandle"` BuyerOpened bool `json:"buyerOpened"` State string `json:"state"` Read bool `json:"read"` UnreadChatMessages int `json:"unreadChatMessages"` }
type Cases ¶ added in v0.3.0
type Cases interface { // Save a new case Put(caseID string, state pb.OrderState, buyerOpened bool, claim string) error // Update a case with the buyer info UpdateBuyerInfo(caseID string, buyerContract *pb.RicardianContract, buyerValidationErrors []string, buyerPayoutAddress string, buyerOutpoints []*pb.Outpoint) error // Update a case with the vendor info UpdateVendorInfo(caseID string, vendorContract *pb.RicardianContract, vendorValidationErrors []string, vendorPayoutAddress string, vendorOutpoints []*pb.Outpoint) error // Mark a case as read in the database MarkAsRead(caseID string) error // Mark a case as unread in the database MarkAsUnread(caseID string) error // Mark a case as closed in the database MarkAsClosed(caseID string, resolution *pb.DisputeResolution) error // Delete a case Delete(caseID string) error // Return the case metadata given a case ID GetCaseMetadata(caseID string) (buyerContract, vendorContract *pb.RicardianContract, buyerValidationErrors, vendorValidationErrors []string, state pb.OrderState, read bool, timestamp time.Time, buyerOpened bool, claim string, resolution *pb.DisputeResolution, err error) // Return the dispute payout data for a case GetPayoutDetails(caseID string) (buyerContract, vendorContract *pb.RicardianContract, buyerPayoutAddress, vendorPayoutAddress string, buyerOutpoints, vendorOutpoints []*pb.Outpoint, state pb.OrderState, err error) // Return the metadata for all cases given the search terms. Also returns the original size of the query. GetAll(stateFilter []pb.OrderState, searchTerm string, sortByAscending bool, sortByRead bool, limit int, exclude []string) ([]Case, int, error) // Return the number of cases in the database Count() int }
Cases interface saves/updates/deletes cases, marks them read/unread, counts them and returns metadata and other case details.
type Chat ¶ added in v0.3.1
type Chat interface { // Put a new chat message to the database Put(messageId string, peerID string, subject string, message string, timestamp time.Time, read bool, outgoing bool) error // Returns a list of open conversations GetConversations() []ChatConversation // A list of messages given a peer ID and a subject GetMessages(peerID string, subject string, offsetID string, limit int) []ChatMessage // Mark all chat messages for a peer as read. Returns the Id of the last seen message and // whether any messages were updated. // If message Id is specified it will only mark that message and earlier as read. MarkAsRead(peerID string, subject string, outgoing bool, messageId string) (string, bool, error) // Returns the incoming unread count for all messages of a given subject GetUnreadCount(subject string) (int, error) // Delete a message DeleteMessage(msgID string) error // Delete all messages from from a peer DeleteConversation(peerID string) error }
Chat interface defines basic database operations for chat information
type ChatConversation ¶ added in v0.3.1
type ChatMessage ¶ added in v0.3.1
type Config ¶
type Config interface { /* Initialize the database with the node's mnemonic seed and identity key. This will be called during repo init. */ Init(mnemonic string, identityKey []byte, password string, creationDate time.Time) error // Return the mnemonic string GetMnemonic() (string, error) // Return the identity key GetIdentityKey() ([]byte, error) // Returns the date the seed was created GetCreationDate() (time.Time, error) // Returns true if the database has failed to decrypt properly ex) wrong pw IsEncrypted() bool }
Config interface defines basic database operations for configuration information
type Coupons ¶ added in v0.5.0
type Coupons interface { // Put a list of coupons to the db Put(coupons []Coupon) error // Get a list of coupons given a slug Get(slug string) ([]Coupon, error) // Delete all coupons for a given slug Delete(slug string) error }
Coupons interface defines basic database operations for coupon information
type DataSharing ¶ added in v0.9.3
func GetDataSharing ¶ added in v0.9.3
func GetDataSharing(cfgBytes []byte) (*DataSharing, error)
type Datastore ¶
type Datastore interface { Config() Config Followers() Followers Following() Following OfflineMessages() OfflineMessages Pointers() Pointers Settings() Settings Inventory() Inventory Purchases() Purchases Sales() Sales Cases() Cases Chat() Chat Notifications() Notifications Coupons() Coupons TxMetadata() TxMetadata ModeratedStores() ModeratedStores Ping() error Close() }
type Followers ¶
type Followers interface { // Put a B58 encoded follower ID and proof to the database Put(follower string, proof []byte) error /* Get followers from the database. The offset and limit arguments can be used to for lazy loading. */ Get(offsetID string, limit int) ([]Follower, error) // Delete a follower from the database Delete(follower string) error // Return the number of followers in the database Count() int // Are we followed by this peer? FollowsMe(peerID string) bool }
Followers interface defines basic database operations for followers of the user
type Following ¶
type Following interface { // Put a B58 encoded peer ID to the database Put(peer string) error /* Get a list of following peers from the database. The offset and limit arguments can be used to for lazy loading. */ Get(offsetID string, limit int) ([]string, error) // Delete a peer from the database Delete(peer string) error // Return the number of peers in the database Count() int // Am I following this peer? IsFollowing(peerID string) bool }
Following interface defines basic database operations for peers the user is following
type GroupChatMessage ¶ added in v0.6.0
type Inventory ¶
type Inventory interface { /* Put an inventory count for a listing Override the existing count if it exists */ Put(slug string, variantIndex int, count int) error // Return the count for a specific listing including variants GetSpecific(slug string, variantIndex int) (int, error) // Get the count for all variants of a given listing Get(slug string) (map[int]int, error) // Fetch all inventory maps for each slug GetAll() (map[string]map[int]int, error) // Delete a listing and related count Delete(slug string, variant int) error // Delete all variants of a given slug DeleteAll(slug string) error }
Inventory interface defines basic database operations for inventory information
type ModeratedStores ¶ added in v0.5.1
type ModeratedStores interface { // Put a B58 encoded peer ID to the database Put(peerID string) error /* Get the moderated store list from the database. The offset and limit arguments can be used to for lazy loading. */ Get(offsetID string, limit int) ([]string, error) // Delete a moderated store from the database Delete(peerID string) error }
ModeratedStores interface defines basic database operations for moderated stores
type Notifications ¶ added in v0.3.1
type Notifications interface { // Put a new notification to the database Put(notifID string, notification notif.Data, notifType string, timestamp time.Time) error // Mark notification as read MarkAsRead(notifID string) error // Mark all notifications as read MarkAllAsRead() error // Fetch notifications from database GetAll(offsetID string, limit int, typeFilter []string) ([]notif.Notification, int, error) // Returns the unread count for all notifications GetUnreadCount() (int, error) // Delete a notification Delete(notifID string) error }
Notifications interface defines basic database operations for notification information
type OfflineMessages ¶
type OfflineMessages interface { // Put a URL from a retrieved message Put(url string) error // Does the given URL exist in the database? Has(url string) bool // Save a message with the url SetMessage(url string, message []byte) error // Get all entries with a message GetMessages() (map[string][]byte, error) // Delete the given message DeleteMessage(url string) error }
OfflineMessages interface defines basic database operations for messages
type Pointers ¶
type Pointers interface { // Put a pointer to the database Put(p ipfs.Pointer) error // Delete a pointer from the database Delete(id peer.ID) error // Delete all pointers of a given purpose DeleteAll(purpose ipfs.Purpose) error // Fetch a specific pointer Get(id peer.ID) (ipfs.Pointer, error) // Fetch all pointers of the given type GetByPurpose(purpose ipfs.Purpose) ([]ipfs.Pointer, error) // Fetch the entire list of pointers GetAll() ([]ipfs.Pointer, error) }
Pointers interface defines basic database operations for pointers
type Purchase ¶ added in v0.5.1
type Purchase struct { OrderId string `json:"orderId"` Slug string `json:"slug"` Timestamp time.Time `json:"timestamp"` Title string `json:"title"` Thumbnail string `json:"thumbnail"` Total uint64 `json:"total"` VendorId string `json:"vendorId"` VendorHandle string `json:"vendorHandle"` ShippingName string `json:"shippingName"` ShippingAddress string `json:"shippingAddress"` State string `json:"state"` Read bool `json:"read"` Moderated bool `json:"moderated"` UnreadChatMessages int `json:"unreadChatMessages"` }
type Purchases ¶ added in v0.1.2
type Purchases interface { // Save or update an order Put(orderID string, contract pb.RicardianContract, state pb.OrderState, read bool) error // Mark an order as read in the database MarkAsRead(orderID string) error // Mark an order as unread in the database MarkAsUnread(orderID string) error // Update the funding level for the contract UpdateFunding(orderId string, funded bool, records []*wallet.TransactionRecord) error // Delete an order Delete(orderID string) error // Return a purchase given the payment address GetByPaymentAddress(addr btc.Address) (contract *pb.RicardianContract, state pb.OrderState, funded bool, records []*wallet.TransactionRecord, err error) // Return a purchase given the order ID GetByOrderId(orderId string) (contract *pb.RicardianContract, state pb.OrderState, funded bool, records []*wallet.TransactionRecord, read bool, err error) // Return the metadata for all purchases. Also returns the original size of the query. GetAll(stateFilter []pb.OrderState, searchTerm string, sortByAscending bool, sortByRead bool, limit int, exclude []string) ([]Purchase, int, error) // Return the number of purchases in the database Count() int }
Purchases interface defines basic database operations for purchase information
type ResolverConfig ¶ added in v0.9.2
func GetResolverConfig ¶ added in v0.9.2
func GetResolverConfig(cfgBytes []byte) (*ResolverConfig, error)
type SMTPSettings ¶
type Sale ¶ added in v0.5.1
type Sale struct { OrderId string `json:"orderId"` Slug string `json:"slug"` Timestamp time.Time `json:"timestamp"` Title string `json:"title"` Thumbnail string `json:"thumbnail"` Total uint64 `json:"total"` BuyerId string `json:"buyerId"` BuyerHandle string `json:"buyerHandle"` ShippingName string `json:"shippingName"` ShippingAddress string `json:"shippingAddress"` State string `json:"state"` Read bool `json:"read"` Moderated bool `json:"moderated"` UnreadChatMessages int `json:"unreadChatMessages"` }
type Sales ¶ added in v0.1.2
type Sales interface { // Save or update a sale Put(orderID string, contract pb.RicardianContract, state pb.OrderState, read bool) error // Mark an order as read in the database MarkAsRead(orderID string) error // Mark an order as unread in the database MarkAsUnread(orderID string) error // Update the funding level for the contract UpdateFunding(orderId string, funded bool, records []*wallet.TransactionRecord) error // Delete an order Delete(orderID string) error // Return a sale given the payment address GetByPaymentAddress(addr btc.Address) (contract *pb.RicardianContract, state pb.OrderState, funded bool, records []*wallet.TransactionRecord, err error) // Return a sale given the order ID GetByOrderId(orderId string) (contract *pb.RicardianContract, state pb.OrderState, funded bool, records []*wallet.TransactionRecord, read bool, err error) // Return the metadata for all sales. Also returns the original size of the query. GetAll(stateFilter []pb.OrderState, searchTerm string, sortByAscending bool, sortByRead bool, limit int, exclude []string) ([]Sale, int, error) // Return unfunded orders which failed to detect funding because the chain was synced passed the block containing the transaction when the order was recorded. GetNeedsResync() ([]UnfundedSale, error) // Set whether the given order needs a blockchain resync SetNeedsResync(orderID string, needsResync bool) error // Return the number of sales in the database Count() int }
Sales interface defines basic database operations for order/sale information
type Settings ¶
type Settings interface { // Put settings to the database, overriding all fields Put(settings SettingsData) error // Update all non-nil fields Update(settings SettingsData) error // Return the settings object Get() (SettingsData, error) // Delete all settings data Delete() error }
Settings interface defines basic database operations for settings information
type SettingsData ¶
type SettingsData struct { PaymentDataInQR *bool `json:"paymentDataInQR"` ShowNotifications *bool `json:"showNotifications"` ShowNsfw *bool `json:"showNsfw"` ShippingAddresses *[]ShippingAddress `json:"shippingAddresses"` LocalCurrency *string `json:"localCurrency"` Country *string `json:"country"` TermsAndConditions *string `json:"termsAndConditions"` RefundPolicy *string `json:"refundPolicy"` BlockedNodes *[]string `json:"blockedNodes"` StoreModerators *[]string `json:"storeModerators"` MisPaymentBuffer *float32 `json:"mispaymentBuffer"` SMTPSettings *SMTPSettings `json:"smtpSettings"` Version *string `json:"version"` }
type ShippingAddress ¶
type ShippingAddress struct { Name string `json:"name"` Company string `json:"company"` AddressLineOne string `json:"addressLineOne"` AddressLineTwo string `json:"addressLineTwo"` City string `json:"city"` State string `json:"state"` Country string `json:"country"` PostalCode string `json:"postalCode"` AddressNotes string `json:"addressNotes"` }
type TorConfig ¶ added in v0.5.0
func GetTorConfig ¶ added in v0.5.0
type TxMetadata ¶ added in v0.5.1
type TxMetadata interface { // Put metadata for a transaction to the db Put(m Metadata) error // Get the metadata given the txid Get(txid string) (Metadata, error) // Get a map of the txid to each metadata object GetAll() (map[string]Metadata, error) // Delete a metadata entry Delete(txid string) error }
TxMetadata interface defines basic database operations for transaction metadata
type UnfundedSale ¶ added in v0.9.4
type WalletConfig ¶ added in v0.2.0
type WalletConfig struct { Type string MaxFee int HighFeeDefault int MediumFeeDefault int LowFeeDefault int RPCLocation string }
func GetWalletConfig ¶ added in v0.2.0
func GetWalletConfig(cfgBytes []byte) (*WalletConfig, error)