hsforce: Salesforce API Client

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain]

This package provides bindings to Salesforce API https://github.com/githubuser/hsforce#readme


[Skip to ReadMe]

Properties

Versions0.1.0.0, 0.1.0.0, 0.1.0.1
Change logChangeLog.md
Dependenciesaeson (>=1.4.2 && <1.5), base (>=4.7 && <5), bytestring (>=0.10.8 && <0.11), fast-tagsoup (>=1.0.14 && <1.1), HaXml (>=1.25.4 && <1.26), http-conduit (>=2.3.4 && <2.4), network-uri (>=2.6.1 && <2.7), regex-posix (>=0.95.2 && <0.96), tagsoup (>=0.14.7 && <0.15), template-haskell (>=2.14.0 && <2.15), text (>=1.2.2 && <1.3), unordered-containers (>=0.2.7 && <0.3), uri-encode (>=1.5.0 && <1.6) [details]
LicenseBSD-3-Clause
Copyright2019 Makoto Tajitsu
AuthorMakoto Tajitsu
Maintainermakoto_tajitsu@hotmail.co.jp
CategoryWeb
Home pagehttps://github.com/tzmfreedom/hsforce#readme
Bug trackerhttps://github.com/tzmfreedom/hsforce/issues
Source repositoryhead: git clone https://github.com/tzmfreedom/hsforce
UploadedMon Mar 4 04:59:04 UTC 2019 by tzmfreedom

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees


Readme for hsforce-0.1.0.0

[back to package description]

hsforce

Usage

Login and create Salesforce client.

main :: IO ()
main = do
  username <- getEnv "SALESFORCE_USERNAME"
  password <- getEnv "SALESFORCE_PASSWORD"
  endpoint <- getEnv "SALESFORCE_ENDPOINT"
  version <- getEnv "SALESFORCE_VERSION"
  client <- login username password endpoint version

create data type that is SObject class.

import Data.Aeson as JSON
import Data.Maybe

data Account = Account{
  sfid :: Maybe String,
  name :: Maybe String,
  ex :: Maybe String
} deriving Show

instance SObject Account where
  typeName a = "Account"
  getSfid = fromJust . sfid

instance FromJSON Account where
  parseJSON = withObject "Account" $ \v -> do
    sfid <- v .: "Id"
    name <- v .:? "Name"
    ex <- v .:? "Ex__c"
    return Account{..}

instance ToJSON Account where
  toJSON (Account{sfid, name, ex}) =
    object ["Name" .= name]

CRUD API

-- insert object
insert client Account{sfid = Nothing, name = Just "hogehoge", ex = Nothing}

-- update object
update client Account{sfid = Just "xxxx", name = Just "foobar"}

-- upsert object
upsert client Account{sfid = Nothing, name = Just "foobar", ex = Just "aaa"} "Ex__c" "aaa"

-- delete object
delete client Account{sfid = Just "xxxx"}

-- query
query client "SELECT Id, Name FROM Account WHERE Name = 'foobar'" (Proxy :: Proxy Account)

-- queryMore
queryMore client "/services/data/v20.0/query/01gD0000002HU6KIAW-2000" (Proxy :: Proxy Account)

-- queryAll
queryAll client "SELECT Id, Name FROM Account WHERE Name = 'foobar'" (Proxy :: Proxy Account)

-- queryAllMore
queryAllMore client "/services/data/v20.0/queryMore/01gD0000002HU6KIAW-2000" (Proxy :: Proxy Account)

-- explain
explain client "SELECT Id FROM Account"

-- describe
describe client "Account" (Proxy :: Proxy Account)

-- describeDetail
describeDetail client "Account"

-- describeGlobal
describeGlobal client

-- recordCount
recordCount client ["Account", "Contact", "Opportunity"]

-- versions
versions client