// Code generated by cmd/lexgen (see Makefile's lexgen); DO NOT EDIT.
package org_tangled
// schema: org.tangled.event.notifyEvent
import (
"context"
"encoding/json"
"fmt"
"github.com/bluesky-social/indigo/lex/util"
)
const (
EventNotifyEventNSID = "org.tangled.event.notifyEvent"
)
// EventNotifyEvent_CiOutput is a "ciOutput" in the org.tangled.event.notifyEvent schema.
type EventNotifyEvent_CiOutput struct {
// message: Text returned by the server for this push, like how to follow a started CI.
Message *string `json:"message,omitempty" cborgen:"message,omitempty"`
// pipelines: IDs of the scheduled pipelines
Pipelines []string `json:"pipelines,omitempty" cborgen:"pipelines,omitempty"`
}
// EventNotifyEvent_Input is the input argument to a org.tangled.event.notifyEvent call.
type EventNotifyEvent_Input struct {
// event: Tangled event object
Event *EventNotifyEvent_Input_Event `json:"event" cborgen:"event"`
// repo: Repository DID
Repo string `json:"repo" cborgen:"repo"`
}
// Tangled event object
type EventNotifyEvent_Input_Event struct {
CiTriggerManual *CiTriggerManual
EventPush *EventPush
}
func (t *EventNotifyEvent_Input_Event) MarshalJSON() ([]byte, error) {
if t.CiTriggerManual != nil {
t.CiTriggerManual.LexiconTypeID = "org.tangled.ci.trigger.manual"
return json.Marshal(t.CiTriggerManual)
}
if t.EventPush != nil {
t.EventPush.LexiconTypeID = "org.tangled.event.push"
return json.Marshal(t.EventPush)
}
return nil, fmt.Errorf("cannot marshal empty enum")
}
func (t *EventNotifyEvent_Input_Event) UnmarshalJSON(b []byte) error {
typ, err := util.TypeExtract(b)
if err != nil {
return err
}
switch typ {
case "org.tangled.ci.trigger.manual":
t.CiTriggerManual = new(CiTriggerManual)
return json.Unmarshal(b, t.CiTriggerManual)
case "org.tangled.event.push":
t.EventPush = new(EventPush)
return json.Unmarshal(b, t.EventPush)
default:
return nil
}
}
// EventNotifyEvent_Output is the output of a org.tangled.event.notifyEvent call.
type EventNotifyEvent_Output struct {
Ci *EventNotifyEvent_CiOutput `json:"ci,omitempty" cborgen:"ci,omitempty"`
}
// EventNotifyEvent calls the XRPC method "org.tangled.event.notifyEvent".
func EventNotifyEvent(ctx context.Context, c util.LexClient, input *EventNotifyEvent_Input) (*EventNotifyEvent_Output, error) {
var out EventNotifyEvent_Output
if err := c.LexDo(ctx, util.Procedure, "application/json", "org.tangled.event.notifyEvent", nil, input, &out); err != nil {
return nil, err
}
return &out, nil
}