ical

package module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Oct 26, 2020 License: MIT Imports: 6 Imported by: 0

README

ical

PkgGoDev

parse iCal file based on RFC 5545

Example

https://play.golang.org/p/SDQl0Cwc67J

package main

import (
	"fmt"
	"log"
	"net/http"

	"github.com/knsh14/ical"
	"github.com/knsh14/ical/parser"
)

func main() {
	res, err := http.Get("https://www.google.com/calendar/ical/japanese__ja%40holiday.calendar.google.com/public/basic.ics")
	if err != nil {
		log.Fatal(err)
	}
	cal, err := parser.Parse(res.Body)
	if err != nil {
		log.Fatal(err)
	}
	for _, c := range cal.Components {
		if e, ok := c.(*ical.Event); ok {
			fmt.Println(e.Summary.Value)
		}
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewTimeType

func NewTimeType(params parameter.Container, s string) (types.TimeValue, error)

func NewValidationError added in v0.1.0

func NewValidationError(c component.Type, p property.Name, msg string) error

Types

type Alarm

type Alarm interface {
	CalendarNode
	// contains filtered or unexported methods
}

Alarm is VALARM https://tools.ietf.org/html/rfc5545#section-3.6.6

type AlarmAudio

type AlarmAudio struct {
	// require
	Action  *property.Action
	Trigger *property.Trigger

	Duration    *property.Duration
	RepeatCount *property.RepeatCount
	Attachment  *property.Attachment

	XProperties    []*property.NonStandard
	IANAProperties []*property.IANA
}

func NewAlarmAudio

func NewAlarmAudio() *AlarmAudio

func (*AlarmAudio) Decode added in v0.1.0

func (aa *AlarmAudio) Decode(w io.Writer) error

func (*AlarmAudio) SetAction

func (aa *AlarmAudio) SetAction(params parameter.Container, value types.Text) error

func (*AlarmAudio) SetAttachment

func (aa *AlarmAudio) SetAttachment(params parameter.Container, value types.AttachmentValue) error

func (*AlarmAudio) SetDuration

func (aa *AlarmAudio) SetDuration(params parameter.Container, value types.Duration) error

func (*AlarmAudio) SetRepeatCount

func (aa *AlarmAudio) SetRepeatCount(params parameter.Container, value types.Integer) error

func (*AlarmAudio) SetTrigger

func (aa *AlarmAudio) SetTrigger(params parameter.Container, value types.TriggerValue) error

func (*AlarmAudio) Validate added in v0.1.0

func (aa *AlarmAudio) Validate() error

type AlarmDisplay

type AlarmDisplay struct {
	// require
	Action      *property.Action
	Description *property.Description
	Trigger     *property.Trigger

	Duration    *property.Duration
	RepeatCount *property.RepeatCount

	XProperties    []*property.NonStandard
	IANAProperties []*property.IANA
}

func (*AlarmDisplay) Decode added in v0.1.0

func (ad *AlarmDisplay) Decode(w io.Writer) error

func (*AlarmDisplay) SetAction

func (ad *AlarmDisplay) SetAction(params parameter.Container, value types.Text) error

func (*AlarmDisplay) SetDescription

func (ad *AlarmDisplay) SetDescription(params parameter.Container, value types.Text) error

func (*AlarmDisplay) SetDuration

func (ad *AlarmDisplay) SetDuration(params parameter.Container, value types.Duration) error

func (*AlarmDisplay) SetRepeatCount

func (ad *AlarmDisplay) SetRepeatCount(params parameter.Container, value types.Integer) error

func (*AlarmDisplay) SetTrigger

func (ad *AlarmDisplay) SetTrigger(params parameter.Container, value types.TriggerValue) error

func (*AlarmDisplay) Validate added in v0.1.0

func (ad *AlarmDisplay) Validate() error

type AlarmEmail

type AlarmEmail struct {
	// require
	Action      *property.Action
	Description *property.Description
	Trigger     *property.Trigger
	Summary     *property.Summary
	Attendees   []*property.Attendee

	Duration    *property.Duration
	RepeatCount *property.RepeatCount

	Attachments    []*property.Attachment
	XProperties    []*property.NonStandard
	IANAProperties []*property.IANA
}

func (*AlarmEmail) AddAttachment

func (ae *AlarmEmail) AddAttachment(params parameter.Container, value types.AttachmentValue) error

func (*AlarmEmail) AddAttendee

func (ae *AlarmEmail) AddAttendee(params parameter.Container, value types.CalenderUserAddress) error

func (*AlarmEmail) Decode added in v0.1.0

func (ae *AlarmEmail) Decode(w io.Writer) error

func (*AlarmEmail) SetAction

func (ae *AlarmEmail) SetAction(params parameter.Container, value types.Text) error

func (*AlarmEmail) SetDescription

func (ae *AlarmEmail) SetDescription(params parameter.Container, value types.Text) error

func (*AlarmEmail) SetDuration

func (ae *AlarmEmail) SetDuration(params parameter.Container, value types.Duration) error

func (*AlarmEmail) SetRepeatCount

func (ae *AlarmEmail) SetRepeatCount(params parameter.Container, value types.Integer) error

func (*AlarmEmail) SetSummary

func (ae *AlarmEmail) SetSummary(params parameter.Container, value types.Text) error

func (*AlarmEmail) SetTrigger

func (ae *AlarmEmail) SetTrigger(params parameter.Container, value types.TriggerValue) error

func (*AlarmEmail) Validate added in v0.1.0

func (ae *AlarmEmail) Validate() error

type Calendar added in v0.1.0

type Calendar struct {
	// required field
	ProdID  *property.ProdID
	Version *property.Version

	// optional
	CalScale *property.CalScale
	Method   *property.Method

	XProperties    []*property.NonStandard // https://tools.ietf.org/html/rfc5545#section-3.8.8.2
	IANAProperties []*property.IANA

	Components []CalenderComponent
}

Calendar is root object of ical https://tools.ietf.org/html/rfc5545#section-3.4 https://tools.ietf.org/html/rfc5545#section-3.5 https://tools.ietf.org/html/rfc5545#section-3.6

func NewCalendar added in v0.1.0

func NewCalendar() *Calendar

func (*Calendar) Decode added in v0.1.0

func (c *Calendar) Decode(w io.Writer) error

func (*Calendar) SetCalScale added in v0.1.0

func (c *Calendar) SetCalScale(params parameter.Container, value types.Text) error

func (*Calendar) SetMethod added in v0.1.0

func (c *Calendar) SetMethod(params parameter.Container, value types.Text) error

func (*Calendar) SetProdID added in v0.1.0

func (c *Calendar) SetProdID(params parameter.Container, value types.Text) error

func (*Calendar) SetVersion added in v0.1.0

func (c *Calendar) SetVersion(params parameter.Container, value types.Text) error

func (*Calendar) Validate added in v0.1.0

func (c *Calendar) Validate() error

type CalendarNode added in v0.1.0

type CalendarNode interface {
	Decode(w io.Writer) error
	Validate() error
}

type CalenderComponent

type CalenderComponent interface {
	CalendarNode
	// contains filtered or unexported methods
}

type Daylight

type Daylight struct {
	// required
	DateTimeStart      *property.DateTimeStart
	TimezoneOffsetFrom *property.TimezoneOffsetFrom
	TimezoneOffsetTo   *property.TimezoneOffsetTo

	// optional
	RecurrenceRule *property.RecurrenceRule

	Comment             *property.Comment
	RecurrenceDateTimes *property.RecurrenceDateTimes
	TimezoneName        *property.TimezoneName

	XProperties    []*property.NonStandard
	IANAProperties []*property.IANA
}

Daylight is sub component of timezone

func NewDaylight

func NewDaylight() *Daylight

func (*Daylight) Decode added in v0.1.0

func (d *Daylight) Decode(w io.Writer) error

func (*Daylight) SetComment

func (d *Daylight) SetComment(params parameter.Container, value types.Text) error

func (*Daylight) SetRecurrenceDateTimes

func (d *Daylight) SetRecurrenceDateTimes(params parameter.Container, values []types.RecurrenceDateTimeValue) error

func (*Daylight) SetRecurrenceRule

func (d *Daylight) SetRecurrenceRule(params parameter.Container, value types.RecurrenceRule) error

func (*Daylight) SetStart

func (d *Daylight) SetStart(params parameter.Container, value types.DateTime) error

func (*Daylight) SetTimezoneName

func (d *Daylight) SetTimezoneName(params parameter.Container, value types.Text) error

func (*Daylight) SetTimezoneOffsetFrom

func (d *Daylight) SetTimezoneOffsetFrom(params parameter.Container, value types.UTCOffset) error

func (*Daylight) SetTimezoneOffsetTo

func (d *Daylight) SetTimezoneOffsetTo(params parameter.Container, value types.UTCOffset) error

func (*Daylight) Validate added in v0.1.0

func (d *Daylight) Validate() error

type Event

type Event struct {
	// required fields
	UID           *property.UID
	DateTimeStamp *property.DateTimeStamp

	// required if Calender obj dont have METHOD property
	DateTimeStart *property.DateTimeStart

	Class            *property.Class
	DateTimeCreated  *property.DateTimeCreated
	Description      *property.Description
	Geo              *property.Geo
	LastModified     *property.LastModified
	Location         *property.Location
	Organizer        *property.Organizer
	Priority         *property.Priority
	SequenceNumber   *property.SequenceNumber
	Status           *property.Status
	Summary          *property.Summary
	TimeTransparency *property.TimeTransparency
	URL              *property.URL
	RecurrenceID     *property.RecurrenceID

	// The following is OPTIONAL,
	// but SHOULD NOT occur more than once.
	RecurrenceRule *property.RecurrenceRule

	// optional, but End or Duration.
	DateTimeEnd *property.DateTimeEnd
	Duration    *property.Duration

	// optional but may occur more than once
	Attachments         []*property.Attachment
	Attendees           []*property.Attendee
	Categories          []*property.Categories
	Comments            []*property.Comment
	Contacts            []*property.Contact
	ExceptionDateTimes  []*property.ExceptionDateTimes
	RequestStatus       []*property.RequestStatus
	RelatedTos          []*property.RelatedTo
	Resources           []*property.Resources
	RecurrenceDateTimes []*property.RecurrenceDateTimes

	Alarms []Alarm

	XProperties    []*property.NonStandard
	IANAProperties []*property.IANA
}

func NewEvent

func NewEvent() *Event

func (*Event) AddAlarm

func (e *Event) AddAlarm(a Alarm)

func (*Event) AddAttachment

func (e *Event) AddAttachment(params parameter.Container, value types.AttachmentValue) error

func (*Event) AddAttendee

func (e *Event) AddAttendee(params parameter.Container, value types.CalenderUserAddress) error

func (*Event) AddCategories

func (e *Event) AddCategories(params parameter.Container, values []types.Text) error

func (*Event) AddComment

func (e *Event) AddComment(params parameter.Container, value types.Text) error

func (*Event) AddContact

func (e *Event) AddContact(params parameter.Container, value types.Text) error

func (*Event) AddExceptionDateTimes

func (e *Event) AddExceptionDateTimes(params parameter.Container, values []types.TimeValue) error

func (*Event) AddRecurrenceDateTimes

func (e *Event) AddRecurrenceDateTimes(params parameter.Container, values []types.RecurrenceDateTimeValue) error

func (*Event) AddRelatedTo

func (e *Event) AddRelatedTo(params parameter.Container, value types.Text) error

func (*Event) AddRequestStatus

func (e *Event) AddRequestStatus(params parameter.Container, value types.Text) error

func (*Event) AddResources

func (e *Event) AddResources(params parameter.Container, values []types.Text) error

func (*Event) Decode added in v0.1.0

func (e *Event) Decode(w io.Writer) error

func (*Event) SetClass

func (e *Event) SetClass(params parameter.Container, value types.Text) error

func (*Event) SetDateTimeCreated

func (e *Event) SetDateTimeCreated(params parameter.Container, value types.DateTime) error

func (*Event) SetDateTimeEnd

func (e *Event) SetDateTimeEnd(params parameter.Container, value types.TimeValue) error

func (*Event) SetDateTimeStamp

func (e *Event) SetDateTimeStamp(params parameter.Container, value types.DateTime) error

func (*Event) SetDateTimeStart

func (e *Event) SetDateTimeStart(params parameter.Container, value types.TimeValue) error

func (*Event) SetDescription

func (e *Event) SetDescription(params parameter.Container, value types.Text) error

func (*Event) SetDuration

func (e *Event) SetDuration(params parameter.Container, value types.Duration) error

func (*Event) SetGeo

func (e *Event) SetGeo(params parameter.Container, latitude, longitude types.Float) error

func (*Event) SetGeoWithText

func (e *Event) SetGeoWithText(params parameter.Container, value types.Text) error

func (*Event) SetLastModified

func (e *Event) SetLastModified(params parameter.Container, value types.DateTime) error

func (*Event) SetLocation

func (e *Event) SetLocation(params parameter.Container, value types.Text) error

func (*Event) SetOrganizer

func (e *Event) SetOrganizer(params parameter.Container, value types.CalenderUserAddress) error

func (*Event) SetPriority

func (e *Event) SetPriority(params parameter.Container, value types.Integer) error

func (*Event) SetRecurrenceID

func (e *Event) SetRecurrenceID(params parameter.Container, value types.TimeValue) error

func (*Event) SetRecurrenceRule

func (e *Event) SetRecurrenceRule(params parameter.Container, value types.RecurrenceRule) error

func (*Event) SetSequenceNumber

func (e *Event) SetSequenceNumber(params parameter.Container, value types.Integer) error

func (*Event) SetStatus

func (e *Event) SetStatus(params parameter.Container, value types.Text) error

func (*Event) SetSummary

func (e *Event) SetSummary(params parameter.Container, value types.Text) error

func (*Event) SetTimeTransparency

func (e *Event) SetTimeTransparency(params parameter.Container, value property.TransparencyValueType) error

func (*Event) SetUID

func (e *Event) SetUID(params parameter.Container, value types.Text) error

func (*Event) SetURL

func (e *Event) SetURL(params parameter.Container, value types.URI) error

func (*Event) Validate

func (e *Event) Validate() error

type Standard

type Standard struct {
	// required
	DateTimeStart      *property.DateTimeStart
	TimezoneOffsetFrom *property.TimezoneOffsetFrom
	TimezoneOffsetTo   *property.TimezoneOffsetTo

	// optional
	RecurrenceRule *property.RecurrenceRule

	Comment             *property.Comment
	RecurrenceDateTimes *property.RecurrenceDateTimes
	TimezoneName        *property.TimezoneName

	XProperties    []*property.NonStandard
	IANAProperties []*property.IANA
}

Standard is sub component of timezone

func NewStandard

func NewStandard() *Standard

func (*Standard) Decode added in v0.1.0

func (s *Standard) Decode(w io.Writer) error

func (*Standard) SetComment

func (s *Standard) SetComment(params parameter.Container, value types.Text) error

func (*Standard) SetRecurrenceDateTimes

func (s *Standard) SetRecurrenceDateTimes(params parameter.Container, values []types.RecurrenceDateTimeValue) error

func (*Standard) SetRecurrenceRule

func (s *Standard) SetRecurrenceRule(params parameter.Container, value types.RecurrenceRule) error

func (*Standard) SetStart

func (s *Standard) SetStart(params parameter.Container, value types.DateTime) error

func (*Standard) SetTimezoneName

func (s *Standard) SetTimezoneName(params parameter.Container, value types.Text) error

func (*Standard) SetTimezoneOffsetFrom

func (s *Standard) SetTimezoneOffsetFrom(params parameter.Container, value types.UTCOffset) error

func (*Standard) SetTimezoneOffsetTo

func (s *Standard) SetTimezoneOffsetTo(params parameter.Container, value types.UTCOffset) error

func (*Standard) Validate added in v0.1.0

func (s *Standard) Validate() error

type Timezone

type Timezone struct {
	// required field
	TimezoneIdentifier *property.TimezoneIdentifier

	LastModified *property.LastModified
	TimezoneURL  *property.TimezoneURL

	Standards []*Standard
	Daylights []*Daylight

	XProperties    []*property.NonStandard
	IANAProperties []*property.IANA
}

Timezone is VTIMEZONE https://tools.ietf.org/html/rfc5545#section-3.6.5

func NewTimezone

func NewTimezone() *Timezone

func (*Timezone) Decode added in v0.1.0

func (tz *Timezone) Decode(w io.Writer) error

func (*Timezone) SetLastModified

func (tz *Timezone) SetLastModified(params parameter.Container, value types.DateTime) error

func (*Timezone) SetTimezoneID

func (tz *Timezone) SetTimezoneID(params parameter.Container, value types.Text) error

func (*Timezone) SetTimezoneURL

func (tz *Timezone) SetTimezoneURL(params parameter.Container, value types.URI) error

func (*Timezone) Validate added in v0.1.0

func (tz *Timezone) Validate() error

type ToDo

type ToDo struct {
	// required fields
	UID           *property.UID
	DateTimeStamp *property.DateTimeStamp

	Class             *property.Class
	DateTimeCompleted *property.DateTimeCompleted
	DateTimeCreated   *property.DateTimeCreated
	Description       *property.Description
	DateTimeStart     *property.DateTimeStart
	Geo               *property.Geo
	LastModified      *property.LastModified
	Location          *property.Location
	Organizer         *property.Organizer
	PercentComplete   *property.PercentComplete
	Priority          *property.Priority
	RecurrenceID      *property.RecurrenceID
	SequenceNumber    *property.SequenceNumber
	Status            *property.Status
	Summary           *property.Summary
	URL               *property.URL

	// The following is OPTIONAL,
	// but SHOULD NOT occur more than once.
	RecurrenceRule *property.RecurrenceRule

	// optional, but Due or Duration.
	DateTimeDue *property.DateTimeDue // diff
	Duration    *property.Duration

	Attachments         []*property.Attachment
	Attendees           []*property.Attendee
	Categories          []*property.Categories
	Comments            []*property.Comment
	Contacts            []*property.Contact
	ExceptionDateTimes  []*property.ExceptionDateTimes
	RequestStatus       []*property.RequestStatus
	RelatedTos          []*property.RelatedTo
	Resources           []*property.Resources
	RecurrenceDateTimes []*property.RecurrenceDateTimes

	Alarms []Alarm

	XProperties    []*property.NonStandard
	IANAProperties []*property.IANA
}

ToDo is VTODO / https://tools.ietf.org/html/rfc5545#section-3.6.2

func NewToDo

func NewToDo() *ToDo

func (*ToDo) AddAlarm

func (todo *ToDo) AddAlarm(a Alarm)

func (*ToDo) AddAttachment

func (todo *ToDo) AddAttachment(params parameter.Container, value types.AttachmentValue) error

func (*ToDo) AddAttendee

func (todo *ToDo) AddAttendee(params parameter.Container, value types.CalenderUserAddress) error

func (*ToDo) AddCategories

func (todo *ToDo) AddCategories(params parameter.Container, values []types.Text) error

func (*ToDo) AddComment

func (todo *ToDo) AddComment(params parameter.Container, value types.Text) error

func (*ToDo) AddContact

func (todo *ToDo) AddContact(params parameter.Container, value types.Text) error

func (*ToDo) AddExceptionDateTimes

func (todo *ToDo) AddExceptionDateTimes(params parameter.Container, values []types.TimeValue) error

func (*ToDo) AddRecurrenceDateTimes

func (todo *ToDo) AddRecurrenceDateTimes(params parameter.Container, values []types.RecurrenceDateTimeValue) error

func (*ToDo) AddRelatedTo

func (todo *ToDo) AddRelatedTo(params parameter.Container, value types.Text) error

func (*ToDo) AddRequestStatus

func (todo *ToDo) AddRequestStatus(params parameter.Container, value types.Text) error

func (*ToDo) AddResources

func (todo *ToDo) AddResources(params parameter.Container, values []types.Text) error

func (*ToDo) Decode added in v0.1.0

func (todo *ToDo) Decode(w io.Writer) error

func (*ToDo) SetClass

func (todo *ToDo) SetClass(params parameter.Container, value types.Text) error

func (*ToDo) SetDateTimeCompleted

func (todo *ToDo) SetDateTimeCompleted(params parameter.Container, value types.DateTime) error

func (*ToDo) SetDateTimeCreated

func (todo *ToDo) SetDateTimeCreated(params parameter.Container, value types.DateTime) error

func (*ToDo) SetDateTimeDue

func (todo *ToDo) SetDateTimeDue(params parameter.Container, value types.TimeValue) error

func (*ToDo) SetDateTimeStamp

func (todo *ToDo) SetDateTimeStamp(params parameter.Container, value types.DateTime) error

func (*ToDo) SetDateTimeStart

func (todo *ToDo) SetDateTimeStart(params parameter.Container, value types.TimeValue) error

func (*ToDo) SetDescription

func (todo *ToDo) SetDescription(params parameter.Container, value types.Text) error

func (*ToDo) SetDuration

func (todo *ToDo) SetDuration(params parameter.Container, value types.Duration) error

func (*ToDo) SetGeo

func (todo *ToDo) SetGeo(params parameter.Container, latitude, longitude types.Float) error

func (*ToDo) SetGeoWithText

func (todo *ToDo) SetGeoWithText(params parameter.Container, value types.Text) error

func (*ToDo) SetLastModified

func (todo *ToDo) SetLastModified(params parameter.Container, value types.DateTime) error

func (*ToDo) SetLocation

func (todo *ToDo) SetLocation(params parameter.Container, value types.Text) error

func (*ToDo) SetOrganizer

func (todo *ToDo) SetOrganizer(params parameter.Container, value types.CalenderUserAddress) error

func (*ToDo) SetPercentComplete

func (todo *ToDo) SetPercentComplete(params parameter.Container, value types.Integer) error

func (*ToDo) SetPriority

func (todo *ToDo) SetPriority(params parameter.Container, value types.Integer) error

func (*ToDo) SetRecurrenceID

func (todo *ToDo) SetRecurrenceID(params parameter.Container, value types.TimeValue) error

func (*ToDo) SetRecurrenceRule

func (todo *ToDo) SetRecurrenceRule(params parameter.Container, value types.RecurrenceRule) error

func (*ToDo) SetSequenceNumber

func (todo *ToDo) SetSequenceNumber(params parameter.Container, value types.Integer) error

func (*ToDo) SetStatus

func (todo *ToDo) SetStatus(params parameter.Container, value types.Text) error

func (*ToDo) SetSummary

func (todo *ToDo) SetSummary(params parameter.Container, value types.Text) error

func (*ToDo) SetUID

func (todo *ToDo) SetUID(params parameter.Container, value types.Text) error

func (*ToDo) SetURL

func (todo *ToDo) SetURL(params parameter.Container, value types.URI) error

func (*ToDo) Validate

func (todo *ToDo) Validate() error

type ValidationError added in v0.1.0

type ValidationError struct {
	// contains filtered or unexported fields
}

func (ValidationError) Error added in v0.1.0

func (v ValidationError) Error() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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