status-im/status-go

View on GitHub
services/stickers/service.go

Summary

Maintainability
A
35 mins
Test Coverage
A
91%
package stickers

import (
    "context"

    "github.com/ethereum/go-ethereum/p2p"
    ethRpc "github.com/ethereum/go-ethereum/rpc"
    "github.com/status-im/status-go/account"
    "github.com/status-im/status-go/ipfs"
    "github.com/status-im/status-go/multiaccounts/accounts"
    "github.com/status-im/status-go/params"
    "github.com/status-im/status-go/rpc"
    "github.com/status-im/status-go/server"
    "github.com/status-im/status-go/transactions"
)

// NewService initializes service instance.
func NewService(acc *accounts.Database, rpcClient *rpc.Client, accountsManager *account.GethManager, config *params.NodeConfig, downloader *ipfs.Downloader, httpServer *server.MediaServer, pendingTracker *transactions.PendingTxTracker) *Service {
    ctx, cancel := context.WithCancel(context.Background())

    return &Service{
        accountsDB:      acc,
        rpcClient:       rpcClient,
        accountsManager: accountsManager,
        keyStoreDir:     config.KeyStoreDir,
        downloader:      downloader,
        httpServer:      httpServer,
        ctx:             ctx,
        cancel:          cancel,
        api:             NewAPI(ctx, acc, rpcClient, accountsManager, pendingTracker, config.KeyStoreDir, downloader, httpServer),
    }
}

// Service is a browsers service.
type Service struct {
    accountsDB      *accounts.Database
    rpcClient       *rpc.Client
    accountsManager *account.GethManager
    downloader      *ipfs.Downloader
    keyStoreDir     string
    httpServer      *server.MediaServer
    ctx             context.Context
    cancel          context.CancelFunc
    api             *API
}

// Start a service.
func (s *Service) Start() error {
    return nil
}

// Stop a service.
func (s *Service) Stop() error {
    s.cancel()
    return nil
}

func (s *Service) API() *API {
    return s.api
}

// APIs returns list of available RPC APIs.
func (s *Service) APIs() []ethRpc.API {
    return []ethRpc.API{
        {
            Namespace: "stickers",
            Version:   "0.1.0",
            Service:   s.api,
        },
    }
}

// Protocols returns list of p2p protocols.
func (s *Service) Protocols() []p2p.Protocol {
    return nil
}