5      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (c) Denis Shevchenko, 2016MITme@dshevchenko.bizalphaNone$Connection manager with TLS support.(c) Denis Shevchenko, 2016MITme@dshevchenko.bizalphaNone Message about some problem.DGitHub project identifier, composed from user name and project name.GitHub user name.GitHub project name.!Monad for response from CircleCI.User email address.&Number of project's build on CircleCI. GitHub branch name. GitHub project name. GitHub user name. API token as text, for Servant.GCircleCI account API token. List of account API tokens can be found at  https://circleci.com/account/api.       (c) Denis Shevchenko, 2016MITme@dshevchenko.bizalphaSafe,Base URL for all API calls. For API v1 it's  https://circleci.com/api/v1/.(c) Denis Shevchenko, 2016MITme@dshevchenko.bizalphaSafe9All API calls require account API token, so move it into 6 monad instead of passing it as an explicit argument.(c) Denis Shevchenko, 2016MITme@dshevchenko.bizalphaNone(KLVCache clearing status.Clears build cache. Based on  *https://circleci.com/docs/api/#clear-cache.Usage example: a{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} import Network.CircleCI main :: IO () main = runCircleCI (clearCache $ ProjectPoint "denisshevchenko" "circlehs") (AccountAPIToken "e64c674195bbc0dbe3f9676c6ba2whatever") >>= \case Left problem -> print problem Right isCleared -> print isCleared Names of GitHub user/project.Info about clearing. (c) Denis Shevchenko, 2016MITme@dshevchenko.bizalphaNone(KLV%Environment variable deleting status.!Environment variable, name/value.Name of environment variable.EShows list of environment variables for the single project. Based on  9https://circleci.com/docs/api/#list-environment-variables.Usage example: [{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} import Network.CircleCI main :: IO () main = runCircleCI (getEnvVars $ ProjectPoint "denisshevchenko" "circlehs") (AccountAPIToken "e64c674195b87d76e988e9fbcba2whatever") >>= \case Left problem -> print problem Right envVars -> print envVars ,Shows single environment variable. Based on  7https://circleci.com/docs/api/#get-environment-variable.Usage example: x{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} import Network.CircleCI main :: IO () main = runCircleCI (getEnvVar project "GCC") token >>= \case Left problem -> print problem Right envVar -> print envVar where project = ProjectPoint "denisshevchenko" "circlehs" token = AccountAPIToken "e64c674195b87d76e988e9fbcba2whatever" $Adds environment variable. Based on  7https://circleci.com/docs/api/#add-environment-variable.Usage example: {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} import Network.CircleCI main :: IO () main = runCircleCI (addEnvVar project envVar) token >>= \case Left problem -> print problem Right newEnvVar -> print newEnvVar where project = ProjectPoint "denisshevchenko" "circlehs" envVar = EnvVar "GCC" "/usr/local/bin/gcc-4.8" token = AccountAPIToken "e64c674195b87d76e988e9fbcba2whatever" !.Deletes single environment variable. Based on  :https://circleci.com/docs/api/#delete-environment-variable.Usage example: {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} import Network.CircleCI main :: IO () main = runCircleCI (deleteEnvVar project "GCC") token >>= \case Left problem -> print problem Right isDeleted -> print isDeleted where project = ProjectPoint "denisshevchenko" "circlehs" token = AccountAPIToken "e64c674195b87d76e988e9fbcba2whatever" Names of GitHub user/project.List of environment variables.Names of GitHub user/project.Environment variable name.Environment variable. Names of GitHub user/project.Environment variable.Added environment variable.!Names of GitHub user/project.Environment variable name.)Info about environment variable deleting.  !  ! !(c) Denis Shevchenko, 2016MITme@dshevchenko.bizalphaNone(KLV"Checkout key deleting status.%Info about checkout key.'Public SSH key.( Key type.)Key fingerprint.*Preferred key or not.+Date when this key was issued.,Type of checkout key.-Repo-specific SSH key..User-specific SSH key./'Checkout key fingerprint. For example, 1"79:23:05:6a:6d:4c:3c:5c:0e:64:79:49:f0:e9:8d:a0".1&Shows list of checkout keys. Based on  1https://circleci.com/docs/api/#list-checkout-keys.Usage example: _{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} import Network.CircleCI main :: IO () main = runCircleCI (getCheckoutKeys $ ProjectPoint "denisshevchenko" "circlehs") (AccountAPIToken "e64c674195bbc0d0be3ef9679b6c6ba2whatever") >>= \case Left problem -> print problem Right keys -> print keys 2$Shows single checkout key. Based on  /https://circleci.com/docs/api/#get-checkout-key.Usage example: {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} import Network.CircleCI main :: IO () main = runCircleCI (getCheckoutKey project fingerprint) apiToken >>= \case Left problem -> print problem Right key -> print key where project = ProjectPoint "denisshevchenko" "circlehs" fingerprint = Fingerprint "79:23:05:6a:6d:4c:3c:5c:0e:64:79:49:f0:e9:8d:a0" apiToken = AccountAPIToken "e64c674195bbc0d0be3ef9679b6c6ba2whatever" 3Creates checkout key. Based on  /https://circleci.com/docs/api/#new-checkout-key.Usage example: c{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} import Network.CircleCI main :: IO () main = runCircleCI (createCheckoutKey $ ProjectPoint "denisshevchenko" "circlehs") (AccountAPIToken "e64c674195bbc0d0be3ef9679b6c6ba2whatever") >>= \case Left problem -> print problem Right newKey -> print newKey 4&Deletes single checkout key. Based on  2https://circleci.com/docs/api/#delete-checkout-key.Usage example: {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} import Network.CircleCI main :: IO () main = runCircleCI (deleteCheckoutKey project fingerprint) apiToken >>= \case Left problem -> print problem Right isDeleted -> print isDeleted where project = ProjectPoint "denisshevchenko" "circlehs" fingerprint = Fingerprint "79:23:05:6a:6d:4c:3c:5c:0e:64:79:49:f0:e9:8d:a0" apiToken = AccountAPIToken "e64c674195bbc0d0be3ef9679b6c6ba2whatever" ""#$%&'()*+,-./01Names of GitHub user/project.List of checkout keys.2Names of GitHub user/project.Key fingerprint.Checkout key info.3Names of GitHub user/project.New checkout key info.4Names of GitHub user/project.Key fingerprint. Status of checkout key deletion.# "#$%&'()*+,-./012341234/0%&'()*+,-."#$"#$%&'()*+,-./01234(c) Denis Shevchenko, 2016MITme@dshevchenko.bizalphaNone(KLV5 Build status.;Info about single build.BBuild info for a single branch.JInfo about single project.L&Programming language using in project.NRepository URL.O%Info about recent builds in branches.PName of default branch.QIf  - project is open.RIf $ - project is followed by some user.SGitHub user name. SlackTSlack channel name.USlack webhook URL.VSlack notify preferences.WSlack subdomain.XSlack API token. HipChatYHipChat notify preferences.ZHipChat notify.[HipChat API token.\HipChat room name. IRC] IRC server.^ IRC keyword._IRC channel name.`IRC user name.a IRC password.bIRC notify preferences.c9Show info about all projects user is following. Based on  'https://circleci.com/docs/api/#projects.Usage example: ({-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} import Network.CircleCI main :: IO () main = runCircleCI getProjectsInfo (AccountAPIToken "e64c674195bbc0d0be3efa2whatever") >>= \case Left problem -> print problem Right info -> print info ?56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcInfo about projects.? 56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc/cJKLMNOPQRSTUVWXYZ[\]^_`abBCDEFGHI;<=>?@A56789:56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc(c) Denis Shevchenko, 2016MITme@dshevchenko.bizalphaNone(KLVdGitHub OAuth mode.gEmail notification preference.l(CircleCI plan. For more info please see  https://circleci.com/pricing/.m"Hobbyist is a free plan for Linux.nCommercial plan.oShort info about the project.qProject's GitHUb URL.r(Does this project on CircleCI Dashboard?s%Email notifications for this project.tInfo about user.v'Does user in the CircleCI Beta Program?wUser's full name.x&All email addresses in user's account.y Default email for notifications.zUser email notifications.{GitHub avatar URL.| GitHub ID.}User's GitHub login.~GitHub OAuth scopes.'Date when CircleCI-account was created.Trial period end date.User's plan pricing.Parallelism for tests."Number of user's build containers.User's projects, short info. Analytics ID. Pusher ID.Heroku API key."User's analytics id. For example, &"6fc20e13-008e-4dc9-b158-ababd33a099d".Show info about user. Based on  #https://circleci.com/docs/api/#user.Usage example: ${-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE LambdaCase #-} import Network.CircleCI main :: IO () main = runCircleCI getUserInfo (AccountAPIToken "e64c674195bbc0d0be3efa2whatever") >>= \case Left problem -> print problem Right info -> print info 4defghijklmnopqrstuvwxyz{|}~Info about the signed in user.6 defghijklmnopqrstuvwxyz{|}~&tuvwxyz{|}~opqrsghijklmndefdefghijklmnopqrstuvwxyz{|}~(c) Denis Shevchenko, 2016MITme@dshevchenko.bizalphaNone  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !!"#$%&'()*+,,-./01234556789:;<=>?@@ABCDEFFGHIJKLMMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnonppqrsttuvwxyz{|}~circl_FCLusDcxRNDJMfNRzB2jcdNetwork.CircleCINetwork.CircleCI.Common.TypesNetwork.CircleCI.Common.RunNetwork.CircleCI.CacheNetwork.CircleCI.EnvironmentNetwork.CircleCI.CheckoutKeyNetwork.CircleCI.ProjectNetwork.CircleCI.UserNetwork.CircleCI.Common.HTTPSNetwork.CircleCI.Common.URL httpsManager ErrorMessage ProjectPointuserName projectNameCircleCIResponseEmail BuildNumber BranchName ProjectNameUserNameTokenAccountAPIToken apiBaseUrl runCircleCI CacheClearedCacheSuccessfullyClearedUnableToClearCache clearCache EnvVarDeletedEnvVarSuccessfullyDeletedUnableToDeleteEnvVarEnvVarnamevalue EnvVarName getEnvVars getEnvVar addEnvVar deleteEnvVarCheckoutKeyDeletedKeySuccessfullyDeletedUnableToDeleteKeyCheckoutKeyInfo publicKeykeyType fingerprint preferred issueDateCheckoutKeyTypeGitHubDeployKey GitHubUserKey FingerprintgetCheckoutKeysgetCheckoutKeycreateCheckoutKeydeleteCheckoutKey BuildStatus BuildRunning BuildSuccess BuildFailed BuildCanceledNoTests BuildInfostatusnumbercommitpushDate addingDateBranchBuildInfo branchNamelastSuccessBuildlastFailedBuild pusherLogins recentBuilds runningBuilds ProjectInfolanguagerepositoryName repositoryUrlbranches defaultBranch isOpenSourcefollowedgitHubUserName slackChannelslackWebhookUrlslackNotifyPreferensesslackSubdomain slackAPITokenhipchatNotifyPreferenses hipchatNotifyhipchatAPIToken hipchatRoom ircServer ircKeyword ircChannel ircUsername ircPasswordircNotifyPreferensesgetProjectsInfo GitHubOAuthUserEmailOAuth RepoOAuthEmailNotificationDefaultNotificationAllBuildsNotificationBranchesIHavePushedToWithoutNotificationPlanHobbyistProjectShortInfo gitHubURL onDashboardemailNotificationUserInfo inBetaProgramfullName allEmails defaultEmailbasicEmailPreferencegitHubAvatarUrlgitHubId gitHubLogingitHubOAuthScopesaccountCreatedAt trialEndDateplan parallelismcontaintersNumberprojects analyticsIdpusherId herokuAPIKey AnalyticsId getUserInfotrans_3eG64VdP2vzGjP6wJiCp5XControl.Monad.Trans.ReaderReaderTClearCacheCallCacheAPItoCacheClearedservantClearCachecacheAPI$fFromJSONCacheClearedDeleteEnvVarCall AddEnvVarCall GetEnvVarCallGetEnvVarsCall EnvVarAPItoEnvVarDeletedservantGetEnvVarsservantGetEnvVarservantAddEnvVarservantDeleteEnvVar envVarAPI$fFromJSONEnvVarDeleted$fToJSONEnvVar$fFromJSONEnvVarDeleteCheckoutKeyCallCreateCheckoutKeyCallGetCheckoutKeyCallGetCheckoutKeysCallCheckoutKeyAPItoCheckoutKeyType toFingerprinttoCheckoutKeyDeletedservantGetCheckoutKeysservantGetCheckoutKeyservantCreateCheckoutKeyservantDeleteCheckoutKeycheckoutKeyAPI$fFromJSONCheckoutKeyDeleted$fFromJSONCheckoutKeyInfoghc-prim GHC.TypesTrueGetProjectsInfoCallProjectsInfoAPIRawBranchBuildInforawLastSuccessBuildrawLastFailedBuildrawPusherLoginsrawRecentBuildsrawRunningBuildstoBranchesBuildInfo toBuildStatusservantGetProjectsInfoprojectsInfoAPI$fFromJSONBuildInfo$fFromJSONRawBranchBuildInfo$fFromJSONProjectInfoGetUserInfoCallUserAPI RawProjectrawOnDashboardrawEmailNotificationtoProjectsShortInfotoPlantoEmailPreference toGitHubOAuthservantGetUserInfouserAPI$fFromJSONRawProject$fFromJSONUserInfo