|
@@ -1,6 +1,26 @@
|
|
|
{-# LANGUAGE Rank2Types #-}
|
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
|
|
+
|
|
|
+Module : Codec.ActivityStream.DynamicSchema
|
|
|
+Description : A (more dynamic) interface to the Activity Streams Base Schema
|
|
|
+Copyright : (c) Getty Ritter, 2014
|
|
|
+Maintainer : gdritter@galois.com
|
|
|
+
|
|
|
+This is an interface to the extended ActivityStreams schema which defines
|
|
|
+an extensive set of @verb@ values, additional @objectType@ values, and a
|
|
|
+set of extended properties for 'Object's.
|
|
|
+
|
|
|
+Most of the inline documentation is drawn directly from the
|
|
|
+<https://github.com/activitystreams/activity-schema/blob/master/activity-schema.md Activity Base Schema draft>
|
|
|
+specification, with minor modifications
|
|
|
+to refer to the corresponding data types in this module and to clarify
|
|
|
+certain aspects. This is not an approved draft, and as such may be
|
|
|
+subject to changes which will be reflected in this module. In contrast to
|
|
|
+"Codec.ActivityStream", the API in this module makes __no guarantees about
|
|
|
+long-term stability__.
|
|
|
+-}
|
|
|
+
|
|
|
module Codec.ActivityStream.DynamicSchema
|
|
|
( module Codec.ActivityStream.Dynamic
|
|
|
|
|
@@ -18,7 +38,7 @@ module Codec.ActivityStream.DynamicSchema
|
|
|
, bnMd5
|
|
|
, bnMimeType
|
|
|
|
|
|
- , evAttended
|
|
|
+ , evAttendedBy
|
|
|
, evAttending
|
|
|
, evEndTime
|
|
|
, evInvited
|
|
@@ -57,6 +77,8 @@ module Codec.ActivityStream.DynamicSchema
|
|
|
, getSource
|
|
|
, getStartTime
|
|
|
, getEndTime
|
|
|
+ , oTags
|
|
|
+
|
|
|
, Mood
|
|
|
, moodRest
|
|
|
, moodDisplayName
|
|
@@ -99,65 +121,107 @@ avStream = makeAesonLensMb "stream" oRest
|
|
|
bnCompression :: Lens' Object (Maybe Text)
|
|
|
bnCompression = makeAesonLensMb "compression" oRest
|
|
|
|
|
|
+
|
|
|
bnData :: Lens' Object (Maybe Text)
|
|
|
bnData = makeAesonLensMb "data" oRest
|
|
|
-
|
|
|
+
|
|
|
bnFileUrl :: Lens' Object (Maybe Text)
|
|
|
bnFileUrl = makeAesonLensMb "fileUrl" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
bnLength :: Lens' Object (Maybe Text)
|
|
|
bnLength = makeAesonLensMb "length" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
bnMd5 :: Lens' Object (Maybe Text)
|
|
|
bnMd5 = makeAesonLensMb "md5" oRest
|
|
|
|
|
|
+
|
|
|
bnMimeType :: Lens' Object (Maybe Text)
|
|
|
bnMimeType = makeAesonLensMb "mimeType" oRest
|
|
|
|
|
|
|
|
|
|
|
|
-evAttended :: Lens' Object (Maybe Collection)
|
|
|
-evAttended = makeAesonLensMb "attended" oRest
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+evAttendedBy :: Lens' Object (Maybe Collection)
|
|
|
+evAttendedBy = makeAesonLensMb "attendedBy" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
evAttending :: Lens' Object (Maybe Collection)
|
|
|
evAttending = makeAesonLensMb "attending" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
evEndTime :: Lens' Object (Maybe DateTime)
|
|
|
evEndTime = makeAesonLensMb "endTime" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
evInvited :: Lens' Object (Maybe Collection)
|
|
|
evInvited = makeAesonLensMb "invited" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
evMaybeAttending :: Lens' Object (Maybe Collection)
|
|
|
evMaybeAttending = makeAesonLensMb "maybeAttending" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
evNotAttendedBy :: Lens' Object (Maybe Collection)
|
|
|
evNotAttendedBy = makeAesonLensMb "notAttendedBy" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
evNotAttending :: Lens' Object (Maybe Collection)
|
|
|
evNotAttending = makeAesonLensMb "notAttending" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
evStartTime :: Lens' Object (Maybe DateTime)
|
|
|
evStartTime = makeAesonLensMb "startTime" oRest
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
isTypes :: Lens' Object (Maybe [Text])
|
|
|
isTypes = makeAesonLensMb "types" oRest
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
pmScope :: Lens' Object (Maybe Object)
|
|
|
pmScope = makeAesonLensMb "scope" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
pmActions :: Lens' Object (Maybe [Text])
|
|
|
pmActions = makeAesonLensMb "actions" oRest
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
plPosition :: Lens' Object (Maybe PlacePosition)
|
|
|
plPosition = makeAesonLensMb "position" oRest
|
|
|
|
|
|
+
|
|
|
plAddress :: Lens' Object (Maybe PlaceAddress)
|
|
|
plAddress = makeAesonLensMb "address" oRest
|
|
|
|
|
@@ -192,60 +256,129 @@ instance ToJSON PlaceAddress where
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
rlMembers :: Lens' Object (Maybe [Object])
|
|
|
rlMembers = makeAesonLensMb "members" oRest
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
tsActor :: Lens' Object (Maybe Object)
|
|
|
tsActor = makeAesonLensMb "actor" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
tsBy :: Lens' Object (Maybe DateTime)
|
|
|
tsBy = makeAesonLensMb "by" oRest
|
|
|
|
|
|
+
|
|
|
tsObject :: Lens' Object (Maybe Object)
|
|
|
tsObject = makeAesonLensMb "object" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
tsPrerequisites :: Lens' Object (Maybe [Object])
|
|
|
tsPrerequisites = makeAesonLensMb "prerequisites" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
tsRequired :: Lens' Object (Maybe Bool)
|
|
|
tsRequired = makeAesonLensMb "required" oRest
|
|
|
|
|
|
+
|
|
|
tsSupersedes :: Lens' Object (Maybe [Object])
|
|
|
tsSupersedes = makeAesonLensMb "supersedes" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
tsVerb :: Lens' Object (Maybe SchemaVerb)
|
|
|
tsVerb = makeAesonLensMb "verb" oRest
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
acContext :: Lens' Activity (Maybe Object)
|
|
|
acContext = makeAesonLensMb "context" acRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
getLocation :: Lens' a Aeson.Object -> Lens' a (Maybe Object)
|
|
|
getLocation = makeAesonLensMb "location"
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
oMood :: Lens' Object (Maybe Mood)
|
|
|
oMood = makeAesonLensMb "mood" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
oRating :: Lens' Object (Maybe Double)
|
|
|
oRating = makeAesonLensMb "rating" oRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
acResult :: Lens' Activity (Maybe Object)
|
|
|
acResult = makeAesonLensMb "result" acRest
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
getSource :: Lens' a Aeson.Object -> Lens' a (Maybe Object)
|
|
|
getSource = makeAesonLensMb "source"
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
getStartTime :: Lens' a Aeson.Object -> Lens' a (Maybe Text)
|
|
|
getStartTime = makeAesonLensMb "startTime"
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
getEndTime :: Lens' a Aeson.Object -> Lens' a (Maybe Text)
|
|
|
getEndTime = makeAesonLensMb "endTime"
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+oTags :: Lens' Object (Maybe [Object])
|
|
|
+oTags = makeAesonLensMb "tags" oRest
|
|
|
+
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
data Mood = Mood { fromMood :: Aeson.Object } deriving (Eq, Show)
|
|
|
|
|
|
instance FromJSON Mood where
|
|
@@ -258,11 +391,15 @@ instance FromJSON Mood where
|
|
|
instance ToJSON Mood where
|
|
|
toJSON = Aeson.Object . fromMood
|
|
|
|
|
|
+
|
|
|
moodRest :: Lens' Mood Aeson.Object
|
|
|
moodRest = makeLens fromMood (\ o' m -> m { fromMood = o' })
|
|
|
|
|
|
+
|
|
|
+
|
|
|
moodDisplayName :: Lens' Mood Text
|
|
|
moodDisplayName = makeAesonLens "displayName" moodRest
|
|
|
|
|
|
+
|
|
|
moodImage :: Lens' Mood MediaLink
|
|
|
moodImage = makeAesonLens "image" moodRest
|