Documentation ¶
Index ¶
- Constants
- Variables
- func AddEventAttendants(srv *calendar.Service, calendarId, eventId string, emails []string) error
- func AgreementPath(domain, product string) string
- func CACertificatesPath() string
- func CreateLicense(fs blobfs.Interface, certs *certstore.CertStore, info LicenseForm, ...) ([]byte, error)
- func DecorateGeoData(db *geoip2.Reader, entry *GeoLocation)
- func EmailAccessLogPath(domain, email, product, timestamp string) string
- func EmailBannedPath(domain, email string) string
- func EmailTokenPath(domain, email, token string) string
- func EmailVerifiedPath(domain, email string) string
- func FolderName(email string) string
- func FullLicenseIssueLogPath(domain, product, cluster, timestamp string) string
- func GetCertStore(fs blobfs.Interface, issuer string) (*certstore.CertStore, error)
- func GetIP(r *http.Request) string
- func IsEnterpriseProduct(product string) bool
- func IsPAYGProduct(product string) bool
- func LicenseCertPath(domain, product, cluster string) string
- func LicenseKeyPath(domain, product, cluster string) string
- func ListExistingLicensees(srv *sheets.Service, spreadsheetId, sheetName, header string) sets.String
- func LogLicense(si *gdrive.Spreadsheet, info *LogEntry, couponEvent string) error
- func NewBlockedLicenseMailer(info LicenseMailData) mailer.Mailer
- func NewCommunitySignupCampaign(srv *sheets.Service, mg *mailer.SMTPService) *mailer.DripCampaign
- func NewEULAMailer(info *EULAInfo) mailer.Mailer
- func NewEnterpriseFirstTimeCampaign(srv *sheets.Service, mg *mailer.SMTPService) *mailer.DripCampaign
- func NewEnterpriseLicenseMailer(info LicenseMailData) mailer.Mailer
- func NewEnterpriseSignupCampaign(srv *sheets.Service, mg *mailer.SMTPService) *mailer.DripCampaign
- func NewLicenseMailer(info LicenseMailData) mailer.Mailer
- func NewOfferLetterMailer(info *CandidateInfo, folderId string) mailer.Mailer
- func NewQuotationMailer(info QuotationEmailData) mailer.Mailer
- func NewQuotationProcessFailedMailer(gen *QuotationGenerator, err error) mailer.Mailer
- func NewRegistrationMailer(params interface{}) mailer.Mailer
- func NewSignedCert(cfg Config, key crypto.Signer, caCert *x509.Certificate, caKey crypto.Signer) (*x509.Certificate, error)
- func NewTestStartedMailer(name string, ans *TestAnswer) mailer.Mailer
- func NewWelcomeMailer(info LicenseForm) mailer.Mailer
- func ParseCouponCodes(in string) map[string]string
- func ProductAccessLogPath(domain, product, cluster, timestamp string) string
- func SanitizeTelNumber(tel string) string
- func SaveConfig(svcSheets *sheets.Service, configDocId string, cfg QuestionConfig) error
- func SaveTestAnswer(svcSheets *sheets.Service, configDocId string, ans TestAnswer) error
- func YoutubeVideoID(rawURL string) (string, error)
- type AltNames
- type CandidateInfo
- type Config
- type ConfigType
- type EULAInfo
- type EULATemplateKey
- type EventLicenseIssued
- type EventMailgun
- type EventQuotationGenerated
- type EventWebinarRegistration
- type FeatureFlags
- type GeoLocation
- type LicenseAgreement
- type LicenseEventType
- type LicenseForm
- type LicenseMailData
- type LicenseRef
- type LogEntry
- type Message
- type NewsSnippet
- type OfferDate
- type Options
- type PlanInfo
- type ProductLicense
- type ProductQuotation
- type QuestionConfig
- type QuotationEmailData
- type QuotationForm
- type QuotationGenerator
- type QuotationGeneratorConfig
- type QuotationGeneratorOptions
- type QuoteInfo
- type RegisterRequest
- type Scheduler
- type Server
- func (s *Server) Close()
- func (s *Server) CreateOrRetrieveLicense(info LicenseForm, license ProductLicense, cluster string) ([]byte, error)
- func (s *Server) GenerateEULA(info *EULAInfo) (string, error)
- func (s *Server) GenerateOfferLetter(info *CandidateInfo) (string, error)
- func (s *Server) GetDomainLicense(domain string, product string) (*ProductLicense, error)
- func (s *Server) HandleEmailQuotation(ctx *macaron.Context, contact QuotationForm) error
- func (s *Server) HandleIssueLicense(ctx *macaron.Context, info LicenseForm) error
- func (s *Server) HandleRegisterEmail(req RegisterRequest) error
- func (s *Server) IssueEnterpriseLicense(info LicenseForm, extendBy time.Duration, ff FeatureFlags) error
- func (s *Server) ListPlaylistItems(playlistID string) ([]*youtube.PlaylistItem, error)
- func (s *Server) ListPlaylists(channelID string) ([]*youtube.Playlist, error)
- func (s *Server) ListWebinarAttendees(date string) ([]string, error)
- func (s *Server) NextNewsSnippet(p string) (*NewsSnippet, error)
- func (s *Server) NextWebinarSchedule() (*WebinarSchedule, error)
- func (s *Server) PastWebinarSchedules() ([]*WebinarSchedule, error)
- func (s *Server) RegisterForWebinar(ctx *macaron.Context, form WebinarRegistrationForm, log *log.Logger) error
- func (s *Server) RegisterNewsAPI(m *macaron.Macaron)
- func (s *Server) RegisterQAAPI(m *macaron.Macaron)
- func (s *Server) RegisterWebinarAPI(m *macaron.Macaron)
- func (s *Server) RegisterYoutubeAPI(m *macaron.Macaron)
- func (s *Server) RevokePermission(args []byte) error
- func (s *Server) Run() error
- func (s *Server) TimelyNextNewsSnippet(p string) (*NewsSnippet, error)
- func (s *Server) UpcomingWebinarSchedules() ([]*WebinarSchedule, error)
- type SignupCampaignData
- type SpeakerInfo
- type TestAnswer
- type WebinarInfo
- type WebinarMeetingID
- type WebinarRecord
- type WebinarRegistrationEmail
- type WebinarRegistrationForm
- type WebinarSchedule
Constants ¶
View Source
const ( AccountFolderId = "1RBXgSR0jud5cpCqeC90fAdyb0Oaz7EIc" LicenseSpreadsheetId = "1evwv2ON94R38M-Lkrw8b6dpVSkRYHUWsNOuI7X0_-zA" DripSpreadsheetId = "10Jx3-1Ww2UQ7xNjs9-CRvJX4iIA22EDu-EsLKoHp1hc" MailLicenseSender = "license-issuer@appscode.com" MailLicenseTracker = "issued-license-tracker@appscode.com" MailSupport = "support@appscode.com" MailSales = "sales@appscode.com" MailHello = "hello@appscode.com" DefaultTTLForEnterpriseProduct = 30 * 24 * time.Hour DefaultFullTTLForEnterpriseProduct = 365 * 24 * time.Hour DefaultTTLForCommunityProduct = 365 * 24 * time.Hour LicenseIssuerName = "AppsCode Inc." LicenseBucket = "licenses.appscode.com" WebinarSpreadsheetId = "1VW9K1yRLw6IFnr4o9ZJqaEamBahfqnjfl79EHeAZBzg" WebinarScheduleSheet = "Schedule" WebinarCalendarId = "c_gccijq3fpvbsgg68le9tq37pqs@group.calendar.google.com" WebinarAlternativeHosts = "tamal@appscode.com" NewsSnippetSpreadsheetId = "1kLewa3oGLlaFqzghV8Snh7u5xFMcS54Rl8I8BMpYTQs" NewsSnippetSheet = "News" MailingList_Platform = "06a84456-bfdf-4edf-97c1-7e7d4ad48f67" MailingList_KubeDB = "a5f00cb2-f398-4408-a13a-28b6db8a32ba" MailingList_Kubeform = "cd797afa-04d4-45c8-86e0-642a59b2d7f4" MailingList_KubeVault = "b0a46c28-43c3-4048-8059-c3897474b577" MailingList_Stash = "3ab3161e-d02c-42cf-ad96-bb406620d693" MailingList_Voyager = "6c6d1338-bb38-40f6-bab4-ff09c2f6e184" MailingList_Panopticon = "47ae2f13-5034-483e-be9a-682b32b39315" )
View Source
const ( EventTypeLicenseIssued = "license_issued" EventTypeLicenseBlocked = "license_blocked" )
View Source
const ( PaymentTermAnnual = "annual" PaymentTermPAYG = "payg" )
View Source
const ( SupportPlanBasic = "basic" SupportPlanGold = "gold" SupportPlanPlatinum = "platinum" )
View Source
const ( ProjectConfigSheet = "config" ProjectTestSheet = "test" )
View Source
const (
MailCareer = "career+qa@appscode.com"
)
View Source
const (
MailHR = "hr.bd@appscode.com"
)
Variables ¶
View Source
var PaidFeatures = sets.NewString(
"config-syncer-enterprise",
"kubedb-autoscaler",
"kubedb-enterprise",
"kubedb-ext-stash",
"kubevault-enterprise",
"stash-enterprise",
"voyager-enterprise",
)
View Source
var SupportedProducts = map[string]PlanInfo{ "kubedb-enterprise": { DisplayName: "KubeDB", ProductLine: "kubedb", TierName: "enterprise", TwitterHandle: "KubeDB", QuickstartLink: "https://kubedb.com/docs/latest/", Features: []string{"kubedb-enterprise", "kubedb-community", "kubedb-autoscaler", "kubedb-ext-stash", "panopticon-enterprise", "kubedb-monitoring-agent"}, MailingLists: []string{MailingList_KubeDB, MailingList_Stash, MailingList_Panopticon}, }, "stash-enterprise": { DisplayName: "Stash", ProductLine: "stash", TierName: "enterprise", TwitterHandle: "KubeStash", QuickstartLink: "https://stash.run/docs/latest/", Features: []string{"stash-enterprise", "stash-community", "kubedb-ext-stash", "panopticon-enterprise"}, MailingLists: []string{MailingList_Stash, MailingList_Panopticon}, }, "kubevault-enterprise": { DisplayName: "KubeVault", ProductLine: "kubevault", TierName: "enterprise", TwitterHandle: "KubeVault", QuickstartLink: "https://kubevault.com/docs/latest/", Features: []string{"kubevault-enterprise", "kubevault-community", "panopticon-enterprise"}, MailingLists: []string{MailingList_KubeVault, MailingList_Panopticon}, }, "voyager-enterprise": { DisplayName: "Voyager", ProductLine: "voyager", TierName: "enterprise", TwitterHandle: "voyagermesh", QuickstartLink: "https://voyagermesh.com/docs/latest/", Features: []string{"voyager-enterprise", "voyager-community", "panopticon-enterprise"}, MailingLists: []string{MailingList_Voyager, MailingList_Panopticon}, }, "platform-enterprise": { DisplayName: "ACE", ProductLine: "platform", TierName: "enterprise", Features: []string{"panopticon-enterprise", "b3", "scanner"}, MailingLists: []string{MailingList_Platform, MailingList_Panopticon}, }, "config-syncer-enterprise": { DisplayName: "Config-Syncer", ProductLine: "config-syncer", TierName: "enterprise", Features: []string{"config-syncer-enterprise"}, MailingLists: []string{MailingList_Platform}, }, }
plan name => features
Functions ¶
func AddEventAttendants ¶
func AgreementPath ¶
func CACertificatesPath ¶
func CACertificatesPath() string
func CreateLicense ¶
func CreateLicense(fs blobfs.Interface, certs *certstore.CertStore, info LicenseForm, license ProductLicense, cluster string, ff FeatureFlags) ([]byte, error)
func DecorateGeoData ¶
func DecorateGeoData(db *geoip2.Reader, entry *GeoLocation)
func EmailAccessLogPath ¶
func EmailBannedPath ¶
func EmailTokenPath ¶
func EmailVerifiedPath ¶
func FolderName ¶
func FullLicenseIssueLogPath ¶
func GetCertStore ¶
fs := blobfs.New("gs://licenses.appscode.com")
func GetIP ¶
GetIP gets a requests IP address by reading off the forwarded-for header (for proxies) and falls back to use the remote address.
func IsEnterpriseProduct ¶
func IsPAYGProduct ¶
func LicenseCertPath ¶
func LicenseKeyPath ¶
func ListExistingLicensees ¶
func LogLicense ¶
func LogLicense(si *gdrive.Spreadsheet, info *LogEntry, couponEvent string) error
func NewBlockedLicenseMailer ¶
func NewBlockedLicenseMailer(info LicenseMailData) mailer.Mailer
func NewCommunitySignupCampaign ¶
func NewCommunitySignupCampaign(srv *sheets.Service, mg *mailer.SMTPService) *mailer.DripCampaign
func NewEULAMailer ¶
func NewEnterpriseFirstTimeCampaign ¶
func NewEnterpriseFirstTimeCampaign(srv *sheets.Service, mg *mailer.SMTPService) *mailer.DripCampaign
func NewEnterpriseLicenseMailer ¶
func NewEnterpriseLicenseMailer(info LicenseMailData) mailer.Mailer
func NewEnterpriseSignupCampaign ¶
func NewEnterpriseSignupCampaign(srv *sheets.Service, mg *mailer.SMTPService) *mailer.DripCampaign
func NewLicenseMailer ¶
func NewLicenseMailer(info LicenseMailData) mailer.Mailer
func NewOfferLetterMailer ¶
func NewOfferLetterMailer(info *CandidateInfo, folderId string) mailer.Mailer
func NewQuotationMailer ¶
func NewQuotationMailer(info QuotationEmailData) mailer.Mailer
func NewQuotationProcessFailedMailer ¶
func NewQuotationProcessFailedMailer(gen *QuotationGenerator, err error) mailer.Mailer
func NewRegistrationMailer ¶
func NewSignedCert ¶
func NewSignedCert(cfg Config, key crypto.Signer, caCert *x509.Certificate, caKey crypto.Signer) (*x509.Certificate, error)
NewSignedCert creates a signed certificate using the given CA certificate and key
func NewTestStartedMailer ¶
func NewTestStartedMailer(name string, ans *TestAnswer) mailer.Mailer
func NewWelcomeMailer ¶
func NewWelcomeMailer(info LicenseForm) mailer.Mailer
func ParseCouponCodes ¶ added in v0.0.62
func ProductAccessLogPath ¶
func SanitizeTelNumber ¶
func SaveConfig ¶
func SaveConfig(svcSheets *sheets.Service, configDocId string, cfg QuestionConfig) error
func SaveTestAnswer ¶
func SaveTestAnswer(svcSheets *sheets.Service, configDocId string, ans TestAnswer) error
Types ¶
type CandidateInfo ¶
type CandidateInfo struct { Email string `form:"email" binding:"Required;Email" csv:"email"` Name string `form:"name" binding:"Required" csv:"name"` Tel string `form:"tel" binding:"Required" csv:"tel"` AddressLine1 string `form:"address-line-1" binding:"Required" csv:"address-line-1"` AddressLine2 string `form:"address-line-2" binding:"Required" csv:"address-line-2"` AddressLine3 string `form:"address-line-3" binding:"Required" csv:"address-line-3"` Title string `form:"title" binding:"Required" csv:"title"` Salary int `form:"salary" binding:"Required" csv:"salary"` // https://bulma-calendar.onrender.com/#content // format: MM/DD/YYYY 01/02/2006 StartDate OfferDate `form:"start-date" binding:"Required" csv:"start-date"` PermanentSalary int `form:"perm-salary" binding:"Required" csv:"perm-salary"` // https://bulma-calendar.onrender.com/#content // format: MM/DD/YYYY 01/02/2006 PermanentDate OfferDate `form:"perm-date" binding:"Required" csv:"perm-date"` OfferStartDate OfferDate `form:"-" csv:"offer-start-date"` OfferEndDate OfferDate `form:"-" csv:"offer-end-date"` }
func (*CandidateInfo) Complete ¶
func (form *CandidateInfo) Complete()
func (CandidateInfo) Data ¶
func (form CandidateInfo) Data() map[string]string
func (CandidateInfo) Validate ¶
func (form CandidateInfo) Validate() error
type Config ¶
type Config struct { CommonName string Country string Organization []string OrganizationalUnit string Province string Locality []string AltNames AltNames Usages []x509.ExtKeyUsage NotBefore, NotAfter time.Time // Validity bounds. }
Config contains the basic fields required for creating a certificate
type EULAInfo ¶
type EULAInfo struct { Company string `form:"company" binding:"Required" json:"company" csv:"company"` Domain string `form:"domain" binding:"Required" json:"domain" csv:"domain"` Address string `form:"address" binding:"Required" json:"address" csv:"address"` Quotation string `form:"quotation" binding:"Required" json:"quotation" csv:"quotation"` Product string `form:"product" binding:"Required" json:"product" csv:"product"` PaymentTerm string `form:"payment-term" binding:"Required" json:"payment-term" csv:"payment-term"` SupportPlan string `form:"support-plan" binding:"Required" json:"support-plan" csv:"support-plan"` TermYears int `form:"-" json:"-" csv:"term-years"` EULADocLink string `form:"-" json:"-" csv:"eula"` PreparedOn OfferDate `form:"-" json:"-" csv:"prepared-on"` }
type EULATemplateKey ¶
type EventLicenseIssued ¶
type EventLicenseIssued struct { freshsalesclient.BaseNoteDescription `json:",inline,omitempty"` License LicenseRef `json:"license"` }
type EventMailgun ¶
type EventMailgun struct { freshsalesclient.BaseNoteDescription `json:",inline,omitempty"` Message Message `json:"message,omitempty"` }
type EventQuotationGenerated ¶
type EventQuotationGenerated struct { freshsalesclient.BaseNoteDescription `json:",inline,omitempty"` Quotation string `json:"quotation"` TemplateDoc string `json:"template_doc"` TemplateDocId string `json:"template_doc_id"` }
type EventWebinarRegistration ¶
type EventWebinarRegistration struct { freshsalesclient.BaseNoteDescription `json:",inline,omitempty"` Webinar WebinarRecord `json:"webinar,omitempty"` }
type FeatureFlags ¶
func (FeatureFlags) IsValid ¶
func (f FeatureFlags) IsValid() error
func (FeatureFlags) ToSlice ¶
func (f FeatureFlags) ToSlice() []string
type GeoLocation ¶
type LicenseAgreement ¶
type LicenseEventType ¶
type LicenseEventType string
type LicenseForm ¶
type LicenseForm struct { Name string `form:"name" binding:"Required" json:"name"` Email string `form:"email" binding:"Required;Email" json:"email"` CC string `form:"cc" json:"cc"` ProductAlias string `form:"product" binding:"Required" json:"product"` // This is now called plan in a parsed LicenseInfo Cluster string `form:"cluster" binding:"Required" json:"cluster"` Tos string `form:"tos" binding:"Required" json:"tos"` Token string `form:"token" json:"token"` Coupon string `form:"coupon" json:"coupon"` }
func (LicenseForm) Product ¶
func (form LicenseForm) Product() string
func (LicenseForm) Validate ¶
func (form LicenseForm) Validate() error
type LicenseMailData ¶
type LicenseMailData struct { LicenseForm `json:",inline,omitempty"` License string }
type LicenseRef ¶
type LogEntry ¶
type LogEntry struct { LicenseForm `json:",inline,omitempty"` GeoLocation `json:",inline,omitempty"` Timestamp string `json:"timestamp,omitempty"` UA *uasurfer.UserAgent `json:"-"` }
func IssueEnterpriseLicense ¶
type NewsSnippet ¶
type Options ¶
type Options struct { Issuer string CertDir string CertEmail string Hosts []string Port int EnableSSL bool GeoCityDatabase string TaskDir string LicenseBucket string LicenseSpreadsheetId string SMTPAddress string SMTPUsername string SMTPPassword string GoogleCredentialDir string BlockedDomains []string BlockedEmails []string BlockedClusters []string EnableDripCampaign bool Coupons string // contains filtered or unexported fields }
func NewOptions ¶
func NewOptions() *Options
type ProductLicense ¶
type ProductLicense struct { Domain string `json:"domain"` Product string `json:"product"` // This is now called plan in a parsed LicenseInfo TTL *metav1.Duration `json:"ttl,omitempty"` Agreement *LicenseAgreement `json:"agreement,omitempty"` }
type ProductQuotation ¶
type ProductQuotation struct { Name string `form:"name" binding:"Required" json:"name"` Email string `form:"email" binding:"Required" json:"email"` CC string `form:"cc" json:"cc"` Title string `form:"title" binding:"Required" json:"title"` Telephone string `form:"telephone" binding:"Required" json:"telephone"` Product string `form:"product" binding:"Required" json:"product"` Company string `form:"company" binding:"Required" json:"company"` }
func (ProductQuotation) Replacements ¶
func (form ProductQuotation) Replacements() map[string]string
type QuestionConfig ¶
type QuestionConfig struct { ConfigType ConfigType `json:"configType" csv:"Config Type"` TestName string `json:"testName" csv:"Test Name"` QuestionTemplateDocId string `json:"questionTemplateDocId" csv:"Question Template Doc Id"` StartDate csvtypes.Date `json:"startDate" csv:"Start Date"` EndDate csvtypes.Date `json:"endDate" csv:"End Date"` Duration csvtypes.Duration `json:"duration" csv:"Duration"` }
func LoadConfig ¶
func LoadConfig(svcSheets *sheets.Service, c cache.Cache, configDocId string) (*QuestionConfig, error)
type QuotationEmailData ¶
type QuotationEmailData struct { ProductQuotation Offer string // KubeDB, Stash FullPlan string // Pay-As-You-Go (PAYG), Enterprise Plan string // PAYG, Enterprise }
type QuotationForm ¶
type QuotationForm struct { Name string `form:"name" binding:"Required" json:"name"` Email string `form:"email" binding:"Required" json:"email"` CC string `form:"cc" json:"cc"` Title string `form:"title" binding:"Required" json:"title"` Telephone string `form:"telephone" binding:"Required" json:"telephone"` Product []string `form:"product" binding:"Required" json:"product"` Company string `form:"company" binding:"Required" json:"company"` Tos string `form:"tos" binding:"Required" json:"tos"` }
func (QuotationForm) Validate ¶
func (form QuotationForm) Validate() error
type QuotationGenerator ¶
type QuotationGenerator struct { Contact ProductQuotation Location GeoLocation UA *uasurfer.UserAgent DriveService *drive.Service DocService *docs.Service SheetService *gdrive.Spreadsheet FolderChan chan<- string // contains filtered or unexported fields }
func NewQuotationGenerator ¶
func NewQuotationGenerator(client *http.Client, cfg QuotationGeneratorConfig) *QuotationGenerator
func (*QuotationGenerator) DocName ¶
func (gen *QuotationGenerator) DocName(quote string) string
func (*QuotationGenerator) Generate ¶
func (gen *QuotationGenerator) Generate() (string, string, error)
func (*QuotationGenerator) GetMailer ¶
func (gen *QuotationGenerator) GetMailer() mailer.Mailer
type QuotationGeneratorOptions ¶
type QuotationGeneratorOptions struct { AccountsFolderId string TemplateDocId string // ReplacementInput map[string]string LicenseSpreadsheetId string Contact QuotationForm }
func (QuotationGeneratorOptions) Complete ¶
func (opts QuotationGeneratorOptions) Complete() QuotationGeneratorConfig
func (QuotationGeneratorOptions) Validate ¶
func (opts QuotationGeneratorOptions) Validate() error
type RegisterRequest ¶
type RegisterRequest struct {
Email string `form:"email" binding:"Required;Email" json:"email"`
}
type Scheduler ¶
type Scheduler struct {
// contains filtered or unexported fields
}
func NewScheduler ¶
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
func (*Server) CreateOrRetrieveLicense ¶
func (s *Server) CreateOrRetrieveLicense(info LicenseForm, license ProductLicense, cluster string) ([]byte, error)
func (*Server) GenerateOfferLetter ¶
func (s *Server) GenerateOfferLetter(info *CandidateInfo) (string, error)
func (*Server) GetDomainLicense ¶
func (s *Server) GetDomainLicense(domain string, product string) (*ProductLicense, error)
func (*Server) HandleEmailQuotation ¶
func (s *Server) HandleEmailQuotation(ctx *macaron.Context, contact QuotationForm) error
func (*Server) HandleIssueLicense ¶
func (s *Server) HandleIssueLicense(ctx *macaron.Context, info LicenseForm) error
func (*Server) HandleRegisterEmail ¶
func (s *Server) HandleRegisterEmail(req RegisterRequest) error
func (*Server) IssueEnterpriseLicense ¶
func (s *Server) IssueEnterpriseLicense(info LicenseForm, extendBy time.Duration, ff FeatureFlags) error
func (*Server) ListPlaylists ¶
https://developers.google.com/youtube/v3/guides/implementation/playlists
func (*Server) ListWebinarAttendees ¶
func (*Server) NextNewsSnippet ¶
func (s *Server) NextNewsSnippet(p string) (*NewsSnippet, error)
func (*Server) NextWebinarSchedule ¶
func (s *Server) NextWebinarSchedule() (*WebinarSchedule, error)
func (*Server) PastWebinarSchedules ¶
func (s *Server) PastWebinarSchedules() ([]*WebinarSchedule, error)
func (*Server) RegisterForWebinar ¶
func (s *Server) RegisterForWebinar(ctx *macaron.Context, form WebinarRegistrationForm, log *log.Logger) error
func (*Server) RegisterNewsAPI ¶
func (s *Server) RegisterNewsAPI(m *macaron.Macaron)
func (*Server) RegisterQAAPI ¶
func (s *Server) RegisterQAAPI(m *macaron.Macaron)
func (*Server) RegisterWebinarAPI ¶
func (s *Server) RegisterWebinarAPI(m *macaron.Macaron)
func (*Server) RegisterYoutubeAPI ¶
func (s *Server) RegisterYoutubeAPI(m *macaron.Macaron)
func (*Server) RevokePermission ¶
func (*Server) TimelyNextNewsSnippet ¶ added in v0.0.46
func (s *Server) TimelyNextNewsSnippet(p string) (*NewsSnippet, error)
func (*Server) UpcomingWebinarSchedules ¶
func (s *Server) UpcomingWebinarSchedules() ([]*WebinarSchedule, error)
type SignupCampaignData ¶
type SpeakerInfo ¶
type SpeakerInfo struct { Name string `json:"name"` JobTitle string `json:"job_title"` Picture string `json:"picture"` }
func FixSpeakers ¶
func FixSpeakers(sch *WebinarSchedule) []SpeakerInfo
type TestAnswer ¶
type TestAnswer struct { Email string `json:"email" csv:"Email"` DocId string `json:"docId" csv:"Doc Id"` StartDate csvtypes.Timestamp `json:"startDate" csv:"Start Date"` EndDate csvtypes.Timestamp `json:"endDate" csv:"End Date"` IP string `json:"ip,omitempty" csv:"IP"` City string `json:"city,omitempty" csv:"City"` Country string `json:"country,omitempty" csv:"Country"` }
func LoadTestAnswer ¶
func LoadTestAnswer(svcSheets *sheets.Service, configDocId, email string) (*TestAnswer, error)
type WebinarInfo ¶
type WebinarInfo struct { WebinarSchedule WebinarMeetingID }
type WebinarMeetingID ¶
type WebinarMeetingID struct { GoogleCalendarEventID string `json:"google_calendar_event_id" csv:"Google Calendar Event ID"` ZoomMeetingID int `json:"zoom_meeting_id" csv:"Zoom Meeting ID"` ZoomMeetingPassword string `json:"zoom_meeting_password" csv:"Zoom Meeting Password"` }
func CreateZoomMeeting ¶
func CreateZoomMeeting(srv *calendar.Service, zc *zoom.Client, calendarId, zoomEmail string, schedule *WebinarSchedule, sch time.Time, duration time.Duration, attendees []string) (*WebinarMeetingID, error)
type WebinarRecord ¶
type WebinarRecord struct { Title string `json:"title" csv:"Title" form:"title"` Schedule csvtypes.Timestamp `json:"schedule" csv:"Schedule" form:"schedule"` Speaker string `json:"speaker" csv:"Speaker" form:"speaker"` ClusterProvider []string `json:"cluster_provider,omitempty" csv:"Cluster Provider" form:"cluster_provider"` ExperienceLevel string `json:"experience_level,omitempty" csv:"Experience Level" form:"experience_level"` MarketingReach string `json:"marketing_reach,omitempty" csv:"Marketing Reach" form:"marketing_reach"` }
type WebinarRegistrationEmail ¶
type WebinarRegistrationEmail struct {
WorkEmail string `json:"work_email" csv:"Work Email" form:"work_email"`
}
type WebinarRegistrationForm ¶
type WebinarRegistrationForm struct { Schedule string `json:"schedule" csv:"-" form:"schedule"` FirstName string `json:"first_name" csv:"First Name" form:"first_name"` LastName string `json:"last_name" csv:"Last Name" form:"last_name"` Phone string `json:"phone" csv:"Phone" form:"phone"` JobTitle string `json:"job_title" csv:"Job Title" form:"job_title"` Company string `json:"company" csv:"Company" form:"company"` WorkEmail string `json:"work_email" csv:"Work Email" form:"work_email"` ClusterProvider csvtypes.StringSlice `json:"cluster_provider,omitempty" csv:"Cluster Provider" form:"cluster_provider"` ExperienceLevel string `json:"experience_level,omitempty" csv:"Experience Level" form:"experience_level"` MarketingReach string `json:"marketing_reach,omitempty" csv:"Marketing Reach" form:"marketing_reach"` }
type WebinarSchedule ¶
type WebinarSchedule struct { Title string `json:"title" csv:"Title" form:"title"` Schedules csvtypes.Dates `json:"schedules" csv:"Schedules" form:"schedules"` Summary string `json:"summary" csv:"Summary" form:"summary"` Speaker string `json:"speaker" csv:"Speaker" form:"speaker"` SpeakerTitle string `json:"speaker_title" csv:"Speaker Title" form:"speaker_title"` SpeakerBio string `json:"speaker_bio" csv:"Speaker Bio" form:"speaker_bio"` SpeakerPicture string `json:"speaker_picture" csv:"Speaker Picture" form:"speaker_picture"` Speakers []SpeakerInfo `json:"speakers" csv:"-" form:"-"` YoutubeLink string `json:"-" csv:"Youtube Link" form:"-"` YoutubeVideoID string `json:"youtube_video_id" csv:"-" form:"-"` }
Source Files ¶
- certificate.go
- constants.go
- coupon.go
- crm.go
- drip_new_signup_community.go
- drip_new_signup_enterprise.go
- enterprise.go
- eula.go
- event_types.go
- feature_flags.go
- issuer.go
- mail_blocked_license.go
- mail_eula.go
- mail_full_license.go
- mail_license.go
- mail_offerletter.go
- mail_quotation.go
- mail_quotation_process_failed.go
- mail_registration.go
- mail_test_started.go
- mail_welcome.go
- mailgun_webhook.go
- news.go
- offerletter.go
- options.go
- paths.go
- qa.go
- quotation.go
- scheduler.go
- server.go
- types.go
- utils.go
- webinar.go
- youtube.go
- zoom.go
Click to show internal directories.
Click to hide internal directories.