-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A Haskell interface to the Bugzilla native REST API -- -- This package is designed to provide an easy-to-use, type-safe -- interface to querying Bugzilla from Haskell. -- -- This is a friendly fork of Seth Fowler's library, with updates and API -- tweaks needed for bugzilla.redhat.com. @package bugzilla-redhat @version 1.0.0 -- | This package is designed to provide an easy-to-use, typesafe interface -- to querying Bugzilla from Haskell. -- -- A modified version of Web.Bugzilla to support the list fields in Red -- Hat's modified bugzilla API. -- -- A very simple program using this package might look like this: -- --
--   let session = anonymousSession "https://bugzilla.redhat.com"
--       user = "me@example.org"
--       query = AssignedToField .==. user .&&.
--               FlagRequesteeField .==. user .&&.
--               (FlagsField `contains` "review" .||. FlagsField `contains` "feedback")
--   bugs <- searchBugs session query
--   mapM_ (putStrLn . show . bugSummary) bugs
--   
-- -- There's a more in-depth demo program included with the source code to -- this package. module Web.RedHatBugzilla -- | Creates a BugzillaSession using the provided api key. apikeySession :: BugzillaServer -> BugzillaApiKey -> BugzillaSession -- | Creates an anonymous BugzillaSession. Note that some content -- will be hidden by Bugzilla when you make queries in this state. anonymousSession :: BugzillaServer -> BugzillaSession type BugzillaServer = Text -- | A session for Bugzilla queries. Use anonymousSession and -- loginSession, as appropriate, to create one. data BugzillaSession AnonymousSession :: BugzillaServer -> BugzillaSession ApiKeySession :: BugzillaServer -> BugzillaApiKey -> BugzillaSession newtype BugzillaApiKey BugzillaApiKey :: Text -> BugzillaApiKey -- | Searches Bugzilla and returns a list of Bugs. The -- SearchExpression can be constructed conveniently using the -- operators in Web.Bugzilla.Search. searchBugs :: BugzillaSession -> SearchExpression -> IO [Bug] -- | Similar to searchBugs, but return _all fields. searchBugsAll :: BugzillaSession -> SearchExpression -> IO [Bug] -- | Like searchBugs, but returns a list of BugIds. You can -- retrieve the Bug for each BugId using getBug. The -- combination of searchBugs' and getBug is much less -- efficient than searchBugs. searchBugs' is suitable for -- cases where you won't need to call getBug most of the time - -- for example, polling to determine whether the set of bugs returned by -- a query has changed. searchBugs' :: BugzillaSession -> SearchExpression -> IO [BugId] -- | Search Bugzilla and returns a limited number of results. You can call -- this repeatedly and use offset to retrieve the results of a -- large query incrementally. Note that most Bugzillas won't return all -- of the results for a very large query by default, but you can request -- this by calling searchBugsWithLimit with 0 for the limit. searchBugsWithLimit :: BugzillaSession -> Int -> Int -> SearchExpression -> IO [Bug] -- | Similar to searchBugsWithLimit, but return _all fields. searchBugsAllWithLimit :: BugzillaSession -> Int -> Int -> SearchExpression -> IO [Bug] -- | Like searchBugsWithLimit, but returns a list of BugIds. -- See searchBugs' for more discussion. searchBugsWithLimit' :: BugzillaSession -> Int -> Int -> SearchExpression -> IO [BugId] -- | Retrieve a bug by bug number. getBug :: BugzillaSession -> BugId -> IO (Maybe Bug) -- | Retrieve all bug field by bug number getBugAll :: BugzillaSession -> BugId -> IO (Maybe Bug) -- | Retrieve a bug by attachment number. getAttachment :: BugzillaSession -> AttachmentId -> IO (Maybe Attachment) -- | Get all attachments for a bug. getAttachments :: BugzillaSession -> BugId -> IO [Attachment] -- | Get all comments for a bug. getComments :: BugzillaSession -> BugId -> IO [Comment] -- | Get the history for a bug. getHistory :: BugzillaSession -> BugId -> IO History -- | Search user names and emails using a substring search. searchUsers :: BugzillaSession -> Text -> IO [User] -- | Get a user by email. getUser :: BugzillaSession -> UserEmail -> IO (Maybe User) -- | Get a user by user ID. getUserById :: BugzillaSession -> UserId -> IO (Maybe User) newBzRequest :: BugzillaSession -> [Text] -> QueryText -> Request sendBzRequest :: FromJSON a => Request -> IO a intAsText :: Int -> Text -- | All information on how to connect to a host and what should be sent in -- the HTTP request. -- -- If you simply wish to download from a URL, see parseRequest. -- -- The constructor for this data type is not exposed. Instead, you should -- use either the defaultRequest value, or parseRequest -- to construct from a URL, and then use the records below to make -- modifications. This approach allows http-client to add configuration -- options without breaking backwards compatibility. -- -- For example, to construct a POST request, you could do something like: -- --
--   initReq <- parseRequest "http://www.example.com/path"
--   let req = initReq
--               { method = "POST"
--               }
--   
-- -- For more information, please see -- http://www.yesodweb.com/book/settings-types. -- -- Since 0.1.0 data Request type BugId = Int type AttachmentId = Int type CommentId = Int type UserId = Int type EventId = Int type FlagId = Int type FlagType = Int type UserEmail = Text -- | A field which you can search by using searchBugs or track -- changes to using getHistory. To get a human-readable name for a -- field, use fieldName. data Field a [AliasField] :: Field [Text] [AssignedToField] :: Field UserEmail [AttachmentCreatorField] :: Field UserEmail [AttachmentDataField] :: Field Text [AttachmentDescriptionField] :: Field Text [AttachmentFilenameField] :: Field Text [AttachmentIsObsoleteField] :: Field Bool [AttachmentIsPatchField] :: Field Bool [AttachmentIsPrivateField] :: Field Bool [AttachmentMimetypeField] :: Field Text [BlocksField] :: Field Int [BugIdField] :: Field Int [CcField] :: Field UserEmail [CcListAccessibleField] :: Field Bool [ClassificationField] :: Field Text [CommentField] :: Field Text [CommentIsPrivateField] :: Field Text [CommentTagsField] :: Field Text [CommenterField] :: Field UserEmail [ComponentField] :: Field [Text] [ContentField] :: Field Text [CreationDateField] :: Field UTCTime [DaysElapsedField] :: Field Int [DependsOnField] :: Field Int [EverConfirmedField] :: Field Bool [FlagRequesteeField] :: Field UserEmail [FlagSetterField] :: Field UserEmail [FlagsField] :: Field Text [GroupField] :: Field Text [KeywordsField] :: Field [Text] [ChangedField] :: Field UTCTime [CommentCountField] :: Field Int [OperatingSystemField] :: Field Text [HardwareField] :: Field Text [PriorityField] :: Field Text [ProductField] :: Field Text [QaContactField] :: Field UserEmail [ReporterField] :: Field UserEmail [ReporterAccessibleField] :: Field Bool [ResolutionField] :: Field Text [RestrictCommentsField] :: Field Bool [SeeAlsoField] :: Field Text [SeverityField] :: Field Text [StatusField] :: Field Text [WhiteboardField] :: Field Text [SummaryField] :: Field Text [TagsField] :: Field Text [TargetMilestoneField] :: Field Text [TimeSinceAssigneeTouchedField] :: Field Int [BugURLField] :: Field Text [VersionField] :: Field Text [VotesField] :: Field Text [CustomField] :: Text -> Field Text -- | A Bugzilla user. data User User :: !UserId -> Maybe UserEmail -> Text -> Text -> User [userId] :: User -> !UserId [userEmail] :: User -> Maybe UserEmail [userName] :: User -> Text [userRealName] :: User -> Text -- | Flags, which may be set on an attachment or on a bug directly. data Flag Flag :: !FlagId -> !FlagType -> Text -> UserEmail -> Text -> UTCTime -> UTCTime -> Maybe UserEmail -> Flag [flagId] :: Flag -> !FlagId [flagTypeId] :: Flag -> !FlagType [flagName] :: Flag -> Text [flagSetter] :: Flag -> UserEmail [flagStatus] :: Flag -> Text [flagCreationDate] :: Flag -> UTCTime [flagModificationDate] :: Flag -> UTCTime [flagRequestee] :: Flag -> Maybe UserEmail -- | A Bugzilla bug. data Bug Bug :: !BugId -> Maybe [Text] -> UserEmail -> User -> [BugId] -> [UserEmail] -> [User] -> Text -> [Text] -> UTCTime -> UserEmail -> User -> [BugId] -> Maybe BugId -> Maybe [Flag] -> [Text] -> Bool -> Bool -> Bool -> Bool -> [Text] -> UTCTime -> Text -> Text -> Text -> Text -> UserEmail -> Text -> [Text] -> Text -> Text -> Text -> Text -> Text -> [Text] -> Text -> KeyMap Text -> Maybe [ExternalBug] -> Bug [bugId] :: Bug -> !BugId [bugAlias] :: Bug -> Maybe [Text] [bugAssignedTo] :: Bug -> UserEmail [bugAssignedToDetail] :: Bug -> User [bugBlocks] :: Bug -> [BugId] [bugCc] :: Bug -> [UserEmail] [bugCcDetail] :: Bug -> [User] [bugClassification] :: Bug -> Text [bugComponent] :: Bug -> [Text] [bugCreationTime] :: Bug -> UTCTime [bugCreator] :: Bug -> UserEmail [bugCreatorDetail] :: Bug -> User [bugDependsOn] :: Bug -> [BugId] [bugDupeOf] :: Bug -> Maybe BugId [bugFlags] :: Bug -> Maybe [Flag] [bugGroups] :: Bug -> [Text] [bugIsCcAccessible] :: Bug -> Bool [bugIsConfirmed] :: Bug -> Bool [bugIsCreatorAccessible] :: Bug -> Bool [bugIsOpen] :: Bug -> Bool [bugKeywords] :: Bug -> [Text] [bugLastChangeTime] :: Bug -> UTCTime [bugOpSys] :: Bug -> Text [bugPlatform] :: Bug -> Text [bugPriority] :: Bug -> Text [bugProduct] :: Bug -> Text [bugQaContact] :: Bug -> UserEmail [bugResolution] :: Bug -> Text [bugSeeAlso] :: Bug -> [Text] [bugSeverity] :: Bug -> Text [bugStatus] :: Bug -> Text [bugSummary] :: Bug -> Text [bugTargetMilestone] :: Bug -> Text [bugUrl] :: Bug -> Text [bugVersion] :: Bug -> [Text] [bugWhiteboard] :: Bug -> Text [bugCustomFields] :: Bug -> KeyMap Text [bugExternalBugs] :: Bug -> Maybe [ExternalBug] -- | An external bug. data ExternalBug ExternalBug :: Text -> Int -> Text -> Text -> Text -> Int -> ExternalType -> ExternalBug [externalDescription] :: ExternalBug -> Text [externalBzId] :: ExternalBug -> Int [externalPriority] :: ExternalBug -> Text [externalBugId] :: ExternalBug -> Text [externalStatus] :: ExternalBug -> Text [externalId] :: ExternalBug -> Int [externalType] :: ExternalBug -> ExternalType -- | An external bug type data ExternalType ExternalType :: Text -> Text -> Int -> Text -> Text -> ExternalType [externalTypeDescription] :: ExternalType -> Text [externalTypeUrl] :: ExternalType -> Text [externalTypeId] :: ExternalType -> Int [externalTypeType] :: ExternalType -> Text [externalTypeFullUrl] :: ExternalType -> Text -- | An attachment to a bug. data Attachment Attachment :: !AttachmentId -> !BugId -> Text -> Text -> UserEmail -> Bool -> Bool -> Bool -> [Flag] -> UTCTime -> UTCTime -> Text -> !Int -> Text -> Attachment [attachmentId] :: Attachment -> !AttachmentId [attachmentBugId] :: Attachment -> !BugId [attachmentFileName] :: Attachment -> Text [attachmentSummary] :: Attachment -> Text [attachmentCreator] :: Attachment -> UserEmail [attachmentIsPrivate] :: Attachment -> Bool [attachmentIsObsolete] :: Attachment -> Bool [attachmentIsPatch] :: Attachment -> Bool [attachmentFlags] :: Attachment -> [Flag] [attachmentCreationTime] :: Attachment -> UTCTime [attachmentLastChangeTime] :: Attachment -> UTCTime [attachmentContentType] :: Attachment -> Text [attachmentSize] :: Attachment -> !Int [attachmentData] :: Attachment -> Text -- | A bug comment. To display these the way Bugzilla does, you'll need to -- call getUser and use the userRealName for each user. data Comment Comment :: !CommentId -> !BugId -> Maybe AttachmentId -> !Int -> Text -> UserEmail -> UTCTime -> Bool -> Comment [commentId] :: Comment -> !CommentId [commentBugId] :: Comment -> !BugId [commentAttachmentId] :: Comment -> Maybe AttachmentId [commentCount] :: Comment -> !Int [commentText] :: Comment -> Text [commentCreator] :: Comment -> UserEmail [commentCreationTime] :: Comment -> UTCTime [commentIsPrivate] :: Comment -> Bool -- | History information for a bug. data History History :: !BugId -> [HistoryEvent] -> History [historyBugId] :: History -> !BugId [historyEvents] :: History -> [HistoryEvent] -- | An event in a bug's history. data HistoryEvent HistoryEvent :: EventId -> UTCTime -> UserEmail -> [Change] -> HistoryEvent -- | A sequential event id. [historyEventId] :: HistoryEvent -> EventId -- | When the event occurred. [historyEventTime] :: HistoryEvent -> UTCTime -- | Which user was responsible. [historyEventUser] :: HistoryEvent -> UserEmail -- | All the changes which are part of this event. [historyEventChanges] :: HistoryEvent -> [Change] -- | A single change which is part of an event. Different constructors are -- used according to the type of the field. The Modification -- describes the value of the field before and after the change. data Change TextFieldChange :: Field Text -> Modification Text -> Change ListFieldChange :: Field [Text] -> Modification [Text] -> Change IntFieldChange :: Field Int -> Modification Int -> Change TimeFieldChange :: Field UTCTime -> Modification UTCTime -> Change BoolFieldChange :: Field Bool -> Modification Bool -> Change -- | A description of how a field changed during a HistoryEvent. data (Eq a, Show a) => Modification a Modification :: Maybe a -> Maybe a -> Maybe AttachmentId -> Modification a [modRemoved] :: Modification a -> Maybe a [modAdded] :: Modification a -> Maybe a [modAttachmentId] :: Modification a -> Maybe AttachmentId -- | Provides a human-readable name for a Field. fieldName :: Field a -> Text data BugzillaException BugzillaJSONParseError :: String -> BugzillaException BugzillaAPIError :: Int -> String -> BugzillaException BugzillaUnexpectedValue :: String -> BugzillaException -- | A modified version of Web.Bugzilla.Search to support the list fields -- in Red Hat's modified bugzilla API. module Web.RedHatBugzilla.Search (.==.) :: FieldType a => Field a -> a -> SearchExpression infix 4 .==. (./=.) :: FieldType a => Field a -> a -> SearchExpression infix 4 ./=. (.<.) :: FieldType a => Field a -> a -> SearchExpression infix 4 .<. (.<=.) :: FieldType a => Field a -> a -> SearchExpression infix 4 .<=. (.>.) :: FieldType a => Field a -> a -> SearchExpression infix 4 .>. (.>=.) :: FieldType a => Field a -> a -> SearchExpression infix 4 .>=. (.=~.) :: FieldType a => Field a -> a -> SearchExpression (./=~.) :: FieldType a => Field a -> a -> SearchExpression equalsAny :: FieldType a => Field a -> [a] -> SearchExpression contains :: Field Text -> Text -> SearchExpression containsCase :: Field Text -> Text -> SearchExpression containsAny :: Field Text -> [Text] -> SearchExpression containsAll :: Field Text -> [Text] -> SearchExpression changedBefore :: FieldType a => Field a -> UTCTime -> SearchExpression changedAfter :: FieldType a => Field a -> UTCTime -> SearchExpression -- | Filter bug changed since UTCTime changedSince :: UTCTime -> SearchExpression -- | Filter bug changed until UTCTime changedUntil :: UTCTime -> SearchExpression -- | Filter bug changed in range changedRange :: UTCTime -> UTCTime -> SearchExpression changedFrom :: FieldType a => Field a -> a -> SearchExpression changedTo :: FieldType a => Field a -> a -> SearchExpression changedBy :: FieldType a => Field a -> UserEmail -> SearchExpression contentMatches :: Text -> SearchExpression isEmpty :: FieldType a => Field a -> SearchExpression isNotEmpty :: FieldType a => Field a -> SearchExpression (.&&.) :: SearchExpression -> SearchExpression -> SearchExpression infixr 3 .&&. (.||.) :: SearchExpression -> SearchExpression -> SearchExpression infixr 2 .||. not' :: SearchExpression -> SearchExpression -- | A field which you can search by using searchBugs or track -- changes to using getHistory. To get a human-readable name for a -- field, use fieldName. data Field a [AliasField] :: Field [Text] [AssignedToField] :: Field UserEmail [AttachmentCreatorField] :: Field UserEmail [AttachmentDataField] :: Field Text [AttachmentDescriptionField] :: Field Text [AttachmentFilenameField] :: Field Text [AttachmentIsObsoleteField] :: Field Bool [AttachmentIsPatchField] :: Field Bool [AttachmentIsPrivateField] :: Field Bool [AttachmentMimetypeField] :: Field Text [BlocksField] :: Field Int [BugIdField] :: Field Int [CcField] :: Field UserEmail [CcListAccessibleField] :: Field Bool [ClassificationField] :: Field Text [CommentField] :: Field Text [CommentIsPrivateField] :: Field Text [CommentTagsField] :: Field Text [CommenterField] :: Field UserEmail [ComponentField] :: Field [Text] [ContentField] :: Field Text [CreationDateField] :: Field UTCTime [DaysElapsedField] :: Field Int [DependsOnField] :: Field Int [EverConfirmedField] :: Field Bool [FlagRequesteeField] :: Field UserEmail [FlagSetterField] :: Field UserEmail [FlagsField] :: Field Text [GroupField] :: Field Text [KeywordsField] :: Field [Text] [ChangedField] :: Field UTCTime [CommentCountField] :: Field Int [OperatingSystemField] :: Field Text [HardwareField] :: Field Text [PriorityField] :: Field Text [ProductField] :: Field Text [QaContactField] :: Field UserEmail [ReporterField] :: Field UserEmail [ReporterAccessibleField] :: Field Bool [ResolutionField] :: Field Text [RestrictCommentsField] :: Field Bool [SeeAlsoField] :: Field Text [SeverityField] :: Field Text [StatusField] :: Field Text [WhiteboardField] :: Field Text [SummaryField] :: Field Text [TagsField] :: Field Text [TargetMilestoneField] :: Field Text [TimeSinceAssigneeTouchedField] :: Field Int [BugURLField] :: Field Text [VersionField] :: Field Text [VotesField] :: Field Text [CustomField] :: Text -> Field Text -- | A Boolean expression which can be used to query Bugzilla. data SearchExpression evalSearchExpr :: SearchExpression -> [QueryPart]