Documentation

Overview

    Package camtypes is like the types package, but higher-level and contains Camlistore-specific types. It exists mostly to break circular dependencies between index, search, and schema.

    Index

    Constants

    This section is empty.

    Variables

    View Source
    var (
    	ErrClientNoServer = addCamError("client-no-server", funcStr(func() string {
    		return fmt.Sprintf("No valid server defined. It can be set with the CAMLI_SERVER environment variable, or the --server flag, or in the \"servers\" section of %q (see https://camlistore.org/doc/client-config).", osutil.UserClientConfigPath())
    	}))
    	ErrClientNoPublicKey = addCamError("client-no-public-key", str("No public key configured: see 'camput init'."))
    )

    Functions

    func Err

    func Err(key string) error

      Err returns the error registered for key. It panics for an unregistered key.

      Types

      type BlobMeta

      type BlobMeta struct {
      	Ref  blob.Ref
      	Size uint32
      
      	// CamliType is non-empty if this blob is a Camlistore JSON
      	// schema blob. If so, this is its "camliType" attribute.
      	CamliType string
      }

        BlobMeta is the metadata kept for each known blob in the in-memory search index. It's kept as small as possible to save memory.

        type Claim

        type Claim struct {
        	BlobRef, Signer blob.Ref
        
        	Date time.Time
        	Type string // "set-attribute", "add-attribute", etc
        
        	// If an attribute modification
        	Attr, Value string
        	Permanode   blob.Ref
        
        	// If a DeleteClaim or a ShareClaim
        	Target blob.Ref
        }

        func (*Claim) String

        func (c *Claim) String() string

        type ClaimPtrsByDate

        type ClaimPtrsByDate []*Claim

        func (ClaimPtrsByDate) Len

        func (cl ClaimPtrsByDate) Len() int

        func (ClaimPtrsByDate) Less

        func (cl ClaimPtrsByDate) Less(i, j int) bool

        func (ClaimPtrsByDate) Swap

        func (cl ClaimPtrsByDate) Swap(i, j int)

        type ClaimsByDate

        type ClaimsByDate []Claim

        func (ClaimsByDate) Len

        func (cl ClaimsByDate) Len() int

        func (ClaimsByDate) Less

        func (cl ClaimsByDate) Less(i, j int) bool

        func (ClaimsByDate) String

        func (cl ClaimsByDate) String() string

        func (ClaimsByDate) Swap

        func (cl ClaimsByDate) Swap(i, j int)

        type Discovery

        type Discovery struct {
        	BlobRoot     string `json:"blobRoot"`
        	JSONSignRoot string `json:"jsonSignRoot"`
        	HelpRoot     string `json:"helpRoot"`
        	ImporterRoot string `json:"importerRoot"`
        	SearchRoot   string `json:"searchRoot"`
        	StatusRoot   string `json:"statusRoot"`
        	ShareRoot    string `json:"shareRoot"`
        
        	OwnerName string `json:"ownerName"` // Name of the owner.
        	UserName  string `json:"userName"`  // Name of the user.
        
        	// StorageGeneration is the UUID for the storage generation.
        	StorageGeneration string `json:"storageGeneration,omitempty"`
        	// StorageGenerationError is the error that occurred on generating the storage, if any.
        	StorageGenerationError string `json:"storageGenerationError,omitempty"`
        	// StorageInitTime is the initialization time of the storage.
        	StorageInitTime types.Time3339 `json:"storageInitTime,omitempty"`
        
        	ThumbVersion string `json:"thumbVersion"` // Thumbnailing version.
        
        	// AuthToken is an auth.OpAll token used by the web UI and the WebSocket.
        	// It is randomly generated the first time discovery is served.
        	AuthToken string `json:"authToken"`
        
        	// SyncHandlers lists discovery information about the available sync handlers.
        	SyncHandlers []SyncHandlerDiscovery `json:"syncHandlers,omitempty"`
        	// Signing contains discovery information for signing.
        	Signing *SignDiscovery `json:"signing,omitempty"`
        	// UIDiscovery contains discovery information for the UI.
        	*UIDiscovery
        }

          Discovery is the JSON response for discovery requests.

          type Edge

          type Edge struct {
          	From      blob.Ref
          	FromType  string // "permanode", "directory", etc
          	FromTitle string // name of source permanode or directory
          	To        blob.Ref
          	BlobRef   blob.Ref // the blob responsible for the edge relationship
          }

          func (*Edge) String

          func (e *Edge) String() string

          type EdgesToOpts

          type EdgesToOpts struct {
          	Max int
          }

          type FileInfo

          type FileInfo struct {
          	// FileName is the base name of the file or directory.
          	FileName string `json:"fileName"`
          
          	// Size is the size of file. It is not set for directories.
          	Size int64 `json:"size"`
          
          	// MIMEType may be set for files, but never for directories.
          	MIMEType string `json:"mimeType,omitempty"`
          
          	// Time is the earliest of any modtime, creation time, or EXIF
          	// original/modification times found. It may be omitted (zero)
          	// if unknown.
          	Time *types.Time3339 `json:"time,omitempty"`
          
          	// ModTime is the latest of any modtime, creation time, or EXIF
          	// original/modification times found. If ModTime doesn't differ
          	// from Time, ModTime is omitted (zero).
          	ModTime *types.Time3339 `json:"modTime,omitempty"`
          
          	// WholeRef is the digest of the entire file contents.
          	// This will be zero for non-regular files, and may also be zero
          	// for files above a certain size threshold.
          	WholeRef blob.Ref `json:"wholeRef,omitempty"`
          }

            FileInfo describes a file or directory.

            func (*FileInfo) IsImage

            func (fi *FileInfo) IsImage() bool

            func (*FileInfo) IsText

            func (fi *FileInfo) IsText() bool

            func (*FileInfo) IsVideo

            func (fi *FileInfo) IsVideo() bool

            type FileSearchResponse

            type FileSearchResponse struct {
            	SearchErrorResponse
            
            	Files []blob.Ref `json:"files"` // Refs of the result files. Never nil.
            }

              FileSearchResponse is the JSON response to a file search request.

              type ImageInfo

              type ImageInfo struct {
              	// Width is the visible width of the image (after any necessary EXIF rotation).
              	Width uint16 `json:"width"`
              	// Height is the visible height of the image (after any necessary EXIF rotation).
              	Height uint16 `json:"height"`
              }

                ImageInfo describes an image file.

                The Width and Height are uint16s to save memory in index/corpus.go, and that's the max size of a JPEG anyway. If we want to deal with larger sizes, we can use MaxUint16 as a sentinel to mean to look elsewhere. Or ditch this optimization.

                type Location

                type Location struct {
                	// Latitude and Longitude represent the point location of this blob,
                	// such as the place where a photo was taken.
                	//
                	// Negative values represent positions south of the equator or
                	// west of the prime meridian:
                	// Northern latitudes are positive, southern latitudes are negative.
                	// Eastern longitudes are positive, western longitudes are negative.
                	Latitude  float64 `json:"latitude"`
                	Longitude float64 `json:"longitude"`
                }

                  Location describes a file or permanode that has a location.

                  type LocationBounds

                  type LocationBounds struct {
                  	North float64 `json:"north"`
                  	South float64 `json:"south"`
                  	West  float64 `json:"west"`
                  	East  float64 `json:"east"`
                  }

                    LocationBounds is a location area delimited by its fields. See Location for the fields meanings and values.

                    func (LocationBounds) Expand

                    func (b LocationBounds) Expand(loc Location) LocationBounds

                      Expand returns a new LocationBounds nb. If either of loc coordinates is outside of b, nb is the dimensions of b expanded as little as possible in order to include loc. Otherwise, nb is just a copy of b.

                      type Longitude

                      type Longitude float64

                      func (Longitude) WrapTo180

                      func (l Longitude) WrapTo180() float64

                        WrapTo180 returns l converted to the [-180,180] interval.

                        type Path

                        type Path struct {
                        	Claim, Base, Target blob.Ref
                        	ClaimDate           time.Time
                        	Suffix              string // ??
                        }

                        func (*Path) String

                        func (p *Path) String() string

                        type PermanodeByAttrRequest

                        type PermanodeByAttrRequest struct {
                        	Signer blob.Ref
                        
                        	// Attribute to search. currently supported: "tag", "title"
                        	// If FuzzyMatch is set, this can be blank to search all
                        	// attributes.
                        	Attribute string
                        
                        	// The attribute value to find exactly (or roughly, if
                        	// FuzzyMatch is set)
                        	// If blank, the permanodes with Attribute as an attribute
                        	// (set to any value) are searched.
                        	Query string
                        
                        	FuzzyMatch bool // by default, an exact match is required
                        	MaxResults int  // optional max results
                        
                        	// At, if non-zero, specifies that the attribute must have been set at
                        	// the latest at At.
                        	At time.Time
                        }

                        type PublishRootDiscovery

                        type PublishRootDiscovery struct {
                        	Name string `json:"name"`
                        	// Prefix lists prefixes belonging to the publishing root.
                        	Prefix []string `json:"prefix"`
                        	// CurrentPermanode is the permanode associated with the publishing root.
                        	CurrentPermanode blob.Ref `json:"currentPermanode"`
                        }

                          PublishRootDiscovery contains discovery information for the publish roots.

                          type RecentPermanode

                          type RecentPermanode struct {
                          	Permanode   blob.Ref
                          	Signer      blob.Ref // may be zero (!Valid())
                          	LastModTime time.Time
                          }

                          func (RecentPermanode) Equal

                          type SearchErrorResponse

                          type SearchErrorResponse struct {
                          	Error     string `json:"error,omitempty"`     // The error message.
                          	ErrorType string `json:"errorType,omitempty"` // The type of the error.
                          }

                            SearchErrorResponse is the JSON error response for a search request.

                            type SignDiscovery

                            type SignDiscovery struct {
                            	// PublicKey is the path to the public signing key.
                            	PublicKey string `json:"publicKey,omitempty"`
                            	// PublicKeyBlobRef is the blob.Ref for the public key.
                            	PublicKeyBlobRef blob.Ref `json:"publicKeyBlobRef,omitempty"`
                            	// PublicKeyID is the ID of the public key.
                            	PublicKeyID string `json:"publicKeyId"`
                            	// SignHandler is the URL path prefix to the signing handler.
                            	SignHandler string `json:"signHandler"`
                            	// VerifyHandler it the URL path prefix to the signature verification handler.
                            	VerifyHandler string `json:"verifyHandler"`
                            }

                              SignDiscovery contains discovery information for jsonsign. It is part of the server's JSON response for discovery requests.

                              type StatusError

                              type StatusError struct {
                              	Error string `json:"error"`
                              	URL   string `json:"url,omitempty"` // optional
                              }

                              type SyncHandlerDiscovery

                              type SyncHandlerDiscovery struct {
                              	// From is the source of the sync handler.
                              	From string `json:"from"`
                              	// To is the destination of the sync handler.
                              	To string `json:"to"`
                              	// ToIndex is true if the sync is from a blob storage to an index.
                              	ToIndex bool `json:"toIndex"`
                              }

                                SyncHandlerDiscovery contains discovery information about a sync handler. It is part of the JSON response to discovery requests.

                                type UIDiscovery

                                type UIDiscovery struct {
                                	// UIRoot is the URL prefix path to the UI handler.
                                	UIRoot string `json:"uiRoot"`
                                	// UploadHelper is the path to the upload helper.
                                	UploadHelper string `json:"uploadHelper"`
                                	// DirectoryHelper is the path to the directory helper.
                                	DirectoryHelper string `json:"directoryHelper"`
                                	// DownloaderHelper is the path to the downloader helper.
                                	DownloadHelper string `json:"downloadHelper"`
                                	// PublishRoots lists discovery information for all publishing roots,
                                	// mapped by the respective root name.
                                	PublishRoots map[string]*PublishRootDiscovery `json:"publishRoots"`
                                	// MapClustering defines whether to cluster position markers on the map aspect.
                                	MapClustering bool `json:"mapClustering"`
                                }

                                  UIDiscovery contains discovery information for the user interface. It is part of the JSON response to discovery requests.

                                  type VerifyResponse

                                  type VerifyResponse struct {
                                  	// SignatureValid is true if the signature is valid.
                                  	SignatureValid bool `json:"signatureValid"`
                                  	// ErrorMessage contains the error that occurred, if any.
                                  	ErrorMessage string `json:"errorMessage,omitempty"`
                                  	// SignerKeyId is the ID of the signing key.
                                  	SignerKeyId string `json:"signerKeyId,omitempty"`
                                  	// VerifiedData contains the JSON values from the payload that we signed.
                                  	VerifiedData map[string]interface{} `json:"verifiedData,omitempty"`
                                  }

                                    VerifyResponse is the JSON response for a signature verification request.