responses/maniphest.go (105 lines of code) (raw):

package responses import ( "encoding/json" "errors" "github.com/uber/gonduit/entities" "github.com/uber/gonduit/util" ) // ManiphestQueryResponse is the response of calling maniphest.query. type ManiphestQueryResponse map[string]*entities.ManiphestTask // Get gets the task with the speicfied numeric ID. func (res ManiphestQueryResponse) Get(key string) *entities.ManiphestTask { if _, ok := res[key]; ok { return res[key] } return nil } // ManiphestGetTaskTransactionsResponse is the response of calling maniphest.query. type ManiphestGetTaskTransactionsResponse map[string][]*entities.ManiphestTaskTranscation // ManiphestSearchResponse contains fields that are in server response to maniphest.search. type ManiphestSearchResponse struct { // Data contains search results. Data []*ManiphestSearchResponseItem `json:"data"` // Curson contains paging data. Cursor struct { Limit uint64 `json:"limit"` After string `json:"after"` Before string `json:"before"` } `json:"cursor,omitempty"` } // ManiphestSearchAttachmentColumnBoardsColumn descrbied a column in "columns" attachment. type ManiphestSearchAttachmentColumnBoardsColumn struct { // ID is column identifier. ID int `json:"id"` // PHID is column PHID. PHID string `json:"phid"` // Name is column name. Name string `json:"name"` } // ManiphestSearchAttachmentColumnBoardsColumns is a wrapper for a slice of columns. type ManiphestSearchAttachmentColumnBoardsColumns struct { // Columns is collection of columns in an attachment. Columns []*ManiphestSearchAttachmentColumnBoardsColumn `json:"columns,omitempty"` } // ManiphestSearchAttachmentColumnBoards is a wrapper type for columns because sometimes columns is a map and sometimes it is an array. type ManiphestSearchAttachmentColumnBoards struct { // ColumnMap is dictionary of columns. ColumnMap map[string]*ManiphestSearchAttachmentColumnBoardsColumns // Columns is collection of columns. Columns []*ManiphestSearchAttachmentColumnBoardsColumn } // UnmarshalJSON parses column data from server response. func (b *ManiphestSearchAttachmentColumnBoards) UnmarshalJSON(data []byte) error { if b == nil { return errors.New("boards is nil") } jerr := json.Unmarshal(data, &b.ColumnMap) if jerr == nil { return nil } return json.Unmarshal(data, &b.Columns) } // TaskDescription contains task description data. type TaskDescription struct { // Raw is raw task description. Raw string `json:"raw"` } // ManiphestSearchResponseItem contains information about a particular search result. type ManiphestSearchResponseItem struct { // ID is task identifier. ID int `json:"id"` // Type is task type. Type string `json:"type"` // PHID is PHID of the task. PHID string `json:"phid"` // Fields contains task data. Fields struct { // Name is task name. Name string `json:"name"` // Description is detailed task description. Description *TaskDescription `json:"description"` // AuthorPHID is PHID of task submitter. AuthorPHID string `json:"authorPHID"` // OwnerPHID is PHID of the person who currently assigned to task. OwnerPHID string `json:"ownerPHID"` // Status is task status. Status ManiphestSearchResultStatus `json:"status"` // Priority is task priority. Priority ManiphestSearchResultPriority `json:"priority"` // Points is point value of the task. Points json.Number `json:"points"` // Subtype of the task. Subtype string `json:"subtype"` // CloserPHID is user who closed the task, if the task is closed. CloserPHID string `json:"closerPHID"` // SpacePHID is PHID of the policy space this object is part of. SpacePHID string `json:"spacePHID"` // Date created is epoch timestamp when the object was created. DateCreated util.UnixTimestamp `json:"dateCreated"` // DateModified is epoch timestamp when the object was last updated. DateModified util.UnixTimestamp `json:"dateModified"` // Policy is map of capabilities to current policies. Policy SearchResultPolicy `json:"policy"` // CustomTaskType is custom task type. CustomTaskType string `json:"custom.task_type"` // CustomSeverity is task severity custom value. CustomSeverity string `json:"custom.severity"` } `json:"fields"` Attachments struct { // Columns contains columnt data if requested. Columns struct { // Boards is ???. Boards *ManiphestSearchAttachmentColumnBoards `json:"boards"` } `json:"columns"` // Subscribers contains subscribers attachment data. Subscribers struct { // SubscriberPHIDs is a collection of PHIDs of persons subscribed to a task. SubscriberPHIDs []string `json:"subscriberPHIDs"` // SubscriberCount is number of subscribers. SubscriberCount int `json:"subscriberCount"` // ViewerIsSubscribed specifies if request is subscribed to this task. ViewerIsSubscribed bool `json:"viewerIsSubscribed"` } `json:"subscribers"` // Projects contains project attachment data. Projects struct { // ProjectPHIDs is collection of PHIDs of projects that this task is tagged with. ProjectPHIDs []string `json:"projectPHIDs"` } `json:"projects"` } `json:"attachments"` } // ManiphestSearchResultStatus represents a maniphest status as returned by maniphest.search. type ManiphestSearchResultStatus struct { // Value is status value. Value string `json:"value"` // Name is status name. Name string `json:"name"` // Color is ???. Color string `json:"color"` } // ManiphestSearchResultPriority represents a priority for a maniphest item in a search result. type ManiphestSearchResultPriority struct { // Value is priority value. Value int `json:"value"` // Subpriority is task subpriority value. Subpriority float64 `json:"subpriority"` // Name is priority name. Name string `json:"name"` // Color is ???. Color string `json:"color"` } // SearchResultPolicy reflects the permission policy on a maniphest item in a search result. type SearchResultPolicy struct { // View is ???. View string `json:"view"` // Interact is ???. Interact string `json:"interact"` // Edit is ???. Edit string `json:"edit"` } // ManiphestSearchResultColumn represents what workboard columns an item may be a member of. type ManiphestSearchResultColumn struct { // ID is column ID. ID int // PHID is column PHID. PHID string // Name is column name. Name string // ProjectPHID is PHID of project where column is defined. ProjectPHID string }