api

package
v0.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 14, 2021 License: AGPL-3.0 Imports: 33 Imported by: 0

Documentation

Overview

Copyright © 2021 Yale University

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewServer

func NewServer(config common.Config) error

NewServer creates a new server and starts it

func NotImplemented

func NotImplemented(w http.ResponseWriter, r *http.Request)

NotImplemented handler is a temporary handler for endpoints not yet implemented

func TokenMiddleware

func TokenMiddleware(psk []byte, public map[string]string, h http.Handler) http.Handler

TokenMiddleware checks the tokens for non-public URLs

Types

type Ec2ImageResponse

type Ec2ImageResponse struct {
	Architecture   string              `json:"architecture"`
	CreatedAt      string              `json:"created_at"`
	CreatedBy      string              `json:"created_by"`
	Description    string              `json:"description"`
	ID             string              `json:"id"`
	Name           string              `json:"name"`
	Public         bool                `json:"public"`
	RootDeviceName string              `json:"root_device_name"`
	RootDeviceType string              `json:"root_device_type"`
	State          string              `json:"state"`
	Tags           []map[string]string `json:"tags"`
	Type           string              `json:"type"`
	Volumes        Ec2ImageVolumeMap   `json:"volumes"`
}

type Ec2ImageVolumeMap added in v0.2.0

type Ec2ImageVolumeMap map[string]*Ec2ImageVolumeResponse

func (*Ec2ImageVolumeMap) MarshalJSON added in v0.2.0

func (e *Ec2ImageVolumeMap) MarshalJSON() ([]byte, error)

MarshalJSON for Ec2ImageVolumeMap to return an empty object (`{}`) for nil values (instead of `null`)

type Ec2ImageVolumeResponse

type Ec2ImageVolumeResponse struct {
	DeleteOnTermination bool   `json:"delete_on_termination"`
	SnapshotId          string `json:"snapshot_id"`
	VolumeSize          int64  `json:"volume_size"`
	VolumeType          string `json:"volume_type"`
	Encrypted           bool   `json:"encrypted"`
}

type Ec2InstanceResponse

type Ec2InstanceResponse struct {
	Az        string              `json:"az"`
	CreatedAt string              `json:"created_at"`
	CreatedBy string              `json:"created_by"`
	ID        string              `json:"id"`
	Image     string              `json:"image"`
	Ip        string              `json:"ip"`
	Key       string              `json:"key"`
	Name      string              `json:"name"`
	Platform  string              `json:"platform"`
	Sgs       []map[string]string `json:"sgs"`
	State     string              `json:"state"`
	Subnet    string              `json:"subnet"`
	Tags      []map[string]string `json:"tags"`
	Type      string              `json:"type"`
	Volumes   map[string]*Volume  `json:"volumes"`
}

type Ec2SecurityGroupIpPermission added in v0.2.4

type Ec2SecurityGroupIpPermission struct {
	FromPort         int64                              `json:"from_port,omitempty"`
	IpProtocol       string                             `json:"ip_protocol,omitempty"`
	IpRanges         []*Ec2SecurityGroupIpRange         `json:"ip_ranges"`
	Ipv6Ranges       []*Ec2SecurityGroupIpv6Range       `json:"ipv_6_ranges"`
	PrefixListIds    []*Ec2SecurityGroupPrefixListId    `json:"prefix_list_ids"`
	ToPort           int64                              `json:"to_port,omitempty,omitempty"`
	UserIdGroupPairs []*Ec2SecurityGroupUserIdGroupPair `json:"user_id_group_pairs"`
}

type Ec2SecurityGroupIpRange added in v0.2.4

type Ec2SecurityGroupIpRange struct {
	CidrIp      string `json:"cidr_ip,omitempty"`
	Description string `json:"description,omitempty"`
}

type Ec2SecurityGroupIpv6Range added in v0.2.4

type Ec2SecurityGroupIpv6Range struct {
	CidrIpv6    string `json:"cidr_ipv_6,omitempty"`
	Description string `json:"description,omitempty"`
}

type Ec2SecurityGroupPrefixListId added in v0.2.4

type Ec2SecurityGroupPrefixListId struct {
	Description  string `json:"description,omitempty"`
	PrefixListId string `json:"prefix_list_id,omitempty"`
}

type Ec2SecurityGroupResponse added in v0.2.4

type Ec2SecurityGroupResponse struct {
	Description   string                          `json:"description"`
	GroupId       string                          `json:"group_id"`
	GroupName     string                          `json:"group_name"`
	IncomingRules []*Ec2SecurityGroupIpPermission `json:"incoming_rules"`
	OutgoingRules []*Ec2SecurityGroupIpPermission `json:"outgoing_rules"`
	Tags          []map[string]string             `json:"tags"`
	VpcId         string                          `json:"vpc_id"`
}

type Ec2SecurityGroupUserIdGroupPair added in v0.2.4

type Ec2SecurityGroupUserIdGroupPair struct {
	Description          string `json:"description,omitempty"`
	GroupId              string `json:"group_id,omitempty"`
	GroupName            string `json:"group_name,omitempty"`
	PeeringStatus        string `json:"peering_status,omitempty"`
	UserId               string `json:"user_id,omitempty"`
	VpcId                string `json:"vpc_id,omitempty"`
	VpcPeeringConnection string `json:"vpc_peering_connection,omitempty"`
}

type Ec2SnapshotResponse

type Ec2SnapshotResponse struct {
	CreatedAt   string              `json:"created_at"`
	Description string              `json:"description"`
	Encrypted   bool                `json:"encrypted"`
	ID          string              `json:"id"`
	Owner       string              `json:"owner"`
	Progress    string              `json:"progress"`
	Size        int64               `json:"size"`
	State       string              `json:"state"`
	Tags        []map[string]string `json:"tags"`
	VolumeID    string              `json:"volume_id"`
}

type Ec2VolumeAttachment

type Ec2VolumeAttachment struct {
	AttachTime          string `json:"attach_time"`
	Device              string `json:"device"`
	InstanceID          string `json:"instance_id"`
	State               string `json:"state"`
	VolumeID            string `json:"volume_id"`
	DeleteOnTermination bool   `json:"delete_on_termination"`
}

type Ec2VolumeResponse

type Ec2VolumeResponse struct {
	CreatedAt   string                 `json:"created_at"`
	ID          string                 `json:"id"`
	Size        int64                  `json:"size"`
	Iops        int64                  `json:"iops"`
	Encrypted   bool                   `json:"encrypted"`
	State       string                 `json:"state"`
	Tags        []map[string]string    `json:"tags"`
	Type        string                 `json:"type"`
	Attachments []*Ec2VolumeAttachment `json:"attachments"`
}

type LogWriter

type LogWriter struct {
	http.ResponseWriter
}

LogWriter is an http.ResponseWriter

func (LogWriter) Write

func (w LogWriter) Write(p []byte) (n int, err error)

Write log message if http response writer returns an error

type Volume

type Volume struct {
	AttachTime          string `json:"attach_time"`
	DeleteOnTermination bool   `json:"delete_on_termination"`
	Status              string `json:"status"`
	DeviceName          string `json:"device_name"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL