@@ -233,6 +233,63 @@ type QueryString = [(BS.ByteString, Maybe BS.ByteString)]
233233-- | Count of elements
234234type Count = Int
235235
236+
237+
238+ data MembershipRole
239+ = MembershipRoleMember
240+ | MembershipRoleAdmin
241+ | MembershipRoleBillingManager
242+ deriving
243+ (Eq , Ord , Show , Enum , Bounded , Generic , Typeable , Data )
244+
245+ instance NFData MembershipRole where rnf = genericRnf
246+ instance Binary MembershipRole
247+
248+ instance FromJSON MembershipRole where
249+ parseJSON = withText " MembershipRole" $ \ t -> case T. toLower t of
250+ " member" -> pure MembershipRoleMember
251+ " admin" -> pure MembershipRoleAdmin
252+ " billing_manager" -> pure MembershipRoleBillingManager
253+ _ -> fail $ " Unknown MembershipRole: " <> T. unpack t
254+
255+ data MembershipState
256+ = MembershipPending
257+ | MembershipActive
258+ deriving (Show , Data , Typeable , Eq , Ord , Generic )
259+
260+ instance NFData MembershipState where rnf = genericRnf
261+ instance Binary MembershipState
262+
263+ instance FromJSON MembershipState where
264+ parseJSON = withText " MembershipState" $ \ t -> case T. toLower t of
265+ " active" -> pure MembershipActive
266+ " pending" -> pure MembershipPending
267+ _ -> fail $ " Unknown MembershipState: " <> T. unpack t
268+
269+
270+ data Membership = Membership
271+ { membershipUrl :: ! URL
272+ , membershipState :: ! MembershipState
273+ , membershipRole :: ! MembershipRole
274+ , membershipOrganizationUrl :: ! URL
275+ , membershipOrganization :: ! SimpleOrganization
276+ , membershipUser :: ! SimpleUser
277+ }
278+ deriving (Show , Data , Typeable , Eq , Ord , Generic )
279+
280+ instance NFData Membership where rnf = genericRnf
281+ instance Binary Membership
282+
283+ instance FromJSON Membership where
284+ parseJSON = withObject " Membership" $ \ o -> Membership
285+ <$> o .: " url"
286+ <*> o .: " state"
287+ <*> o .: " role"
288+ <*> o .: " organization_url"
289+ <*> o .: " organization"
290+ <*> o .: " user"
291+
292+
236293-------------------------------------------------------------------------------
237294-- IssueNumber
238295-------------------------------------------------------------------------------
0 commit comments