aws 0.7.6.4 → 0.8.0
raw patch · 26 files changed
+889/−41 lines, 26 filesdep ~conduitdep ~cryptohashdep ~http-conduitPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: conduit, cryptohash, http-conduit, xml-conduit
API changes (from Hackage documentation)
+ Aws.Core: Head :: Method
+ Aws.Ec2.InstanceMetadata: MetadataNotFound :: String -> InstanceMetadataException
+ Aws.Ec2.InstanceMetadata: data InstanceMetadataException
+ Aws.Ec2.InstanceMetadata: getInstanceMetadata :: Manager -> String -> String -> ResIO ByteString
+ Aws.Ec2.InstanceMetadata: getInstanceMetadataFirst :: Manager -> String -> ResIO ByteString
+ Aws.Ec2.InstanceMetadata: getInstanceMetadataListing :: Manager -> String -> ResIO [String]
+ Aws.Ec2.InstanceMetadata: getInstanceMetadataOrFirst :: Manager -> String -> Maybe String -> ResIO ByteString
+ Aws.Ec2.InstanceMetadata: instance Exception InstanceMetadataException
+ Aws.Ec2.InstanceMetadata: instance Show InstanceMetadataException
+ Aws.Ec2.InstanceMetadata: instance Typeable InstanceMetadataException
+ Aws.S3.Commands.DeleteObjects: DORDeleted :: Text -> Maybe Text -> Maybe Text -> DORDeleted
+ Aws.S3.Commands.DeleteObjects: DORErrors :: Text -> Text -> Text -> DORErrors
+ Aws.S3.Commands.DeleteObjects: DeleteObjects :: Bucket -> [(Object, Maybe Text)] -> Bool -> Maybe Text -> DeleteObjects
+ Aws.S3.Commands.DeleteObjects: DeleteObjectsResponse :: [DORDeleted] -> [DORErrors] -> DeleteObjectsResponse
+ Aws.S3.Commands.DeleteObjects: data DORDeleted
+ Aws.S3.Commands.DeleteObjects: data DORErrors
+ Aws.S3.Commands.DeleteObjects: data DeleteObjects
+ Aws.S3.Commands.DeleteObjects: data DeleteObjectsResponse
+ Aws.S3.Commands.DeleteObjects: ddDeleteMarkerVersionId :: DORDeleted -> Maybe Text
+ Aws.S3.Commands.DeleteObjects: ddKey :: DORDeleted -> Text
+ Aws.S3.Commands.DeleteObjects: ddVersionId :: DORDeleted -> Maybe Text
+ Aws.S3.Commands.DeleteObjects: deCode :: DORErrors -> Text
+ Aws.S3.Commands.DeleteObjects: deKey :: DORErrors -> Text
+ Aws.S3.Commands.DeleteObjects: deMessage :: DORErrors -> Text
+ Aws.S3.Commands.DeleteObjects: deleteObjects :: Bucket -> [Text] -> DeleteObjects
+ Aws.S3.Commands.DeleteObjects: dorDeleted :: DeleteObjectsResponse -> [DORDeleted]
+ Aws.S3.Commands.DeleteObjects: dorErrors :: DeleteObjectsResponse -> [DORErrors]
+ Aws.S3.Commands.DeleteObjects: dosBucket :: DeleteObjects -> Bucket
+ Aws.S3.Commands.DeleteObjects: dosMultiFactorAuthentication :: DeleteObjects -> Maybe Text
+ Aws.S3.Commands.DeleteObjects: dosObjects :: DeleteObjects -> [(Object, Maybe Text)]
+ Aws.S3.Commands.DeleteObjects: dosQuiet :: DeleteObjects -> Bool
+ Aws.S3.Commands.DeleteObjects: instance AsMemoryResponse DeleteObjectsResponse
+ Aws.S3.Commands.DeleteObjects: instance ResponseConsumer DeleteObjects DeleteObjectsResponse
+ Aws.S3.Commands.DeleteObjects: instance Show DORDeleted
+ Aws.S3.Commands.DeleteObjects: instance Show DORErrors
+ Aws.S3.Commands.DeleteObjects: instance Show DeleteObjects
+ Aws.S3.Commands.DeleteObjects: instance Show DeleteObjectsResponse
+ Aws.S3.Commands.DeleteObjects: instance SignQuery DeleteObjects
+ Aws.S3.Commands.DeleteObjects: instance Transaction DeleteObjects DeleteObjectsResponse
+ Aws.S3.Commands.GetBucket: gbrIsTruncated :: GetBucketResponse -> Bool
+ Aws.S3.Commands.GetObject: goResponseContentRange :: GetObject -> Maybe (Int, Int)
+ Aws.S3.Commands.HeadObject: HeadObject :: Bucket -> Object -> Maybe Text -> HeadObject
+ Aws.S3.Commands.HeadObject: HeadObjectMemoryResponse :: ObjectMetadata -> HeadObjectMemoryResponse
+ Aws.S3.Commands.HeadObject: HeadObjectResponse :: ObjectMetadata -> HeadObjectResponse
+ Aws.S3.Commands.HeadObject: data HeadObject
+ Aws.S3.Commands.HeadObject: data HeadObjectMemoryResponse
+ Aws.S3.Commands.HeadObject: data HeadObjectResponse
+ Aws.S3.Commands.HeadObject: headObject :: Bucket -> Text -> HeadObject
+ Aws.S3.Commands.HeadObject: hoBucket :: HeadObject -> Bucket
+ Aws.S3.Commands.HeadObject: hoObjectName :: HeadObject -> Object
+ Aws.S3.Commands.HeadObject: hoVersionId :: HeadObject -> Maybe Text
+ Aws.S3.Commands.HeadObject: horMetadata :: HeadObjectResponse -> ObjectMetadata
+ Aws.S3.Commands.HeadObject: instance AsMemoryResponse HeadObjectResponse
+ Aws.S3.Commands.HeadObject: instance ResponseConsumer HeadObject HeadObjectResponse
+ Aws.S3.Commands.HeadObject: instance Show HeadObject
+ Aws.S3.Commands.HeadObject: instance Show HeadObjectMemoryResponse
+ Aws.S3.Commands.HeadObject: instance SignQuery HeadObject
+ Aws.S3.Commands.HeadObject: instance Transaction HeadObject HeadObjectResponse
+ Aws.S3.Commands.PutObject: poWebsiteRedirectLocation :: PutObject -> Maybe Text
+ Aws.S3.Core: locationUsWest2 :: LocationConstraint
+ Aws.S3.Core: s3EndpointUsWest2 :: ByteString
+ Aws.Ses.Commands.DeleteIdentity: DeleteIdentity :: Text -> DeleteIdentity
+ Aws.Ses.Commands.DeleteIdentity: DeleteIdentityResponse :: DeleteIdentityResponse
+ Aws.Ses.Commands.DeleteIdentity: data DeleteIdentity
+ Aws.Ses.Commands.DeleteIdentity: data DeleteIdentityResponse
+ Aws.Ses.Commands.DeleteIdentity: instance AsMemoryResponse DeleteIdentityResponse
+ Aws.Ses.Commands.DeleteIdentity: instance Eq DeleteIdentity
+ Aws.Ses.Commands.DeleteIdentity: instance Eq DeleteIdentityResponse
+ Aws.Ses.Commands.DeleteIdentity: instance Ord DeleteIdentity
+ Aws.Ses.Commands.DeleteIdentity: instance Ord DeleteIdentityResponse
+ Aws.Ses.Commands.DeleteIdentity: instance ResponseConsumer DeleteIdentity DeleteIdentityResponse
+ Aws.Ses.Commands.DeleteIdentity: instance Show DeleteIdentity
+ Aws.Ses.Commands.DeleteIdentity: instance Show DeleteIdentityResponse
+ Aws.Ses.Commands.DeleteIdentity: instance SignQuery DeleteIdentity
+ Aws.Ses.Commands.DeleteIdentity: instance Transaction DeleteIdentity DeleteIdentityResponse
+ Aws.Ses.Commands.DeleteIdentity: instance Typeable DeleteIdentity
+ Aws.Ses.Commands.DeleteIdentity: instance Typeable DeleteIdentityResponse
+ Aws.Ses.Commands.GetIdentityDkimAttributes: GetIdentityDkimAttributes :: [Text] -> GetIdentityDkimAttributes
+ Aws.Ses.Commands.GetIdentityDkimAttributes: GetIdentityDkimAttributesResponse :: [IdentityDkimAttributes] -> GetIdentityDkimAttributesResponse
+ Aws.Ses.Commands.GetIdentityDkimAttributes: IdentityDkimAttributes :: Text -> Bool -> [Text] -> Text -> IdentityDkimAttributes
+ Aws.Ses.Commands.GetIdentityDkimAttributes: data GetIdentityDkimAttributes
+ Aws.Ses.Commands.GetIdentityDkimAttributes: data GetIdentityDkimAttributesResponse
+ Aws.Ses.Commands.GetIdentityDkimAttributes: data IdentityDkimAttributes
+ Aws.Ses.Commands.GetIdentityDkimAttributes: idDkimEnabled :: IdentityDkimAttributes -> Bool
+ Aws.Ses.Commands.GetIdentityDkimAttributes: idDkimTokens :: IdentityDkimAttributes -> [Text]
+ Aws.Ses.Commands.GetIdentityDkimAttributes: idDkimVerirficationStatus :: IdentityDkimAttributes -> Text
+ Aws.Ses.Commands.GetIdentityDkimAttributes: idIdentity :: IdentityDkimAttributes -> Text
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance AsMemoryResponse GetIdentityDkimAttributesResponse
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance Eq GetIdentityDkimAttributes
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance Eq GetIdentityDkimAttributesResponse
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance Eq IdentityDkimAttributes
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance Ord GetIdentityDkimAttributes
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance Ord GetIdentityDkimAttributesResponse
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance Ord IdentityDkimAttributes
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance ResponseConsumer GetIdentityDkimAttributes GetIdentityDkimAttributesResponse
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance Show GetIdentityDkimAttributes
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance Show GetIdentityDkimAttributesResponse
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance Show IdentityDkimAttributes
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance SignQuery GetIdentityDkimAttributes
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance Transaction GetIdentityDkimAttributes GetIdentityDkimAttributesResponse
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance Typeable GetIdentityDkimAttributes
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance Typeable GetIdentityDkimAttributesResponse
+ Aws.Ses.Commands.GetIdentityDkimAttributes: instance Typeable IdentityDkimAttributes
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: GetIdentityNotificationAttributes :: [Text] -> GetIdentityNotificationAttributes
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: GetIdentityNotificationAttributesResponse :: [IdentityNotificationAttributes] -> GetIdentityNotificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: IdentityNotificationAttributes :: Text -> Maybe Text -> Maybe Text -> Bool -> IdentityNotificationAttributes
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: data GetIdentityNotificationAttributes
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: data GetIdentityNotificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: data IdentityNotificationAttributes
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: inBounceTopic :: IdentityNotificationAttributes -> Maybe Text
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: inComplaintTopic :: IdentityNotificationAttributes -> Maybe Text
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: inForwardingEnabled :: IdentityNotificationAttributes -> Bool
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: inIdentity :: IdentityNotificationAttributes -> Text
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance AsMemoryResponse GetIdentityNotificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance Eq GetIdentityNotificationAttributes
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance Eq GetIdentityNotificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance Eq IdentityNotificationAttributes
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance Ord GetIdentityNotificationAttributes
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance Ord GetIdentityNotificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance Ord IdentityNotificationAttributes
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance ResponseConsumer GetIdentityNotificationAttributes GetIdentityNotificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance Show GetIdentityNotificationAttributes
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance Show GetIdentityNotificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance Show IdentityNotificationAttributes
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance SignQuery GetIdentityNotificationAttributes
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance Transaction GetIdentityNotificationAttributes GetIdentityNotificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance Typeable GetIdentityNotificationAttributes
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance Typeable GetIdentityNotificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityNotificationAttributes: instance Typeable IdentityNotificationAttributes
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: GetIdentityVerificationAttributes :: [Text] -> GetIdentityVerificationAttributes
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: GetIdentityVerificationAttributesResponse :: [IdentityVerificationAttributes] -> GetIdentityVerificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: IdentityVerificationAttributes :: Text -> Text -> Maybe Text -> IdentityVerificationAttributes
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: data GetIdentityVerificationAttributes
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: data GetIdentityVerificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: data IdentityVerificationAttributes
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance AsMemoryResponse GetIdentityVerificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance Eq GetIdentityVerificationAttributes
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance Eq GetIdentityVerificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance Eq IdentityVerificationAttributes
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance Ord GetIdentityVerificationAttributes
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance Ord GetIdentityVerificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance Ord IdentityVerificationAttributes
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance ResponseConsumer GetIdentityVerificationAttributes GetIdentityVerificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance Show GetIdentityVerificationAttributes
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance Show GetIdentityVerificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance Show IdentityVerificationAttributes
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance SignQuery GetIdentityVerificationAttributes
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance Transaction GetIdentityVerificationAttributes GetIdentityVerificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance Typeable GetIdentityVerificationAttributes
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance Typeable GetIdentityVerificationAttributesResponse
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: instance Typeable IdentityVerificationAttributes
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: ivIdentity :: IdentityVerificationAttributes -> Text
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: ivVerificationStatus :: IdentityVerificationAttributes -> Text
+ Aws.Ses.Commands.GetIdentityVerificationAttributes: ivVerificationToken :: IdentityVerificationAttributes -> Maybe Text
+ Aws.Ses.Commands.ListIdentities: Domain :: IdentityType
+ Aws.Ses.Commands.ListIdentities: EmailAddress :: IdentityType
+ Aws.Ses.Commands.ListIdentities: ListIdentities :: Maybe IdentityType -> Maybe Int -> Maybe Text -> ListIdentities
+ Aws.Ses.Commands.ListIdentities: ListIdentitiesResponse :: [Text] -> ListIdentitiesResponse
+ Aws.Ses.Commands.ListIdentities: data IdentityType
+ Aws.Ses.Commands.ListIdentities: data ListIdentities
+ Aws.Ses.Commands.ListIdentities: data ListIdentitiesResponse
+ Aws.Ses.Commands.ListIdentities: instance AsMemoryResponse ListIdentitiesResponse
+ Aws.Ses.Commands.ListIdentities: instance Eq IdentityType
+ Aws.Ses.Commands.ListIdentities: instance Eq ListIdentities
+ Aws.Ses.Commands.ListIdentities: instance Eq ListIdentitiesResponse
+ Aws.Ses.Commands.ListIdentities: instance Ord IdentityType
+ Aws.Ses.Commands.ListIdentities: instance Ord ListIdentities
+ Aws.Ses.Commands.ListIdentities: instance Ord ListIdentitiesResponse
+ Aws.Ses.Commands.ListIdentities: instance ResponseConsumer ListIdentities ListIdentitiesResponse
+ Aws.Ses.Commands.ListIdentities: instance Show IdentityType
+ Aws.Ses.Commands.ListIdentities: instance Show ListIdentities
+ Aws.Ses.Commands.ListIdentities: instance Show ListIdentitiesResponse
+ Aws.Ses.Commands.ListIdentities: instance SignQuery ListIdentities
+ Aws.Ses.Commands.ListIdentities: instance Transaction ListIdentities ListIdentitiesResponse
+ Aws.Ses.Commands.ListIdentities: instance Typeable IdentityType
+ Aws.Ses.Commands.ListIdentities: instance Typeable ListIdentities
+ Aws.Ses.Commands.ListIdentities: instance Typeable ListIdentitiesResponse
+ Aws.Ses.Commands.ListIdentities: liIdentityType :: ListIdentities -> Maybe IdentityType
+ Aws.Ses.Commands.ListIdentities: liMaxItems :: ListIdentities -> Maybe Int
+ Aws.Ses.Commands.ListIdentities: liNextToken :: ListIdentities -> Maybe Text
+ Aws.Ses.Commands.SetIdentityDkimEnabled: SetIdentityDkimEnabled :: Bool -> Text -> SetIdentityDkimEnabled
+ Aws.Ses.Commands.SetIdentityDkimEnabled: SetIdentityDkimEnabledResponse :: SetIdentityDkimEnabledResponse
+ Aws.Ses.Commands.SetIdentityDkimEnabled: data SetIdentityDkimEnabled
+ Aws.Ses.Commands.SetIdentityDkimEnabled: data SetIdentityDkimEnabledResponse
+ Aws.Ses.Commands.SetIdentityDkimEnabled: instance AsMemoryResponse SetIdentityDkimEnabledResponse
+ Aws.Ses.Commands.SetIdentityDkimEnabled: instance Eq SetIdentityDkimEnabled
+ Aws.Ses.Commands.SetIdentityDkimEnabled: instance Eq SetIdentityDkimEnabledResponse
+ Aws.Ses.Commands.SetIdentityDkimEnabled: instance Ord SetIdentityDkimEnabled
+ Aws.Ses.Commands.SetIdentityDkimEnabled: instance Ord SetIdentityDkimEnabledResponse
+ Aws.Ses.Commands.SetIdentityDkimEnabled: instance ResponseConsumer SetIdentityDkimEnabled SetIdentityDkimEnabledResponse
+ Aws.Ses.Commands.SetIdentityDkimEnabled: instance Show SetIdentityDkimEnabled
+ Aws.Ses.Commands.SetIdentityDkimEnabled: instance Show SetIdentityDkimEnabledResponse
+ Aws.Ses.Commands.SetIdentityDkimEnabled: instance SignQuery SetIdentityDkimEnabled
+ Aws.Ses.Commands.SetIdentityDkimEnabled: instance Transaction SetIdentityDkimEnabled SetIdentityDkimEnabledResponse
+ Aws.Ses.Commands.SetIdentityDkimEnabled: instance Typeable SetIdentityDkimEnabled
+ Aws.Ses.Commands.SetIdentityDkimEnabled: instance Typeable SetIdentityDkimEnabledResponse
+ Aws.Ses.Commands.SetIdentityDkimEnabled: sdDkimEnabled :: SetIdentityDkimEnabled -> Bool
+ Aws.Ses.Commands.SetIdentityDkimEnabled: sdIdentity :: SetIdentityDkimEnabled -> Text
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: SetIdentityFeedbackForwardingEnabled :: Bool -> Text -> SetIdentityFeedbackForwardingEnabled
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: SetIdentityFeedbackForwardingEnabledResponse :: SetIdentityFeedbackForwardingEnabledResponse
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: data SetIdentityFeedbackForwardingEnabled
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: data SetIdentityFeedbackForwardingEnabledResponse
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: instance AsMemoryResponse SetIdentityFeedbackForwardingEnabledResponse
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: instance Eq SetIdentityFeedbackForwardingEnabled
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: instance Eq SetIdentityFeedbackForwardingEnabledResponse
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: instance Ord SetIdentityFeedbackForwardingEnabled
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: instance Ord SetIdentityFeedbackForwardingEnabledResponse
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: instance ResponseConsumer SetIdentityFeedbackForwardingEnabled SetIdentityFeedbackForwardingEnabledResponse
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: instance Show SetIdentityFeedbackForwardingEnabled
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: instance Show SetIdentityFeedbackForwardingEnabledResponse
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: instance SignQuery SetIdentityFeedbackForwardingEnabled
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: instance Transaction SetIdentityFeedbackForwardingEnabled SetIdentityFeedbackForwardingEnabledResponse
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: instance Typeable SetIdentityFeedbackForwardingEnabled
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: instance Typeable SetIdentityFeedbackForwardingEnabledResponse
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: sffForwardingEnabled :: SetIdentityFeedbackForwardingEnabled -> Bool
+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled: sffIdentity :: SetIdentityFeedbackForwardingEnabled -> Text
+ Aws.Ses.Commands.SetIdentityNotificationTopic: Bounce :: NotificationType
+ Aws.Ses.Commands.SetIdentityNotificationTopic: Complaint :: NotificationType
+ Aws.Ses.Commands.SetIdentityNotificationTopic: SetIdentityNotificationTopic :: Text -> NotificationType -> Maybe Text -> SetIdentityNotificationTopic
+ Aws.Ses.Commands.SetIdentityNotificationTopic: SetIdentityNotificationTopicResponse :: SetIdentityNotificationTopicResponse
+ Aws.Ses.Commands.SetIdentityNotificationTopic: data NotificationType
+ Aws.Ses.Commands.SetIdentityNotificationTopic: data SetIdentityNotificationTopic
+ Aws.Ses.Commands.SetIdentityNotificationTopic: data SetIdentityNotificationTopicResponse
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance AsMemoryResponse SetIdentityNotificationTopicResponse
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance Eq NotificationType
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance Eq SetIdentityNotificationTopic
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance Eq SetIdentityNotificationTopicResponse
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance Ord NotificationType
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance Ord SetIdentityNotificationTopic
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance Ord SetIdentityNotificationTopicResponse
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance ResponseConsumer SetIdentityNotificationTopic SetIdentityNotificationTopicResponse
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance Show NotificationType
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance Show SetIdentityNotificationTopic
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance Show SetIdentityNotificationTopicResponse
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance SignQuery SetIdentityNotificationTopic
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance Transaction SetIdentityNotificationTopic SetIdentityNotificationTopicResponse
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance Typeable NotificationType
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance Typeable SetIdentityNotificationTopic
+ Aws.Ses.Commands.SetIdentityNotificationTopic: instance Typeable SetIdentityNotificationTopicResponse
+ Aws.Ses.Commands.SetIdentityNotificationTopic: sntIdentity :: SetIdentityNotificationTopic -> Text
+ Aws.Ses.Commands.SetIdentityNotificationTopic: sntNotificationType :: SetIdentityNotificationTopic -> NotificationType
+ Aws.Ses.Commands.SetIdentityNotificationTopic: sntSnsTopic :: SetIdentityNotificationTopic -> Maybe Text
+ Aws.Ses.Commands.VerifyDomainDkim: VerifyDomainDkim :: Text -> VerifyDomainDkim
+ Aws.Ses.Commands.VerifyDomainDkim: VerifyDomainDkimResponse :: [Text] -> VerifyDomainDkimResponse
+ Aws.Ses.Commands.VerifyDomainDkim: data VerifyDomainDkim
+ Aws.Ses.Commands.VerifyDomainDkim: data VerifyDomainDkimResponse
+ Aws.Ses.Commands.VerifyDomainDkim: instance AsMemoryResponse VerifyDomainDkimResponse
+ Aws.Ses.Commands.VerifyDomainDkim: instance Eq VerifyDomainDkim
+ Aws.Ses.Commands.VerifyDomainDkim: instance Eq VerifyDomainDkimResponse
+ Aws.Ses.Commands.VerifyDomainDkim: instance Ord VerifyDomainDkim
+ Aws.Ses.Commands.VerifyDomainDkim: instance Ord VerifyDomainDkimResponse
+ Aws.Ses.Commands.VerifyDomainDkim: instance ResponseConsumer VerifyDomainDkim VerifyDomainDkimResponse
+ Aws.Ses.Commands.VerifyDomainDkim: instance Show VerifyDomainDkim
+ Aws.Ses.Commands.VerifyDomainDkim: instance Show VerifyDomainDkimResponse
+ Aws.Ses.Commands.VerifyDomainDkim: instance SignQuery VerifyDomainDkim
+ Aws.Ses.Commands.VerifyDomainDkim: instance Transaction VerifyDomainDkim VerifyDomainDkimResponse
+ Aws.Ses.Commands.VerifyDomainDkim: instance Typeable VerifyDomainDkim
+ Aws.Ses.Commands.VerifyDomainDkim: instance Typeable VerifyDomainDkimResponse
+ Aws.Ses.Commands.VerifyDomainIdentity: VerifyDomainIdentity :: Text -> VerifyDomainIdentity
+ Aws.Ses.Commands.VerifyDomainIdentity: VerifyDomainIdentityResponse :: Text -> VerifyDomainIdentityResponse
+ Aws.Ses.Commands.VerifyDomainIdentity: data VerifyDomainIdentity
+ Aws.Ses.Commands.VerifyDomainIdentity: data VerifyDomainIdentityResponse
+ Aws.Ses.Commands.VerifyDomainIdentity: instance AsMemoryResponse VerifyDomainIdentityResponse
+ Aws.Ses.Commands.VerifyDomainIdentity: instance Eq VerifyDomainIdentity
+ Aws.Ses.Commands.VerifyDomainIdentity: instance Eq VerifyDomainIdentityResponse
+ Aws.Ses.Commands.VerifyDomainIdentity: instance Ord VerifyDomainIdentity
+ Aws.Ses.Commands.VerifyDomainIdentity: instance Ord VerifyDomainIdentityResponse
+ Aws.Ses.Commands.VerifyDomainIdentity: instance ResponseConsumer VerifyDomainIdentity VerifyDomainIdentityResponse
+ Aws.Ses.Commands.VerifyDomainIdentity: instance Show VerifyDomainIdentity
+ Aws.Ses.Commands.VerifyDomainIdentity: instance Show VerifyDomainIdentityResponse
+ Aws.Ses.Commands.VerifyDomainIdentity: instance SignQuery VerifyDomainIdentity
+ Aws.Ses.Commands.VerifyDomainIdentity: instance Transaction VerifyDomainIdentity VerifyDomainIdentityResponse
+ Aws.Ses.Commands.VerifyDomainIdentity: instance Typeable VerifyDomainIdentity
+ Aws.Ses.Commands.VerifyDomainIdentity: instance Typeable VerifyDomainIdentityResponse
+ Aws.Ses.Commands.VerifyEmailIdentity: VerifyEmailIdentity :: Text -> VerifyEmailIdentity
+ Aws.Ses.Commands.VerifyEmailIdentity: VerifyEmailIdentityResponse :: VerifyEmailIdentityResponse
+ Aws.Ses.Commands.VerifyEmailIdentity: data VerifyEmailIdentity
+ Aws.Ses.Commands.VerifyEmailIdentity: data VerifyEmailIdentityResponse
+ Aws.Ses.Commands.VerifyEmailIdentity: instance AsMemoryResponse VerifyEmailIdentityResponse
+ Aws.Ses.Commands.VerifyEmailIdentity: instance Eq VerifyEmailIdentity
+ Aws.Ses.Commands.VerifyEmailIdentity: instance Eq VerifyEmailIdentityResponse
+ Aws.Ses.Commands.VerifyEmailIdentity: instance Ord VerifyEmailIdentity
+ Aws.Ses.Commands.VerifyEmailIdentity: instance Ord VerifyEmailIdentityResponse
+ Aws.Ses.Commands.VerifyEmailIdentity: instance ResponseConsumer VerifyEmailIdentity VerifyEmailIdentityResponse
+ Aws.Ses.Commands.VerifyEmailIdentity: instance Show VerifyEmailIdentity
+ Aws.Ses.Commands.VerifyEmailIdentity: instance Show VerifyEmailIdentityResponse
+ Aws.Ses.Commands.VerifyEmailIdentity: instance SignQuery VerifyEmailIdentity
+ Aws.Ses.Commands.VerifyEmailIdentity: instance Transaction VerifyEmailIdentity VerifyEmailIdentityResponse
+ Aws.Ses.Commands.VerifyEmailIdentity: instance Typeable VerifyEmailIdentity
+ Aws.Ses.Commands.VerifyEmailIdentity: instance Typeable VerifyEmailIdentityResponse
+ Aws.Sqs.Core: sqsEndpointUsWest2 :: Endpoint
- Aws.S3.Commands.GetBucket: GetBucketResponse :: Bucket -> Maybe Text -> Maybe Text -> Maybe Int -> Maybe Text -> [ObjectInfo] -> [Text] -> GetBucketResponse
+ Aws.S3.Commands.GetBucket: GetBucketResponse :: Bucket -> Maybe Text -> Maybe Text -> Maybe Int -> Maybe Text -> [ObjectInfo] -> [Text] -> Bool -> GetBucketResponse
- Aws.S3.Commands.GetObject: GetObject :: Bucket -> Object -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> GetObject
+ Aws.S3.Commands.GetObject: GetObject :: Bucket -> Object -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe (Int, Int) -> GetObject
- Aws.S3.Commands.PutObject: PutObject :: Text -> Bucket -> Maybe ByteString -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe MD5 -> Maybe Int -> Maybe CannedAcl -> Maybe StorageClass -> RequestBody (ResourceT IO) -> [(Text, Text)] -> PutObject
+ Aws.S3.Commands.PutObject: PutObject :: Text -> Bucket -> Maybe ByteString -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe MD5 -> Maybe Int -> Maybe CannedAcl -> Maybe StorageClass -> Maybe Text -> RequestBody (ResourceT IO) -> [(Text, Text)] -> PutObject
- Aws.Ses.Commands.SendRawEmail: SendRawEmail :: Maybe Destination -> RawMessage -> Maybe Sender -> SendRawEmail
+ Aws.Ses.Commands.SendRawEmail: SendRawEmail :: [EmailAddress] -> RawMessage -> Maybe Sender -> SendRawEmail
- Aws.Ses.Commands.SendRawEmail: srmDestinations :: SendRawEmail -> Maybe Destination
+ Aws.Ses.Commands.SendRawEmail: srmDestinations :: SendRawEmail -> [EmailAddress]
Files
- Aws/Aws.hs +0/−12
- Aws/Core.hs +5/−6
- Aws/Ec2/InstanceMetadata.hs +34/−0
- Aws/S3/Commands.hs +4/−0
- Aws/S3/Commands/DeleteObjects.hs +126/−0
- Aws/S3/Commands/GetBucket.hs +3/−0
- Aws/S3/Commands/GetObject.hs +14/−10
- Aws/S3/Commands/HeadObject.hs +61/−0
- Aws/S3/Commands/PutObject.hs +4/−2
- Aws/S3/Core.hs +5/−1
- Aws/Ses/Commands.hs +22/−0
- Aws/Ses/Commands/DeleteIdentity.hs +39/−0
- Aws/Ses/Commands/GetIdentityDkimAttributes.hs +63/−0
- Aws/Ses/Commands/GetIdentityNotificationAttributes.hs +64/−0
- Aws/Ses/Commands/GetIdentityVerificationAttributes.hs +64/−0
- Aws/Ses/Commands/ListIdentities.hs +63/−0
- Aws/Ses/Commands/SendRawEmail.hs +9/−2
- Aws/Ses/Commands/SetIdentityDkimEnabled.hs +41/−0
- Aws/Ses/Commands/SetIdentityFeedbackForwardingEnabled.hs +43/−0
- Aws/Ses/Commands/SetIdentityNotificationTopic.hs +57/−0
- Aws/Ses/Commands/VerifyDomainDkim.hs +40/−0
- Aws/Ses/Commands/VerifyDomainIdentity.hs +41/−0
- Aws/Ses/Commands/VerifyEmailIdentity.hs +39/−0
- Aws/Sqs/Core.hs +9/−1
- README.org +19/−1
- aws.cabal +20/−6
Aws/Aws.hs view
@@ -263,11 +263,7 @@ -> ServiceConfiguration r NormalQuery -> HTTP.Manager -> r-#if MIN_VERSION_conduit(1, 0, 0) -> C.Producer (ResourceT IO) (Response (ResponseMetadata a) a)-#else- -> C.GSource (ResourceT IO) (Response (ResponseMetadata a) a)-#endif awsIteratedSource cfg scfg manager req_ = go req_ where go request = do resp <- lift $ aws cfg scfg manager request C.yield resp@@ -283,16 +279,8 @@ -> ServiceConfiguration r NormalQuery -> HTTP.Manager -> r-#if MIN_VERSION_conduit(1, 0, 0) -> C.Producer (ResourceT IO) i-#else- -> C.GSource (ResourceT IO) i-#endif awsIteratedList cfg scfg manager req = awsIteratedSource cfg scfg manager req-#if MIN_VERSION_conduit(1, 0, 0) C.=$=-#else- C.>+>-#endif CL.concatMapM (fmap listResponse . readResponseIO)
Aws/Core.hs view
@@ -294,7 +294,8 @@ -- | Request method. Not all request methods are supported by all services. data Method- = Get -- ^ GET method. Put all request parameters in a query string and HTTP headers.+ = Head -- ^ HEAD method. Put all request parameters in a query string and HTTP headers.+ | Get -- ^ GET method. Put all request parameters in a query string and HTTP headers. | PostQuery -- ^ POST method. Put all request parameters in a query string and HTTP headers, but send the query string -- as a POST payload | Post -- ^ POST method. Sends a service- and request-specific request body.@@ -304,6 +305,7 @@ -- | HTTP method associated with a request method. httpMethod :: Method -> HTTP.Method+httpMethod Head = "HEAD" httpMethod Get = "GET" httpMethod PostQuery = "POST" httpMethod Post = "POST"@@ -356,7 +358,7 @@ , HTTP.port = sqPort , HTTP.path = sqPath , HTTP.queryString = HTTP.renderQuery False sqQuery- , HTTP.requestHeaders = catMaybes [fmap (\d -> ("Date", fmtRfc822Time d)) sqDate+ , HTTP.requestHeaders = catMaybes [ checkDate (\d -> ("Date", fmtRfc822Time d)) sqDate , fmap (\c -> ("Content-Type", c)) contentType , fmap (\md5 -> ("Content-MD5", Base64.encode $ Serialize.encode md5)) sqContentMd5 , fmap (\auth -> ("Authorization", auth)) sqAuthorization]@@ -368,15 +370,12 @@ Nothing -> HTTP.RequestBodyBuilder 0 mempty Just x -> x , HTTP.decompress = HTTP.alwaysDecompress-#if MIN_VERSION_http_conduit(1, 9, 0) , HTTP.checkStatus = \_ _ _ -> Nothing-#else- , HTTP.checkStatus = \_ _ -> Nothing-#endif } where contentType = case sqMethod of PostQuery -> Just "application/x-www-form-urlencoded; charset=utf-8" _ -> sqContentType+ checkDate f mb = maybe (f <$> mb) (const Nothing) $ lookup "date" sqOtherHeaders -- | Create a URI fro a 'SignedQuery' object. --
+ Aws/Ec2/InstanceMetadata.hs view
@@ -0,0 +1,34 @@+module Aws.Ec2.InstanceMetadata where++import Control.Applicative+import Control.Exception+import Control.Failure+import Control.Monad.Trans.Resource+import qualified Data.ByteString.Lazy as L+import qualified Data.ByteString.Lazy.Char8 as B8+import Data.ByteString.Lazy.UTF8 as BU+import Data.Typeable+import qualified Network.HTTP.Conduit as HTTP++data InstanceMetadataException+ = MetadataNotFound String+ deriving (Show, Typeable)++instance Exception InstanceMetadataException++getInstanceMetadata :: HTTP.Manager -> String -> String -> ResIO L.ByteString+getInstanceMetadata mgr p x = do req <- HTTP.parseUrl ("http://169.254.169.254/" ++ p ++ '/' : x)+ HTTP.responseBody <$> HTTP.httpLbs req mgr++getInstanceMetadataListing :: HTTP.Manager -> String -> ResIO [String]+getInstanceMetadataListing mgr p = map BU.toString . B8.split '\n' <$> getInstanceMetadata mgr p ""++getInstanceMetadataFirst :: HTTP.Manager -> String -> ResIO L.ByteString+getInstanceMetadataFirst mgr p = do listing <- getInstanceMetadataListing mgr p+ case listing of+ [] -> failure (MetadataNotFound p)+ (x:_) -> getInstanceMetadata mgr p x++getInstanceMetadataOrFirst :: HTTP.Manager -> String -> Maybe String -> ResIO L.ByteString+getInstanceMetadataOrFirst mgr p (Just x) = getInstanceMetadata mgr p x+getInstanceMetadataOrFirst mgr p Nothing = getInstanceMetadataFirst mgr p
Aws/S3/Commands.hs view
@@ -2,9 +2,11 @@ ( module Aws.S3.Commands.CopyObject , module Aws.S3.Commands.DeleteObject+, module Aws.S3.Commands.DeleteObjects , module Aws.S3.Commands.GetBucket , module Aws.S3.Commands.GetObject , module Aws.S3.Commands.GetService+, module Aws.S3.Commands.HeadObject , module Aws.S3.Commands.PutBucket , module Aws.S3.Commands.PutObject )@@ -12,8 +14,10 @@ import Aws.S3.Commands.CopyObject import Aws.S3.Commands.DeleteObject+import Aws.S3.Commands.DeleteObjects import Aws.S3.Commands.GetBucket import Aws.S3.Commands.GetObject import Aws.S3.Commands.GetService+import Aws.S3.Commands.HeadObject import Aws.S3.Commands.PutBucket import Aws.S3.Commands.PutObject
+ Aws/S3/Commands/DeleteObjects.hs view
@@ -0,0 +1,126 @@+module Aws.S3.Commands.DeleteObjects where++import Aws.Core+import Aws.S3.Core+import qualified Data.Map as M+import Data.Maybe+import qualified Data.Text as T+import qualified Data.Text.Encoding as T+import qualified Network.HTTP.Conduit as HTTP+import qualified Network.HTTP.Types as HTTP+import qualified Text.XML as XML+import qualified Text.XML.Cursor as Cu+import Text.XML.Cursor (($/), (&|))+import qualified Crypto.Classes as C (hash)+import qualified Data.ByteString.Char8 as B+import Data.ByteString.Char8 ({- IsString -})+import Control.Applicative ((<$>))++data DeleteObjects+ = DeleteObjects {+ dosBucket :: Bucket+ , dosObjects :: [(Object, Maybe T.Text)] -- snd is an optional versionId+ , dosQuiet :: Bool+ , dosMultiFactorAuthentication :: Maybe T.Text+ }+ deriving (Show)++-- simple use case: neither mfa, nor version specified, quiet+deleteObjects :: Bucket -> [T.Text] -> DeleteObjects+deleteObjects bucket objs =+ DeleteObjects {+ dosBucket = bucket+ , dosObjects = zip objs $ repeat Nothing+ , dosQuiet = True+ , dosMultiFactorAuthentication = Nothing+ }++data DeleteObjectsResponse+ = DeleteObjectsResponse {+ dorDeleted :: [DORDeleted]+ , dorErrors :: [DORErrors]+ }+ deriving (Show)++--omitting DeleteMarker because it appears superfluous+data DORDeleted+ = DORDeleted {+ ddKey :: T.Text+ , ddVersionId :: Maybe T.Text+ , ddDeleteMarkerVersionId :: Maybe T.Text+ }+ deriving (Show)++data DORErrors+ = DORErrors {+ deKey :: T.Text+ , deCode :: T.Text+ , deMessage :: T.Text+ }+ deriving (Show)++-- | ServiceConfiguration: 'S3Configuration'+instance SignQuery DeleteObjects where+ type ServiceConfiguration DeleteObjects = S3Configuration++ signQuery DeleteObjects {..} = s3SignQuery S3Query+ {+ s3QMethod = Post+ , s3QBucket = Just $ T.encodeUtf8 dosBucket+ , s3QSubresources = HTTP.toQuery [("delete" :: B.ByteString, Nothing :: Maybe B.ByteString)]+ , s3QQuery = []+ , s3QContentType = Nothing+ , s3QContentMd5 = Just $ C.hash dosBody+ , s3QObject = Nothing+ , s3QAmzHeaders = maybeToList $ (("x-amz-mfa", ) . T.encodeUtf8) <$> dosMultiFactorAuthentication+ , s3QOtherHeaders = []+ , s3QRequestBody = Just $ HTTP.RequestBodyLBS dosBody+ }+ where dosBody = XML.renderLBS XML.def XML.Document {+ XML.documentPrologue = XML.Prologue [] Nothing []+ , XML.documentRoot = root+ , XML.documentEpilogue = []+ }+ root = XML.Element {+ XML.elementName = "Delete"+ , XML.elementAttributes = M.empty+ , XML.elementNodes = quietNode dosQuiet : (objectNode <$> dosObjects)+ }+ objectNode (obj, mbVersion) = XML.NodeElement XML.Element {+ XML.elementName = "Object"+ , XML.elementAttributes = M.empty+ , XML.elementNodes = keyNode obj : maybeToList (versionNode <$> mbVersion)+ }+ versionNode = toNode "VersionId"+ keyNode = toNode "Key"+ quietNode b = toNode "Quiet" $ if b then "true" else "false"+ toNode name content = XML.NodeElement XML.Element {+ XML.elementName = name+ , XML.elementAttributes = M.empty+ , XML.elementNodes = [XML.NodeContent content]+ }++instance ResponseConsumer DeleteObjects DeleteObjectsResponse where+ type ResponseMetadata DeleteObjectsResponse = S3Metadata++ responseConsumer _ = s3XmlResponseConsumer parse+ where parse cursor = do+ dorDeleted <- sequence $ cursor $/ Cu.laxElement "Deleted" &| parseDeleted+ dorErrors <- sequence $ cursor $/ Cu.laxElement "Error" &| parseErrors+ return DeleteObjectsResponse {..}+ parseDeleted c = do+ ddKey <- force "Missing Key" $ c $/ elContent "Key"+ let ddVersionId = listToMaybe $ c $/ elContent "VersionId"+ ddDeleteMarkerVersionId = listToMaybe $ c $/ elContent "DeleteMarkerVersionId"+ return DORDeleted {..}+ parseErrors c = do+ deKey <- force "Missing Key" $ c $/ elContent "Key"+ deCode <- force "Missing Code" $ c $/ elContent "Code"+ deMessage <- force "Missing Message" $ c $/ elContent "Message"+ return DORErrors {..}++instance Transaction DeleteObjects DeleteObjectsResponse++instance AsMemoryResponse DeleteObjectsResponse where+ type MemoryResponse DeleteObjectsResponse = DeleteObjectsResponse+ loadToMemory = return
Aws/S3/Commands/GetBucket.hs view
@@ -43,6 +43,7 @@ , gbrPrefix :: Maybe T.Text , gbrContents :: [ObjectInfo] , gbrCommonPrefixes :: [T.Text]+ , gbrIsTruncated :: Bool } deriving (Show) @@ -76,6 +77,7 @@ let delimiter = listToMaybe $ cursor $/ elContent "Delimiter" let marker = listToMaybe $ cursor $/ elContent "Marker" maxKeys <- Data.Traversable.sequence . listToMaybe $ cursor $/ elContent "MaxKeys" &| textReadInt+ let truncated = maybe True (/= "false") $ listToMaybe $ cursor $/ elContent "IsTruncated" let prefix = listToMaybe $ cursor $/ elContent "Prefix" contents <- sequence $ cursor $/ Cu.laxElement "Contents" &| parseObjectInfo let commonPrefixes = cursor $/ Cu.laxElement "CommonPrefixes" &// Cu.content@@ -87,6 +89,7 @@ , gbrPrefix = prefix , gbrContents = contents , gbrCommonPrefixes = commonPrefixes+ , gbrIsTruncated = truncated } instance Transaction GetBucket GetBucketResponse
Aws/S3/Commands/GetObject.hs view
@@ -9,6 +9,7 @@ import qualified Data.ByteString.Char8 as B8 import qualified Data.ByteString.Lazy as L import qualified Data.Conduit as C+import Data.Maybe import qualified Data.Text as T import qualified Data.Text.Encoding as T import qualified Network.HTTP.Conduit as HTTP@@ -25,11 +26,12 @@ , goResponseCacheControl :: Maybe T.Text , goResponseContentDisposition :: Maybe T.Text , goResponseContentEncoding :: Maybe T.Text+ , goResponseContentRange :: Maybe (Int,Int) } deriving (Show) getObject :: Bucket -> T.Text -> GetObject-getObject b o = GetObject b o Nothing Nothing Nothing Nothing Nothing Nothing Nothing+getObject b o = GetObject b o Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing data GetObjectResponse = GetObjectResponse {@@ -50,21 +52,23 @@ , s3QObject = Just $ T.encodeUtf8 goObjectName , s3QSubresources = HTTP.toQuery [ ("versionId" :: B8.ByteString,) <$> goVersionId+ , ("response-content-type" :: B8.ByteString,) <$> goResponseContentType+ , ("response-content-language",) <$> goResponseContentLanguage+ , ("response-expires",) <$> goResponseExpires+ , ("response-cache-control",) <$> goResponseCacheControl+ , ("response-content-disposition",) <$> goResponseContentDisposition+ , ("response-content-encoding",) <$> goResponseContentEncoding ]- , s3QQuery = HTTP.toQuery [- ("response-content-type" :: B8.ByteString,) <$> goResponseContentType- , ("response-content-language",) <$> goResponseContentLanguage- , ("response-expires",) <$> goResponseExpires- , ("response-cache-control",) <$> goResponseCacheControl- , ("response-content-disposition",) <$> goResponseContentDisposition- , ("response-content-encoding",) <$> goResponseContentEncoding- ]+ , s3QQuery = [] , s3QContentType = Nothing , s3QContentMd5 = Nothing , s3QAmzHeaders = []- , s3QOtherHeaders = []+ , s3QOtherHeaders = catMaybes [+ decodeRange <$> goResponseContentRange+ ] , s3QRequestBody = Nothing }+ where decodeRange (pos,len) = ("range",B8.concat $ ["bytes=", B8.pack (show pos), "-", B8.pack (show len)]) instance ResponseConsumer GetObject GetObjectResponse where type ResponseMetadata GetObjectResponse = S3Metadata
+ Aws/S3/Commands/HeadObject.hs view
@@ -0,0 +1,61 @@+module Aws.S3.Commands.HeadObject+where++import Aws.Core+import Aws.S3.Core+import Control.Applicative+import Data.ByteString.Char8 ({- IsString -})+import qualified Data.ByteString.Char8 as B8+import qualified Data.Text as T+import qualified Data.Text.Encoding as T+import qualified Network.HTTP.Conduit as HTTP+import qualified Network.HTTP.Types as HTTP++data HeadObject+ = HeadObject {+ hoBucket :: Bucket+ , hoObjectName :: Object+ , hoVersionId :: Maybe T.Text+ }+ deriving (Show)++headObject :: Bucket -> T.Text -> HeadObject+headObject b o = HeadObject b o Nothing++data HeadObjectResponse+ = HeadObjectResponse {+ horMetadata :: ObjectMetadata+ }++data HeadObjectMemoryResponse+ = HeadObjectMemoryResponse ObjectMetadata+ deriving (Show)++-- | ServiceConfiguration: 'S3Configuration'+instance SignQuery HeadObject where+ type ServiceConfiguration HeadObject = S3Configuration+ signQuery HeadObject {..} = s3SignQuery S3Query {+ s3QMethod = Head+ , s3QBucket = Just $ T.encodeUtf8 hoBucket+ , s3QObject = Just $ T.encodeUtf8 hoObjectName+ , s3QSubresources = HTTP.toQuery [+ ("versionId" :: B8.ByteString,) <$> hoVersionId+ ]+ , s3QQuery = []+ , s3QContentType = Nothing+ , s3QContentMd5 = Nothing+ , s3QAmzHeaders = []+ , s3QOtherHeaders = []+ , s3QRequestBody = Nothing+ }++instance ResponseConsumer HeadObject HeadObjectResponse where+ type ResponseMetadata HeadObjectResponse = S3Metadata+ responseConsumer HeadObject{..} _ resp+ = HeadObjectResponse <$> parseObjectMetadata (HTTP.responseHeaders resp)++instance Transaction HeadObject HeadObjectResponse++instance AsMemoryResponse HeadObjectResponse where+ type MemoryResponse HeadObjectResponse = HeadObjectMemoryResponse+ loadToMemory (HeadObjectResponse om) = return (HeadObjectMemoryResponse om)
Aws/S3/Commands/PutObject.hs view
@@ -26,14 +26,15 @@ poExpires :: Maybe Int, poAcl :: Maybe CannedAcl, poStorageClass :: Maybe StorageClass,+ poWebsiteRedirectLocation :: Maybe T.Text, poRequestBody :: HTTP.RequestBody (C.ResourceT IO), poMetadata :: [(T.Text,T.Text)] } putObject :: Bucket -> T.Text -> HTTP.RequestBody (C.ResourceT IO) -> PutObject-putObject bucket obj body = PutObject obj bucket Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing body []+putObject bucket obj body = PutObject obj bucket Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing body [] -data PutObjectResponse +data PutObjectResponse = PutObjectResponse { porVersionId :: Maybe T.Text }@@ -52,6 +53,7 @@ , s3QAmzHeaders = map (second T.encodeUtf8) $ catMaybes [ ("x-amz-acl",) <$> writeCannedAcl <$> poAcl , ("x-amz-storage-class",) <$> writeStorageClass <$> poStorageClass+ , ("x-amz-website-redirect-location",) <$> poWebsiteRedirectLocation ] ++ map( \x -> (CI.mk . T.encodeUtf8 $ T.concat ["x-amz-meta-", fst x], snd x)) poMetadata , s3QOtherHeaders = map (second T.encodeUtf8) $ catMaybes [ ("Expires",) . T.pack . show <$> poExpires
Aws/S3/Core.hs view
@@ -70,6 +70,9 @@ s3EndpointUsWest :: B.ByteString s3EndpointUsWest = "s3-us-west-1.amazonaws.com" +s3EndpointUsWest2 :: B.ByteString+s3EndpointUsWest2 = "s3-us-west-2.amazonaws.com"+ s3EndpointEu :: B.ByteString s3EndpointEu = "s3-eu-west-1.amazonaws.com" @@ -403,9 +406,10 @@ type LocationConstraint = T.Text -locationUsClassic, locationUsWest, locationEu, locationApSouthEast, locationApNorthEast :: LocationConstraint+locationUsClassic, locationUsWest, locationUsWest2, locationEu, locationApSouthEast, locationApNorthEast :: LocationConstraint locationUsClassic = "" locationUsWest = "us-west-1"+locationUsWest2 = "us-west-2" locationEu = "EU" locationApSouthEast = "ap-southeast-1" locationApNorthEast = "ap-northeast-1"
Aws/Ses/Commands.hs view
@@ -1,5 +1,27 @@ module Aws.Ses.Commands ( module Aws.Ses.Commands.SendRawEmail+ , module Aws.Ses.Commands.ListIdentities+ , module Aws.Ses.Commands.VerifyEmailIdentity+ , module Aws.Ses.Commands.VerifyDomainIdentity+ , module Aws.Ses.Commands.VerifyDomainDkim+ , module Aws.Ses.Commands.DeleteIdentity+ , module Aws.Ses.Commands.GetIdentityDkimAttributes+ , module Aws.Ses.Commands.GetIdentityNotificationAttributes+ , module Aws.Ses.Commands.GetIdentityVerificationAttributes+ , module Aws.Ses.Commands.SetIdentityNotificationTopic+ , module Aws.Ses.Commands.SetIdentityDkimEnabled+ , module Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled ) where import Aws.Ses.Commands.SendRawEmail+import Aws.Ses.Commands.ListIdentities+import Aws.Ses.Commands.VerifyEmailIdentity+import Aws.Ses.Commands.VerifyDomainIdentity+import Aws.Ses.Commands.VerifyDomainDkim+import Aws.Ses.Commands.DeleteIdentity+import Aws.Ses.Commands.GetIdentityDkimAttributes+import Aws.Ses.Commands.GetIdentityNotificationAttributes+import Aws.Ses.Commands.GetIdentityVerificationAttributes+import Aws.Ses.Commands.SetIdentityNotificationTopic+import Aws.Ses.Commands.SetIdentityDkimEnabled+import Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled
+ Aws/Ses/Commands/DeleteIdentity.hs view
@@ -0,0 +1,39 @@+module Aws.Ses.Commands.DeleteIdentity+ ( DeleteIdentity(..)+ , DeleteIdentityResponse(..)+ ) where++import Data.Text (Text)+import Data.Text.Encoding as T (encodeUtf8)+import Data.Typeable+import Aws.Core+import Aws.Ses.Core++-- | Delete an email address or domain+data DeleteIdentity = DeleteIdentity Text+ deriving (Eq, Ord, Show, Typeable)++-- | ServiceConfiguration: 'SesConfiguration'+instance SignQuery DeleteIdentity where+ type ServiceConfiguration DeleteIdentity = SesConfiguration+ signQuery (DeleteIdentity identity) =+ sesSignQuery [ ("Action", "DeleteIdentity")+ , ("Identity", T.encodeUtf8 identity)+ ]++-- | The response sent back by Amazon SES after a+-- 'DeleteIdentity' command.+data DeleteIdentityResponse = DeleteIdentityResponse+ deriving (Eq, Ord, Show, Typeable)+++instance ResponseConsumer DeleteIdentity DeleteIdentityResponse where+ type ResponseMetadata DeleteIdentityResponse = SesMetadata+ responseConsumer _ = sesResponseConsumer $ \_ -> return DeleteIdentityResponse+++instance Transaction DeleteIdentity DeleteIdentityResponse where++instance AsMemoryResponse DeleteIdentityResponse where+ type MemoryResponse DeleteIdentityResponse = DeleteIdentityResponse+ loadToMemory = return
+ Aws/Ses/Commands/GetIdentityDkimAttributes.hs view
@@ -0,0 +1,63 @@+module Aws.Ses.Commands.GetIdentityDkimAttributes+ ( GetIdentityDkimAttributes(..)+ , GetIdentityDkimAttributesResponse(..)+ , IdentityDkimAttributes(..)+ ) where++import Control.Applicative ((<$>))+import qualified Data.ByteString.Char8 as BS+import Data.Text (Text)+import Data.Text as T (toCaseFold)+import Data.Text.Encoding as T (encodeUtf8)+import Data.Typeable+import Text.XML.Cursor (laxElement, ($/), ($//), (&/), (&|))++import Aws.Core+import Aws.Ses.Core++-- | Get notification settings for the given identities.+data GetIdentityDkimAttributes = GetIdentityDkimAttributes [Text]+ deriving (Eq, Ord, Show, Typeable)++-- | ServiceConfiguration: 'SesConfiguration'+instance SignQuery GetIdentityDkimAttributes where+ type ServiceConfiguration GetIdentityDkimAttributes = SesConfiguration+ signQuery (GetIdentityDkimAttributes identities) =+ sesSignQuery $ ("Action", "GetIdentityDkimAttributes")+ : zip (enumMember <$> [1..]) (T.encodeUtf8 <$> identities)+ where enumMember (n :: Int) = BS.append "Identities.member." (BS.pack $ show n)+++data IdentityDkimAttributes =+ IdentityDkimAttributes+ { idIdentity :: Text+ , idDkimEnabled :: Bool+ , idDkimTokens :: [Text]+ , idDkimVerirficationStatus :: Text }+ deriving (Eq, Ord, Show, Typeable)++-- | The response sent back by Amazon SES after a+-- 'GetIdentityDkimAttributes' command.+data GetIdentityDkimAttributesResponse =+ GetIdentityDkimAttributesResponse [IdentityDkimAttributes]+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer GetIdentityDkimAttributes GetIdentityDkimAttributesResponse where+ type ResponseMetadata GetIdentityDkimAttributesResponse = SesMetadata+ responseConsumer _ = sesResponseConsumer $ \cursor -> do+ let buildAttr e = do+ idIdentity <- force "Missing Key" $ e $/ elContent "key"+ enabled <- force "Missing DkimEnabled" $ e $// elContent "DkimEnabled"+ idDkimVerirficationStatus <- force "Missing status" $+ e $// elContent "DkimVerificationStatus"+ let idDkimEnabled = T.toCaseFold enabled == T.toCaseFold "true"+ idDkimTokens = e $// laxElement "DkimTokens" &/ elContent "member"+ return IdentityDkimAttributes{..}+ attributes <- sequence $ cursor $// laxElement "entry" &| buildAttr+ return $ GetIdentityDkimAttributesResponse attributes++instance Transaction GetIdentityDkimAttributes GetIdentityDkimAttributesResponse where++instance AsMemoryResponse GetIdentityDkimAttributesResponse where+ type MemoryResponse GetIdentityDkimAttributesResponse = GetIdentityDkimAttributesResponse+ loadToMemory = return
+ Aws/Ses/Commands/GetIdentityNotificationAttributes.hs view
@@ -0,0 +1,64 @@+module Aws.Ses.Commands.GetIdentityNotificationAttributes+ ( GetIdentityNotificationAttributes(..)+ , GetIdentityNotificationAttributesResponse(..)+ , IdentityNotificationAttributes(..)+ ) where++import Data.Text (Text)+import qualified Data.ByteString.Char8 as BS+import Control.Applicative ((<$>))+import Data.Text.Encoding as T (encodeUtf8)+import Data.Text as T (toCaseFold)+import Data.Typeable+import Text.XML.Cursor (($//), ($/), (&|), laxElement)++import Aws.Core+import Aws.Ses.Core++-- | Get notification settings for the given identities.+data GetIdentityNotificationAttributes = GetIdentityNotificationAttributes [Text]+ deriving (Eq, Ord, Show, Typeable)++-- | ServiceConfiguration: 'SesConfiguration'+instance SignQuery GetIdentityNotificationAttributes where+ type ServiceConfiguration GetIdentityNotificationAttributes = SesConfiguration+ signQuery (GetIdentityNotificationAttributes identities) =+ sesSignQuery $ ("Action", "GetIdentityNotificationAttributes")+ : zip (enumMember <$> [1..]) (T.encodeUtf8 <$> identities)+ where enumMember (n :: Int) = BS.append "Identities.member." (BS.pack $ show n)++data IdentityNotificationAttributes = IdentityNotificationAttributes+ { inIdentity :: Text+ , inBounceTopic :: Maybe Text+ , inComplaintTopic :: Maybe Text+ , inForwardingEnabled :: Bool+ }+ deriving (Eq, Ord, Show, Typeable)++-- | The response sent back by Amazon SES after a+-- 'GetIdentityNotificationAttributes' command.+data GetIdentityNotificationAttributesResponse =+ GetIdentityNotificationAttributesResponse [IdentityNotificationAttributes]+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer GetIdentityNotificationAttributes GetIdentityNotificationAttributesResponse where+ type ResponseMetadata GetIdentityNotificationAttributesResponse = SesMetadata+ responseConsumer _ = sesResponseConsumer $ \cursor -> do+ let buildAttr e = do+ inIdentity <- force "Missing Key" $ e $/ elContent "key"+ fwdText <- force "Missing ForwardingEnabled" $ e $// elContent "ForwardingEnabled"+ let inBounceTopic = headOrNothing (e $// elContent "BounceTopic")+ inComplaintTopic = headOrNothing (e $// elContent "ComplaintTopic")+ inForwardingEnabled = T.toCaseFold fwdText == T.toCaseFold "true"+ return IdentityNotificationAttributes{..}+ attributes <- sequence $ cursor $// laxElement "entry" &| buildAttr+ return $ GetIdentityNotificationAttributesResponse attributes+ where+ headOrNothing (x:_) = Just x+ headOrNothing _ = Nothing++instance Transaction GetIdentityNotificationAttributes GetIdentityNotificationAttributesResponse where++instance AsMemoryResponse GetIdentityNotificationAttributesResponse where+ type MemoryResponse GetIdentityNotificationAttributesResponse = GetIdentityNotificationAttributesResponse+ loadToMemory = return
+ Aws/Ses/Commands/GetIdentityVerificationAttributes.hs view
@@ -0,0 +1,64 @@+module Aws.Ses.Commands.GetIdentityVerificationAttributes+ ( GetIdentityVerificationAttributes(..)+ , GetIdentityVerificationAttributesResponse(..)+ , IdentityVerificationAttributes(..)+ ) where++import Data.Text (Text)+import qualified Data.ByteString.Char8 as BS+import Data.Maybe (listToMaybe)+import Control.Applicative ((<$>))+import Data.Text.Encoding as T (encodeUtf8)+import Data.Typeable+import Text.XML.Cursor (($//), ($/), (&|), laxElement)++import Aws.Core+import Aws.Ses.Core++-- | Get verification status for a list of email addresses and/or domains+data GetIdentityVerificationAttributes = GetIdentityVerificationAttributes [Text]+ deriving (Eq, Ord, Show, Typeable)+++-- | ServiceConfiguration: 'SesConfiguration'+instance SignQuery GetIdentityVerificationAttributes where+ type ServiceConfiguration GetIdentityVerificationAttributes = SesConfiguration+ signQuery (GetIdentityVerificationAttributes identities) =+ sesSignQuery $ ("Action", "GetIdentityVerificationAttributes")+ : zip (enumMember <$> [1..]) (T.encodeUtf8 <$> identities)+ where enumMember (n :: Int) = BS.append "Identities.member." (BS.pack $ show n)++data IdentityVerificationAttributes = IdentityVerificationAttributes+ { ivIdentity :: Text+ , ivVerificationStatus :: Text+ , ivVerificationToken :: Maybe Text+ }+ deriving (Eq, Ord, Show, Typeable)+++-- | The response sent back by Amazon SES after a+-- 'GetIdentityVerificationAttributes' command.+data GetIdentityVerificationAttributesResponse =+ GetIdentityVerificationAttributesResponse [IdentityVerificationAttributes]+ deriving (Eq, Ord, Show, Typeable)+++instance ResponseConsumer GetIdentityVerificationAttributes GetIdentityVerificationAttributesResponse where+ type ResponseMetadata GetIdentityVerificationAttributesResponse = SesMetadata+ responseConsumer _ =+ sesResponseConsumer $ \cursor -> do+ let buildAttr e = do+ ivIdentity <- force "Missing Key" $ e $/ elContent "key"+ ivVerificationStatus <- force "Missing Verification Status" $ e+ $// elContent "VerificationStatus"+ let ivVerificationToken = listToMaybe $ e $// elContent "VerificationToken"+ return IdentityVerificationAttributes {..}+ attributes <- sequence $ cursor $// laxElement "entry" &| buildAttr+ return $ GetIdentityVerificationAttributesResponse attributes+++instance Transaction GetIdentityVerificationAttributes GetIdentityVerificationAttributesResponse where++instance AsMemoryResponse GetIdentityVerificationAttributesResponse where+ type MemoryResponse GetIdentityVerificationAttributesResponse = GetIdentityVerificationAttributesResponse+ loadToMemory = return
+ Aws/Ses/Commands/ListIdentities.hs view
@@ -0,0 +1,63 @@+module Aws.Ses.Commands.ListIdentities+ ( ListIdentities(..)+ , ListIdentitiesResponse(..)+ , IdentityType(..)+ ) where++import Data.Text (Text)+import qualified Data.ByteString.Char8 as BS+import Data.Maybe (catMaybes)+import Control.Applicative ((<$>))+import Data.Text.Encoding as T (encodeUtf8)+import Data.Typeable+import Text.XML.Cursor (($//), (&/), laxElement)++import Aws.Core+import Aws.Ses.Core++-- | List email addresses and/or domains+data ListIdentities =+ ListIdentities+ { liIdentityType :: Maybe IdentityType+ , liMaxItems :: Maybe Int -- valid range is 1..100+ , liNextToken :: Maybe Text+ }+ deriving (Eq, Ord, Show, Typeable)++data IdentityType = EmailAddress | Domain+ deriving (Eq, Ord, Show, Typeable)++-- | ServiceConfiguration: 'SesConfiguration'+instance SignQuery ListIdentities where+ type ServiceConfiguration ListIdentities = SesConfiguration+ signQuery ListIdentities {..} =+ let it = case liIdentityType of+ Just EmailAddress -> Just "EmailAddress"+ Just Domain -> Just "Domain"+ Nothing -> Nothing+ in sesSignQuery $ ("Action", "ListIdentities")+ : catMaybes+ [ ("IdentityType",) <$> it+ , ("MaxItems",) . BS.pack . show <$> liMaxItems+ , ("NextToken",) . T.encodeUtf8 <$> liNextToken+ ]++-- | The response sent back by Amazon SES after a+-- 'ListIdentities' command.+data ListIdentitiesResponse = ListIdentitiesResponse [Text]+ deriving (Eq, Ord, Show, Typeable)+++instance ResponseConsumer ListIdentities ListIdentitiesResponse where+ type ResponseMetadata ListIdentitiesResponse = SesMetadata+ responseConsumer _ =+ sesResponseConsumer $ \cursor -> do+ let ids = cursor $// laxElement "Identities" &/ elContent "member"+ return $ ListIdentitiesResponse ids+++instance Transaction ListIdentities ListIdentitiesResponse where++instance AsMemoryResponse ListIdentitiesResponse where+ type MemoryResponse ListIdentitiesResponse = ListIdentitiesResponse+ loadToMemory = return
Aws/Ses/Commands/SendRawEmail.hs view
@@ -5,7 +5,10 @@ import Data.Text (Text) import Data.Typeable+import Control.Applicative ((<$>))+import qualified Data.ByteString.Char8 as BS import Text.XML.Cursor (($//))+import qualified Data.Text.Encoding as T import Aws.Core import Aws.Ses.Core@@ -13,7 +16,7 @@ -- | Send a raw e-mail message. data SendRawEmail = SendRawEmail- { srmDestinations :: Maybe Destination+ { srmDestinations :: [EmailAddress] , srmRawMessage :: RawMessage , srmSource :: Maybe Sender }@@ -24,10 +27,14 @@ type ServiceConfiguration SendRawEmail = SesConfiguration signQuery SendRawEmail {..} = sesSignQuery $ ("Action", "SendRawEmail") :- concat [ sesAsQuery srmDestinations+ concat [ destinations , sesAsQuery srmRawMessage , sesAsQuery srmSource ]+ where+ destinations = zip (enumMember <$> ([1..] :: [Int]))+ (T.encodeUtf8 <$> srmDestinations)+ enumMember = BS.append "Destinations.member." . BS.pack . show -- | The response sent back by Amazon SES after a -- 'SendRawEmail' command.
+ Aws/Ses/Commands/SetIdentityDkimEnabled.hs view
@@ -0,0 +1,41 @@+module Aws.Ses.Commands.SetIdentityDkimEnabled+ ( SetIdentityDkimEnabled(..)+ , SetIdentityDkimEnabledResponse(..)+ ) where++import Aws.Core+import Aws.Ses.Core+import Data.Text (Text)+import Data.Text.Encoding as T+import Data.Typeable++-- | Change whether bounces and complaints for the given identity will be+-- DKIM signed.+data SetIdentityDkimEnabled = SetIdentityDkimEnabled+ { sdDkimEnabled :: Bool+ , sdIdentity :: Text+ }+ deriving (Eq, Ord, Show, Typeable)++-- | ServiceConfiguration: 'SesConfiguration'+instance SignQuery SetIdentityDkimEnabled where+ type ServiceConfiguration SetIdentityDkimEnabled = SesConfiguration+ signQuery SetIdentityDkimEnabled{..} =+ sesSignQuery [ ("Action", "SetIdentityDkimEnabled")+ , ("Identity", T.encodeUtf8 sdIdentity)+ , ("DkimEnabled", awsBool sdDkimEnabled)+ ]++-- | The response sent back by SES after the 'SetIdentityDkimEnabled' command.+data SetIdentityDkimEnabledResponse = SetIdentityDkimEnabledResponse+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer SetIdentityDkimEnabled SetIdentityDkimEnabledResponse where+ type ResponseMetadata SetIdentityDkimEnabledResponse = SesMetadata+ responseConsumer _ = sesResponseConsumer $ \_ -> return SetIdentityDkimEnabledResponse++instance Transaction SetIdentityDkimEnabled SetIdentityDkimEnabledResponse++instance AsMemoryResponse SetIdentityDkimEnabledResponse where+ type MemoryResponse SetIdentityDkimEnabledResponse = SetIdentityDkimEnabledResponse+ loadToMemory = return
+ Aws/Ses/Commands/SetIdentityFeedbackForwardingEnabled.hs view
@@ -0,0 +1,43 @@+module Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled+ ( SetIdentityFeedbackForwardingEnabled(..)+ , SetIdentityFeedbackForwardingEnabledResponse(..)+ ) where++import Data.Text (Text)+import Data.Text.Encoding as T (encodeUtf8)+import Data.Typeable+import Aws.Core+import Aws.Ses.Core++-- | Change whether bounces and complaints for the given identity will be+-- forwarded as email.+data SetIdentityFeedbackForwardingEnabled =+ SetIdentityFeedbackForwardingEnabled+ { sffForwardingEnabled :: Bool+ , sffIdentity :: Text+ }+ deriving (Eq, Ord, Show, Typeable)++-- | ServiceConfiguration: 'SesConfiguration'+instance SignQuery SetIdentityFeedbackForwardingEnabled where+ type ServiceConfiguration SetIdentityFeedbackForwardingEnabled = SesConfiguration+ signQuery SetIdentityFeedbackForwardingEnabled{..} =+ sesSignQuery [ ("Action", "SetIdentityFeedbackForwardingEnabled")+ , ("Identity", T.encodeUtf8 sffIdentity)+ , ("ForwardingEnabled", awsBool sffForwardingEnabled)+ ]++-- | The response sent back by SES after the+-- 'SetIdentityFeedbackForwardingEnabled' command.+data SetIdentityFeedbackForwardingEnabledResponse = SetIdentityFeedbackForwardingEnabledResponse+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer SetIdentityFeedbackForwardingEnabled SetIdentityFeedbackForwardingEnabledResponse where+ type ResponseMetadata SetIdentityFeedbackForwardingEnabledResponse = SesMetadata+ responseConsumer _ = sesResponseConsumer $ \_ -> return SetIdentityFeedbackForwardingEnabledResponse ++instance Transaction SetIdentityFeedbackForwardingEnabled SetIdentityFeedbackForwardingEnabledResponse++instance AsMemoryResponse SetIdentityFeedbackForwardingEnabledResponse where+ type MemoryResponse SetIdentityFeedbackForwardingEnabledResponse = SetIdentityFeedbackForwardingEnabledResponse+ loadToMemory = return
+ Aws/Ses/Commands/SetIdentityNotificationTopic.hs view
@@ -0,0 +1,57 @@+module Aws.Ses.Commands.SetIdentityNotificationTopic+ ( SetIdentityNotificationTopic(..)+ , SetIdentityNotificationTopicResponse(..)+ , NotificationType(..)+ ) where++import Data.Text (Text)+import Control.Applicative ((<$>))+import Data.Maybe (maybeToList)+import Data.Text.Encoding as T (encodeUtf8)+import Data.Typeable+import Aws.Core+import Aws.Ses.Core++data NotificationType = Bounce | Complaint+ deriving (Eq, Ord, Show, Typeable)++-- | Change or remove the Amazon SNS notification topic to which notification+-- of the given type are published.+data SetIdentityNotificationTopic =+ SetIdentityNotificationTopic+ { sntIdentity :: Text+ -- ^ The identity for which the SNS topic will be changed.+ , sntNotificationType :: NotificationType+ -- ^ The type of notifications that will be published to the topic.+ , sntSnsTopic :: Maybe Text+ -- ^ @Just@ the ARN of the SNS topic or @Nothing@ to unset the topic.+ }+ deriving (Eq, Ord, Show, Typeable)++-- | ServiceConfiguration: 'SesConfiguration'+instance SignQuery SetIdentityNotificationTopic where+ type ServiceConfiguration SetIdentityNotificationTopic = SesConfiguration+ signQuery SetIdentityNotificationTopic{..} =+ let notificationType = case sntNotificationType of+ Bounce -> "Bounce"+ Complaint -> "Complaint"+ snsTopic = ("SnsTopic",) . T.encodeUtf8 <$> sntSnsTopic+ in sesSignQuery $ [ ("Action", "SetIdentityNotificationTopic")+ , ("Identity", T.encodeUtf8 sntIdentity)+ , ("NotificationType", notificationType)+ ] ++ maybeToList snsTopic++-- | The response sent back by SES after the 'SetIdentityNotificationTopic'+-- command.+data SetIdentityNotificationTopicResponse = SetIdentityNotificationTopicResponse+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer SetIdentityNotificationTopic SetIdentityNotificationTopicResponse where+ type ResponseMetadata SetIdentityNotificationTopicResponse = SesMetadata+ responseConsumer _ = sesResponseConsumer $ \_ -> return SetIdentityNotificationTopicResponse ++instance Transaction SetIdentityNotificationTopic SetIdentityNotificationTopicResponse++instance AsMemoryResponse SetIdentityNotificationTopicResponse where+ type MemoryResponse SetIdentityNotificationTopicResponse = SetIdentityNotificationTopicResponse+ loadToMemory = return
+ Aws/Ses/Commands/VerifyDomainDkim.hs view
@@ -0,0 +1,40 @@+module Aws.Ses.Commands.VerifyDomainDkim+ ( VerifyDomainDkim(..)+ , VerifyDomainDkimResponse(..)+ ) where++import Data.Text (Text)+import Data.Text.Encoding as T (encodeUtf8)+import Data.Typeable+import Aws.Core+import Aws.Ses.Core+import Text.XML.Cursor (($//), laxElement, (&/))++-- | Verify ownership of a domain.+data VerifyDomainDkim = VerifyDomainDkim Text+ deriving (Eq, Ord, Show, Typeable)++-- | ServiceConfiguration: 'SesConfiguration'+instance SignQuery VerifyDomainDkim where+ type ServiceConfiguration VerifyDomainDkim = SesConfiguration+ signQuery (VerifyDomainDkim domain) =+ sesSignQuery [ ("Action", "VerifyDomainDkim")+ , ("Domain", T.encodeUtf8 domain)+ ]++-- | The response sent back by Amazon SES after a 'VerifyDomainDkim' command.+data VerifyDomainDkimResponse = VerifyDomainDkimResponse [Text]+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer VerifyDomainDkim VerifyDomainDkimResponse where+ type ResponseMetadata VerifyDomainDkimResponse = SesMetadata+ responseConsumer _ =+ sesResponseConsumer $ \cursor -> do+ let tokens = cursor $// laxElement "DkimTokens" &/ elContent "member"+ return (VerifyDomainDkimResponse tokens)++instance Transaction VerifyDomainDkim VerifyDomainDkimResponse where++instance AsMemoryResponse VerifyDomainDkimResponse where+ type MemoryResponse VerifyDomainDkimResponse = VerifyDomainDkimResponse+ loadToMemory = return
+ Aws/Ses/Commands/VerifyDomainIdentity.hs view
@@ -0,0 +1,41 @@+module Aws.Ses.Commands.VerifyDomainIdentity+ ( VerifyDomainIdentity(..)+ , VerifyDomainIdentityResponse(..)+ ) where++import Data.Text (Text)+import Data.Text.Encoding as T (encodeUtf8)+import Data.Typeable+import Aws.Core+import Aws.Ses.Core+import Text.XML.Cursor (($//))++-- | Verify ownership of a domain.+data VerifyDomainIdentity = VerifyDomainIdentity Text+ deriving (Eq, Ord, Show, Typeable)++-- | ServiceConfiguration: 'SesConfiguration'+instance SignQuery VerifyDomainIdentity where+ type ServiceConfiguration VerifyDomainIdentity = SesConfiguration+ signQuery (VerifyDomainIdentity domain) =+ sesSignQuery [ ("Action", "VerifyDomainIdentity")+ , ("Domain", T.encodeUtf8 domain)+ ]++-- | The response sent back by Amazon SES after a+-- 'VerifyDomainIdentity' command.+data VerifyDomainIdentityResponse = VerifyDomainIdentityResponse Text+ deriving (Eq, Ord, Show, Typeable)++instance ResponseConsumer VerifyDomainIdentity VerifyDomainIdentityResponse where+ type ResponseMetadata VerifyDomainIdentityResponse = SesMetadata+ responseConsumer _ =+ sesResponseConsumer $ \cursor -> do+ token <- force "Verification token not found" $ cursor $// elContent "VerificationToken"+ return (VerifyDomainIdentityResponse token)++instance Transaction VerifyDomainIdentity VerifyDomainIdentityResponse where++instance AsMemoryResponse VerifyDomainIdentityResponse where+ type MemoryResponse VerifyDomainIdentityResponse = VerifyDomainIdentityResponse+ loadToMemory = return
+ Aws/Ses/Commands/VerifyEmailIdentity.hs view
@@ -0,0 +1,39 @@+module Aws.Ses.Commands.VerifyEmailIdentity+ ( VerifyEmailIdentity(..)+ , VerifyEmailIdentityResponse(..)+ ) where++import Data.Text (Text)+import Data.Text.Encoding as T (encodeUtf8)+import Data.Typeable+import Aws.Core+import Aws.Ses.Core++-- | List email addresses and/or domains+data VerifyEmailIdentity = VerifyEmailIdentity Text+ deriving (Eq, Ord, Show, Typeable)++-- | ServiceConfiguration: 'SesConfiguration'+instance SignQuery VerifyEmailIdentity where+ type ServiceConfiguration VerifyEmailIdentity = SesConfiguration+ signQuery (VerifyEmailIdentity address) =+ sesSignQuery [ ("Action", "VerifyEmailIdentity")+ , ("EmailAddress", T.encodeUtf8 address)+ ]++-- | The response sent back by Amazon SES after a+-- 'VerifyEmailIdentity' command.+data VerifyEmailIdentityResponse = VerifyEmailIdentityResponse+ deriving (Eq, Ord, Show, Typeable)+++instance ResponseConsumer VerifyEmailIdentity VerifyEmailIdentityResponse where+ type ResponseMetadata VerifyEmailIdentityResponse = SesMetadata+ responseConsumer _ = sesResponseConsumer $ \_ -> return VerifyEmailIdentityResponse+++instance Transaction VerifyEmailIdentity VerifyEmailIdentityResponse where++instance AsMemoryResponse VerifyEmailIdentityResponse where+ type MemoryResponse VerifyEmailIdentityResponse = VerifyEmailIdentityResponse+ loadToMemory = return
Aws/Sqs/Core.hs view
@@ -1,7 +1,7 @@ module Aws.Sqs.Core where import Aws.Core-import Aws.S3.Core (LocationConstraint, locationUsClassic, locationUsWest, locationApSouthEast, locationApNorthEast, locationEu)+import Aws.S3.Core (LocationConstraint, locationUsClassic, locationUsWest, locationUsWest2, locationApSouthEast, locationApNorthEast, locationEu) import qualified Blaze.ByteString.Builder as Blaze import qualified Blaze.ByteString.Builder.Char8 as Blaze8 import qualified Control.Exception as C@@ -115,6 +115,14 @@ endpointHost = "us-west-1.queue.amazonaws.com" , endpointDefaultLocationConstraint = locationUsWest , endpointAllowedLocationConstraints = [locationUsWest]+ }++sqsEndpointUsWest2 :: Endpoint+sqsEndpointUsWest2+ = Endpoint {+ endpointHost = "us-west-2.queue.amazonaws.com"+ , endpointDefaultLocationConstraint = locationUsWest2+ , endpointAllowedLocationConstraints = [locationUsWest2] } sqsEndpointEu :: Endpoint
README.org view
@@ -91,8 +91,25 @@ * Release Notes +** 0.8 series++- 0.8.0+ - S3, SQS: support for US-West2 (#58)+ - S3: GetObject now has support for Content-Range (#22, #50)+ - S3: GetBucket now supports the "IsTruncated" flag (#39)+ - S3: PutObject now supports web page redirects (#46)+ - S3: support for (multi-object) DeleteObjects (#47, #56)+ - S3: HeadObject now uses an actual HEAD request (#53)+ - S3: fixed signing issues for GetObject call (#54)+ - SES: support for many more operations (#65, #66, #70, #71, #72, #74)+ - SES: SendRawEmail now correctly encodes destinations and allows multiple destinations (#73)+ - EC2: support fo Instance metadata (#37)+ - Core: queryToHttpRequest allows overriding "Date" for the benefit of Chris Dornan's Elastic Transcoder bindings (#77)+ ** 0.7 series +- 0.7.6.4+ - CryptoHash update - 0.7.6.3 - In addition to supporting http-conduit 1.9, it would seem nice to support conduit 1.0. Previously slipped through the radar. @@ -179,10 +196,11 @@ | Name | Github | E-Mail | Company | Components | |--------------------+--------------+---------------------------+------------------------+---------------|-| Aristid Breitkreuz | [[https://github.com/aristidb][aristidb]] | aristidb@gmail.com | - | Maintainer |+| Aristid Breitkreuz | [[https://github.com/aristidb][aristidb]] | aristidb@gmail.com | - | Co-Maintainer | | Bas van Dijk | [[https://github.com/basvandijk][basvandijk]] | v.dijk.bas@gmail.com | [[http://erudify.ch][Erudify AG]] | S3 | | David Vollbracht | [[https://github.com/qxjit][qxjit]] | | | | | Felipe Lessa | [[https://github.com/meteficha][meteficha]] | felipe.lessa@gmail.com | currently secret | Core, S3, SES | | Nathan Howell | [[https://github.com/NathanHowell][NathanHowell]] | nhowell@alphaheavy.com | [[http://www.alphaheavy.com][Alpha Heavy Industries]] | S3 | | Ozgun Ataman | [[https://github.com/ozataman][ozataman]] | ozgun.ataman@soostone.com | [[http://soostone.com][Soostone Inc]] | Core, S3 | | Steve Severance | [[https://github.com/sseveran][sseveran]] | sseverance@alphaheavy.com | [[http://www.alphaheavy.com][Alpha Heavy Industries]] | S3, SQS |+| John Wiegley | [[https://github.com/jwiegley][jwiegley]] | johnw@fpcomplete.com | [[http://fpcomplete.com][FP Complete]] | Co-Maintainer, S3 |
aws.cabal view
@@ -1,5 +1,5 @@ Name: aws-Version: 0.7.6.4+Version: 0.8.0 Synopsis: Amazon Web Services (AWS) for Haskell Description: Bindings for Amazon Web Services (AWS), with the aim of supporting all AWS services. To see a high level overview of the library, see the README at <https://github.com/aristidb/aws/blob/master/README.org>. Homepage: http://github.com/aristidb/aws@@ -20,7 +20,7 @@ Source-repository this type: git location: https://github.com/aristidb/aws.git- tag: 0.7.6.4+ tag: 0.8.0 Source-repository head type: git@@ -35,13 +35,16 @@ Aws, Aws.Aws, Aws.Core,+ Aws.Ec2.InstanceMetadata, Aws.S3, Aws.S3.Commands, Aws.S3.Commands.CopyObject, Aws.S3.Commands.DeleteObject,+ Aws.S3.Commands.DeleteObjects, Aws.S3.Commands.GetBucket, Aws.S3.Commands.GetObject, Aws.S3.Commands.GetService,+ Aws.S3.Commands.HeadObject, Aws.S3.Commands.PutBucket, Aws.S3.Commands.PutObject, Aws.S3.Core,@@ -61,6 +64,17 @@ Aws.Ses, Aws.Ses.Commands, Aws.Ses.Commands.SendRawEmail,+ Aws.Ses.Commands.ListIdentities,+ Aws.Ses.Commands.VerifyEmailIdentity,+ Aws.Ses.Commands.VerifyDomainIdentity,+ Aws.Ses.Commands.VerifyDomainDkim,+ Aws.Ses.Commands.DeleteIdentity,+ Aws.Ses.Commands.GetIdentityDkimAttributes,+ Aws.Ses.Commands.GetIdentityNotificationAttributes,+ Aws.Ses.Commands.GetIdentityVerificationAttributes,+ Aws.Ses.Commands.SetIdentityNotificationTopic,+ Aws.Ses.Commands.SetIdentityDkimEnabled,+ Aws.Ses.Commands.SetIdentityFeedbackForwardingEnabled, Aws.Ses.Core Build-depends:@@ -71,15 +85,15 @@ bytestring >= 0.9 && < 0.11, case-insensitive >= 0.2 && < 1.1, cereal == 0.3.*,- conduit >= 0.5 && < 1.1,+ conduit >= 1.0 && < 1.1, containers >= 0.4, crypto-api >= 0.9,- cryptohash >= 0.6 && < 0.10,+ cryptohash >= 0.8 && < 0.11, cryptohash-cryptoapi == 0.1.*, directory >= 1.0 && < 1.3, failure >= 0.2.0.1 && < 0.3, filepath >= 1.1 && < 1.4,- http-conduit >= 1.6 && < 1.10,+ http-conduit >= 1.9 && < 1.10, http-types >= 0.7 && < 0.9, lifted-base >= 0.1 && < 0.3, monad-control >= 0.3,@@ -90,7 +104,7 @@ time >= 1.1.4 && < 1.5, transformers >= 0.2.2.0 && < 0.4, utf8-string == 0.3.*,- xml-conduit >= 1.0.1 && <1.2+ xml-conduit >= 1.1 && <1.2 GHC-Options: -Wall