class Bonita::Client

Attributes

password[R]
redirect_url[R]
tenant[R]
url[R]
username[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/bonita/client.rb, line 55
def initialize(options = {})
  @url          = options[:url]
  @username     = options[:username]
  @password     = options[:password]
  @tenant       = options[:tenant]
end
resources() click to toggle source
# File lib/bonita/client.rb, line 7
def resources
  {
    customuserinfo: {
      definitions: Customuserinfo::DefinitionResource,
      users: Customuserinfo::UserResource,
      values: Customuserinfo::ValueResource,
    },
    bpm: {
      processes: Bpm::ProcessResource,
    },
    identity: {
      groups: Identity::GroupResource,
      memberships: Identity::MembershipResource,
      roles: Identity::RoleResource,
      users: Identity::UserResource,
    },
  }
end
start(options = {}) { |client| ... } click to toggle source
# File lib/bonita/client.rb, line 26
def start(options = {})
  client = new(options)
  client.login

  yield(client)
ensure
  client.logout
end

Public Instance Methods

connection() click to toggle source
# File lib/bonita/client.rb, line 81
def connection
  @faraday ||=
    Faraday.new connection_options do |conn|
      conn.use :cookie_jar
      conn.use Bonita::Middleware::CSRF
      conn.use Faraday::Request::UrlEncoded
      conn.adapter Faraday.default_adapter
    end
end
login() click to toggle source
# File lib/bonita/client.rb, line 62
def login
  response =
    connection.post '/bonita/loginservice' do |req|
      req.headers['Content-Type'] = 'application/x-www-form-urlencoded'
      req.body = {
        username:     @username,
        password:     @password,
        tenant:       @tenant,
      }
    end

  raise Bonita::AuthError, 'Unable to log in' if response.body.include?('Unable to log in')
  true
end
logout() click to toggle source
# File lib/bonita/client.rb, line 77
def logout
  connection.get '/bonita/logoutservice?redirect=false'
end

Private Instance Methods

connection_options() click to toggle source
# File lib/bonita/client.rb, line 93
def connection_options
  {
    url: @url,
    request: {
      params_encoder: Faraday::FlatParamsEncoder,
    },
    headers: {
      content_type: 'application/json',
    },
  }
end