github.com/keybase/client/go@v0.0.0-20241007131713-f10651d043c8/kbnm/hostmanifest/hostmanifest.go (about)

     1  package hostmanifest
     2  
     3  // AppManifest is a serializable App metadata container
     4  type AppManifest interface {
     5  	// ID returns the app identifier, usually the same as the name.
     6  	ID() string
     7  	// BinPath returns the path of the binary for the NativeMessaging app target.
     8  	BinPath() string
     9  }
    10  
    11  // App contains the metadata that defines a NativeMessaging app.
    12  type App struct {
    13  	Name        string `json:"name"`
    14  	Description string `json:"description"`
    15  	Path        string `json:"path"`
    16  	Type        string `json:"type"`
    17  }
    18  
    19  // ID returns the app identifier
    20  func (app App) ID() string {
    21  	return app.Name
    22  }
    23  
    24  // BinPath returns the path of the binary for the NativeMessaging app target.
    25  func (app App) BinPath() string {
    26  	return app.Path
    27  }
    28  
    29  // ChromeApp is the App metadata but includes Chrome-specific fields.
    30  type ChromeApp struct {
    31  	App
    32  	AllowedOrigins []string `json:"allowed_origins"`
    33  }
    34  
    35  // FirefoxApp is the App metadata but includes Firefox-specific fields.
    36  type FirefoxApp struct {
    37  	App
    38  	AllowedExtensions []string `json:"allowed_extensions"`
    39  }
    40  
    41  // Installer handles writing whitelist information for enabling the
    42  // NativeMessaging app.
    43  type Installer interface {
    44  	Install(u User, app AppManifest) error
    45  	Uninstall(u User, app AppManifest) error
    46  }