!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None]geography ID _Instagram returns data:null for nothing, but Aeson considers that () maps to an empty array... ; so we model the fact that we expect null via NoResult !a relationship between two users not present in doc incoming relationship status  outgoing relationship status a Tag  Tag Name !an update from a subscription +a subscription to a real time notification 'notification aspect ($the URL to receive notifications to )%a collection of items (count + data)  data can only be a subset -Commenton on a medium 3 comment id 4$different images for the same media 9data for a single image >geographical location info E location ID Fposition of a user Jposition in picture Ninstagram media object ^seems to be open format https:groups.google.comforum ?fromgroups#!topicinstagram-api-developers KvGH1cnjljQ _ Media ID `>pagination info for responses that can return a lot of data ,error envelope for Instagram error response g#envelope for Instagram OK response iBthis should only say 200, no error, but put here for completeness jAdata, garanteed to be present (otherwise we get an ErrEnvelope) l0an exception that a call to instagram may throw application exception JSON parsingError %an error returned to us by Instagram m!the scopes of the authentication r@the User partial profile returned by the authentication yUser ID z"the access token is simply a Text |.the oauth token returned after authentication ~the access token the user structure returned the app credentials  client id client secret !get client id in ByteString form %get client secret in ByteString form 3the media Aspect, the only one supported for now "from json as per Instagram format "to json as per Instagram format "from json as per Instagram format $to json as per Instagram format "from json as per Instagram format !to json as per Instagram format "from json as per Instagram format !to json as per Instagram format "from json as per Instagram format $to json as per Instagram format "from json as per Instagram format  $to json as per Instagram format  "from json as per Instagram format  $to json as per Instagram format  "from json as per Instagram format  $to json as per Instagram format "from json as per Instagram format $to json as per Instagram format "from json asCommentstagram format $to json asCommentstagram format "from json as per Instagram format &to json as per Instagram format "from json as per Instagram format &to json as per Instagram format "from json as per Instagram format &to json as per Instagram format "from json as per Instagram format &to json as per Instagram format "from json as per Instagram format &to json as per Instagram format "from json as per Instagram format $to json as per Instagram format "from json as per Instagram format $to json as per Instagram format  "from json as per Instagram format !$to json as per Instagram format ""from json as per Instagram format #$to json as per Instagram format $-make our exception type a normal exception %"from json as per Instagram format &$to json as per Instagram format '"from json as per Instagram format ($to json as per Instagram format )simple string *simple string +*from json as per Instagram format , to json as per Instagram format -  !"#$%&'.()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef/0ghijkl1234mnopqrstuvwxyz{|}~      !"#$%&'()*+,  !"#$%&'.()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef/0ghijklmnopqrstuvwxyz{|}~S-     !"#$%&'.()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef/0ghijkl1234mqponrstuvwxyz{|}~      !"#$%&'()*+,None5[simple class used to hide the serialization of parameters ansd simplify the calling code 6'the data kept through the computations 7app credentials 8HTTP connection manager 9 host name  the instagram monad transformer G this encapsulates the data necessary to pass the app credentials, etc Run a computation in the  monad transformer with  your credentials. : Get the user's credentials. ;Get the instagram host <"build a post request to Instagram =!build a get request to Instagram >%build a delete request to Instagram ?4build a URL for a get operation with a single query @5perform a HTTP request and deal with the JSON result A0get a JSON response from a request to Instagram 0 instagram returns either a result, or an error B,get an envelope from a request to Instagram * the error is wrapped inside the envelope Cget an envelope from Instagram D=get an envelope from Instagram, with optional authentication E1send a delete and get an envelope from Instagram FOsend a delete and get an envelope from Instagram, with optional authentication G7post a request and get back an envelope from Instagram HUpost a request and get back an envelope from Instagram, with optional authentication INutility function to get an envelop, independently of how the request is built JGet the K. Run a  ResourceT inside a . L#Transform the computation inside a . MTrue if the the Status is ok (i.e. 2XX). N"add the access token to the query O*add an optional access token to the query  if we don't have a token, we'll pass the client_id P)add application client info to the query .5Q6R789STYour app's credentials. Connection manager (see U). the action to run  the result :;< the url path the query parameters  the properly configured request = the url path the query parameters  the properly configured request > the url path the query parameters  the properly configured request ? the url path the query parameters the URL @ extract the error from the JSON ABC)the URL components, will be concatenated the access token the query parameters the resulting envelope D)the URL components, will be concatenated the access token the query parameters the resulting envelope E)the URL components, will be concatenated the access token the query parameters the resulting envelope F)the URL components, will be concatenated the access token the query parameters the resulting envelope G)the URL components, will be concatenated the access token the query parameters the resulting envelope H)the URL components, will be concatenated the access token the query parameters the resulting envelope Ithe request building method )the URL components, will be concatenated the access token the query parameters the resulting envelope JLMNOPVWXYZ[\]^_`a5Q:;<=>?ABCDEFGHJLNOP'5Q6R789ST:;<=>?@ABCDEFGHIJLMNOPVWXYZ[\]^_`aNonedeletion parameters %delete all geography subscriptions $delete all location subscriptions delete all tag subscriptions delete all user subscriptions &delete one subscription, given its ID delete all subscriptions "details of subscription request Awhen a picture is tagged with a location inside the given region 2when a picture is tagged with a specific location ,when a picture is tagged with the given tag when a user uploads a picture )parameters for the subscription creation  the actual subscription request -the url Instagram will post notifications to the subscription aspect the verification token create a subscription +list all subscriptions for the application 'delete subscriptions based on criteria Cverify the signature with the content, using the secret as the key bto HTTP query cto HTTP query dto HTTP query the subscription parameters the created subscription the ID of the subscription  the parameters for the deletion the ID of the subscription the signature  the content bcd  bcdNonerelationship action )Get the list of users this user follows. 0Get the list of users this user is followed by. +List the users who have requested this user's permission to follow. 7Get information about a relationship to another user. FModify the relationship between the current user and the target user. e eNone(parameters for recent tag pagination %Get information about a tag object. %Get a list of recently tagged media. Search for tags by name. fgfgNone parameters for self liked call parameters for self liked call $Parameters for call to recent media !Parameters for call to self feed %Get basic information about a user. See the authenticated user' s feed. 0Get the most recent media published by a user. See the authenticated user's list of media they' ve liked. Search for a user by name. hijklmnhijklmnNone$Parameters for call to media search &Get information about a media object. 8Get a list of what media is most popular at the moment. "Search for media in a given area. op op None$Parameters for call to media search 7Parameters for call to recent media in location search #Get information about a location. ;Get a list of recent media objects from a given location. 1Search for a location by geographic coordinate. qrst qrst None/Get a list of users who have liked this media. >Set a like on this media by the currently authenticated user. ARemove a like on this media by the currently authenticated user.  None8Parameters for call to recent media in geography search EGet very recent media from a geography subscription that you created uvuv None(Get a full list of comments on a media. Create a comment on a media. 1Remove a comment either on the authenticated user'/s media or authored by the authenticated user.  None.the URI to redirect the user after she accepts/refuses to authorize the app /get the authorize url to redirect your user to asecond step of authorization: get the access token once the user has been redirected with a code .the URI to redirect the user after she accepts/refuses to authorize the app .the requested scopes (can be empty for Basic)  the URL to redirect the user to the redirect uri the code sent back to your app the auth token None  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~l|}~z{rstuvwxmqponghijk`abcdefNOPQRSTUVWXYZ[\]^JKLMFGHI>?@ABCD9:;<=45678-./012)*+,y'( !"#$%&   _3Ew !!"#$%&''()*+,-./012334566789:;<<=>?@@ABCDDEFGHIJKKLMNNOPQQRSTUVWXYZ[\]^_`abbcdefghhijklmnopqrrstuvwxyyzz{|}}~             1 !"#$%&'()*+,-./0123456789:;<=>?@A$BC9:DEFGHIJKLMNOPQRSTUVWXYZ[\]^_ ` a b c d efig-0.1 InstagramInstagram.TypesInstagram.MonadInstagram.RealTimeInstagram.RelationshipsInstagram.TagsInstagram.UsersInstagram.MediaInstagram.LocationsInstagram.LikesInstagram.GeographiesInstagram.CommentsInstagram.Auth GeographyIDNoResult Relationship rOutgoing rIncomingrTargetUserPrivateIncomingStatusInNone BlockedByYou RequestedBy FollowedByOutgoingStatusOutNone RequestedFollowsTagtName tMediaCountTagNameUpdateuSubscriptionIDuObject uObjectIDuChangedAspectuTime SubscriptionsIDsTypesObject sObjectIDsAspect sCallbackUrl sLatitude sLongitudesRadiusAspect CallbackUrl CollectioncCountcDataCommentcIDcCreatedcTextcFrom CommentIDImagesiLowRes iThumbnail iStandardRes ImageDataidURLidWidthidHeightLocationlID lLatitude lLongitudelStreetAddresslName LocationID UserPosition upPositionupUserPositionpXpYMediamIDmCaptionmLinkmUsermCreatedmImagesmType mUsersInPhotomFiltermTags mLocation mCommentsmLikes mUserHasLiked mAttributionMediaID PaginationpNextUrl pNextMaxID pNextMinID pNextMaxTagID pMinTagIDEnvelopeeMetaeData ePagination IGExceptionScopeLikes RelationshipsCommentsBasicUseruID uUsername uFullNameuProfilePictureuWebsiteUserID AccessToken OAuthToken oaAccessTokenoaUser Credentials cClientID cClientSecretmedia InstagramT runInstagramTrunResourceInIsDeletionParamsDeleteGeographiesDeleteLocations DeleteTags DeleteUsers DeleteOnedoID DeleteAllSubscriptionRequestGeographyRequest grLatitude grLongitudegrRadiusLocationRequestlrID TagRequesttrTag UserRequestSubscriptionParams spRequest spCallbackspAspect spVerifyTokencreateSubscriptionlistSubscriptionsdeleteSubscriptionsverifySignatureRelationShipActionDenyApproveUnblockBlockUnfollowFollow getFollows getFollowedBygetRequestedBygetRelationshipsetRelationShipRecentTagParamsrtpMaxIDrtpMinIDgetTaggetRecentTagged searchTagsUserSearchParamsuspQueryuspCountSelfLikedParamsslpCount slpMaxLikeID RecentParamsrpCountrpMaxTimestamprpMinTimestamprpMaxIDrpMinIdSelfFeedParamssfpCountsfpMaxIDsfpMinIdgetUser getSelfFeed getRecent getSelfLiked searchUsersMediaSearchParams mspLatitude mspLongitude mspDistancemspMaxTimestampmspMinTimestampgetMediagetPopularMedia searchMediaLocationSearchParams lspLatitude lspLongitude lspDistancelspFoursquareIDv2lspFoursquareIDLocationMediaParamslmspMaxTimestamplmspMinTimestamp lmspMaxID lmspMinId getLocationgetLocationRecentMediasearchLocationsgetLikeslikeunlikeGeographyMediaParamsgmpCountgmpMinIdgetGeographyRecentMedia getComments postComment deleteComment RedirectUrigetUserAccessTokenURL1getUserAccessTokenURL2 ErrEnvelopeIGAppException JSONExceptionIGError clientIDBSclientSecretBS$fFromJSONNoResult$fToJSONNoResult$fFromJSONRelationship$fToJSONRelationship$fFromJSONIncomingStatus$fToJSONIncomingStatus$fFromJSONOutgoingStatus$fToJSONOutgoingStatus $fFromJSONTag $fToJSONTag$fFromJSONUpdate$fToJSONUpdate$fFromJSONSubscription$fToJSONSubscription$fFromJSONAspect$fToJSONAspect$fFromJSONCollection$fToJSONCollection$fFromJSONComment$fToJSONComment$fFromJSONImages$fToJSONImages$fFromJSONImageData$fToJSONImageData$fFromJSONLocation$fToJSONLocation$fFromJSONUserPosition$fToJSONUserPosition$fFromJSONPosition$fToJSONPosition$fFromJSONMedia $fToJSONMedia$fFromJSONPagination$fToJSONPagination$fFromJSONErrEnvelope$fToJSONErrEnvelope$fFromJSONEnvelope$fToJSONEnvelope$fExceptionIGException$fFromJSONIGError$fToJSONIGError$fFromJSONUser $fToJSONUser$fFromJSONAccessToken$fToJSONAccessToken$fFromJSONOAuthToken$fToJSONOAuthTokeneeMetaigeCodeigeType igeMessage ToHtQueryIsDataisCreds isManagerisHostgetCredsgetHostgetPostRequest getGetRequestgetDeleteRequest getQueryURLigReqgetJSONResponsegetJSONEnvelopegetGetEnvelopegetGetEnvelopeMgetDeleteEnvelopegetDeleteEnvelopeMgetPostEnvelopegetPostEnvelopeM getEnvelopeM getManagerhttp-conduit-1.9.4Network.HTTP.Conduit.ManagerManager mapInstagramTisOkayaddToken addTokenMaddClientInfos?+IsunIs withManager $fToHtQuery[]$fToHtQueryMaybe$fToHtQueryText$fToHtQueryMaybe0$fToHtQueryMaybe1$fToHtQueryMaybe2$fToHtQueryInteger$fToHtQueryMaybe3$fToHtQueryDouble$fMonadBaseControlbInstagramT$fMonadTransControlInstagramT$fMonadBasebInstagramT$fQueryLikeDeletionParams$fQueryLikeSubscriptionRequest$fQueryLikeSubscriptionParams$fQueryLikeRelationShipAction$fQueryLikeRecentTagParams$fDefaultRecentTagParams$fQueryLikeUserSearchParams$fQueryLikeSelfLikedParams$fDefaultSelfLikedParams$fQueryLikeRecentParams$fDefaultRecentParams$fQueryLikeSelfFeedParams$fDefaultSelfFeedParams$fQueryLikeMediaSearchParams$fDefaultMediaSearchParams$fQueryLikeLocationSearchParams$fDefaultLocationSearchParams$fQueryLikeLocationMediaParams$fDefaultLocationMediaParams$fQueryLikeGeographyMediaParams$fDefaultGeographyMediaParams