@@ -233,6 +233,63 @@ type QueryString = [(BS.ByteString, Maybe BS.ByteString)]
233
233
-- | Count of elements
234
234
type Count = Int
235
235
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
+
236
293
-------------------------------------------------------------------------------
237
294
-- IssueNumber
238
295
-------------------------------------------------------------------------------
0 commit comments