Class: Calendly::Client

Inherits:
Object
  • Object
show all
Includes:
Loggable
Defined in:
lib/calendly/client.rb

Overview

Calendly apis client.

Constant Summary collapse

API_HOST =
'https://api.calendly.com'
AUTH_API_HOST =
'https://auth.calendly.com'

Instance Method Summary collapse

Methods included from Loggable

#debug_log, #error_log, #info_log, #warn_log

Constructor Details

#initialize(token = nil) ⇒ Client

Returns a new instance of Client.

Parameters:

  • token (String) (defaults to: nil)

    a Calendly’s access token.

Raises:



14
15
16
17
18
19
20
# File 'lib/calendly/client.rb', line 14

def initialize(token = nil)
  @config = Calendly.configuration
  @token = token || Calendly.configuration.token

  check_not_empty @token, 'token'
  check_token
end

Instance Method Details

#access_tokenOAuth2::AccessToken

Get access token object.

Returns:

  • (OAuth2::AccessToken)

Since:

  • 0.0.1



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/calendly/client.rb', line 27

def access_token
  return @access_token if defined? @access_token

  client = OAuth2::Client.new(@config.client_id,
                              @config.client_secret, client_options)
  @access_token = OAuth2::AccessToken.new(
    client, @token,
    refresh_token: @config.refresh_token,
    expires_at: @config.token_expires_at
  )
end

#create_invitation(uuid, email) ⇒ Calendly::OrganizationInvitation

Invite a person to an Organization.

Parameters:

  • uuid (String)

    the specified organization (organization’s uuid).

  • email (String)

    Email of the person being invited.

Returns:

Raises:

Since:

  • 0.0.7



337
338
339
340
341
342
343
344
345
346
# File 'lib/calendly/client.rb', line 337

def create_invitation(uuid, email)
  check_not_empty uuid, 'uuid'
  check_not_empty email, 'email'
  body = request(
    :post,
    "organizations/#{uuid}/invitations",
    body: {email: email}
  )
  OrganizationInvitation.new body[:resource], self
end

#current_userCalendly::User Also known as: me

Get basic information about current user.

Returns:

Raises:

Since:

  • 0.0.1



61
62
63
# File 'lib/calendly/client.rb', line 61

def current_user
  user
end

#delete_invitation(org_uuid, inv_uuid) ⇒ true

Revoke Organization Invitation.

Parameters:

  • org_uuid (String)

    the specified organization (organization’s uuid).

  • inv_uuid (String)

    the specified invitation (organization invitation’s uuid).

Returns:

  • (true)

Raises:

Since:

  • 0.0.7



358
359
360
361
362
363
# File 'lib/calendly/client.rb', line 358

def delete_invitation(org_uuid, inv_uuid)
  check_not_empty org_uuid, 'org_uuid'
  check_not_empty inv_uuid, 'inv_uuid'
  request :delete, "organizations/#{org_uuid}/invitations/#{inv_uuid}"
  true
end

#delete_membership(uuid) ⇒ true

Remove a User from an Organization.

Parameters:

  • uuid (String)

    the specified memberhip (organization memberhips’s uuid).

Returns:

  • (true)

Raises:

Since:

  • 0.0.7



275
276
277
278
279
# File 'lib/calendly/client.rb', line 275

def delete_membership(uuid)
  check_not_empty uuid, 'uuid'
  request :delete, "organization_memberships/#{uuid}"
  true
end

#event_invitee(ev_uuid, inv_uuid) ⇒ Calendly::Invitee

Get Invitee of an Event Returns a single Invitee by their URI.

Parameters:

  • ev_uuid (String)

    the specified event (event’s uuid).

  • inv_uuid (String)

    the specified invitee (invitee’s uuid).

Returns:

Raises:

Since:

  • 0.0.4



164
165
166
167
168
169
# File 'lib/calendly/client.rb', line 164

def event_invitee(ev_uuid, inv_uuid)
  check_not_empty ev_uuid, 'ev_uuid'
  check_not_empty inv_uuid, 'inv_uuid'
  body = request :get, "scheduled_events/#{ev_uuid}/invitees/#{inv_uuid}"
  Invitee.new body[:resource], self
end

#event_invitees(uuid, opts = {}) ⇒ Array<Array<Calendly::Invitee>, Hash>

Get List of Event Invitees.

Parameters:

  • uuid (String)

    the specified event (event’s uuid).

  • opts (Hash) (defaults to: {})

    the optional request parameters.

Options Hash (opts):

  • :count (Integer)

    Number of rows to return.

  • :email (String)

    Filter by email.

  • :page_token (String)

    Pass this to get the next portion of collection.

  • :sort (String)

    Order results by the specified field and directin. Accepts comma-separated list of field:direction values.

  • :status (String)

    Whether the scheduled event is active or canceled.

Returns:

  • (Array<Array<Calendly::Invitee>, Hash>)
    • Array<Calendly::Invitee>

      invitees

    • Hash

      next_params the parameters to get next data. if thre is no next it returns nil.

Raises:

Since:

  • 0.0.4



187
188
189
190
191
192
193
194
195
196
197
# File 'lib/calendly/client.rb', line 187

def event_invitees(uuid, opts = {})
  check_not_empty uuid, 'uuid'

  opts_keys = %i[count email page_token sort status]
  params = merge_options opts, opts_keys
  body = request :get, "scheduled_events/#{uuid}/invitees", params: params

  items = body[:collection] || []
  evs = items.map { |item| Invitee.new item, self }
  [evs, next_page_params(body)]
end

#event_types(user_uri, opts = {}) ⇒ Array<Array<Calendly::EventType>, Hash>

Returns all Event Types associated with a specified User.

Parameters:

  • user_uri (String)

    the specified user (user’s uri).

  • opts (Hash) (defaults to: {})

    the optional request parameters.

Options Hash (opts):

  • :count (Integer)

    Number of rows to return.

  • :page_token (String)

    Pass this to get the next portion of collection.

  • :sort (String)

    Order results by the specified field and direction. Accepts comma-separated list of field:direction values.

Returns:

  • (Array<Array<Calendly::EventType>, Hash>)
    • Array<Calendly::EventType>

      event_types

    • Hash

      next_params the parameters to get next data. if thre is no next it returns nil.

Raises:

Since:

  • 0.0.2



95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/calendly/client.rb', line 95

def event_types(user_uri, opts = {})
  check_not_empty user_uri, 'user_uri'

  opts_keys = %i[count page_token sort]
  params = {user: user_uri}
  params = merge_options opts, opts_keys, params
  body = request :get, 'event_types', params: params

  items = body[:collection] || []
  ev_types = items.map { |item| EventType.new item, self }
  [ev_types, next_page_params(body)]
end

#invitation(org_uuid, inv_uuid) ⇒ Calendly::OrganizationInvitation

Returns an Organization Invitation.

Parameters:

  • org_uuid (String)

    the specified organization (organization’s uuid).

  • inv_uuid (String)

    the specified invitation (organization invitation’s uuid).

Returns:

Raises:

Since:

  • 0.0.6



291
292
293
294
295
296
297
# File 'lib/calendly/client.rb', line 291

def invitation(org_uuid, inv_uuid)
  check_not_empty org_uuid, 'org_uuid'
  check_not_empty inv_uuid, 'inv_uuid'

  body = request :get, "organizations/#{org_uuid}/invitations/#{inv_uuid}"
  OrganizationInvitation.new body[:resource], self
end

#invitations(uuid, opts = {}) ⇒ <Array<Array<Calendly::OrganizationInvitation>, Hash>] - [Array<Calendly::OrganizationInvitation>] organizations - [Hash] next_params the parameters to get next data. if thre is no next it returns nil.

Get Organization Invitations.

Parameters:

  • uuid (String)

    the specified organization (organization’s uuid).

  • opts (Hash) (defaults to: {})

    the optional request parameters.

Options Hash (opts):

  • :count (Integer)

    Number of rows to return.

  • :email (String)

    Filter by email.

  • :page_token (String)

    Pass this to get the next portion of collection.

  • :sort (String)

    Order results by the specified field and directin. Accepts comma-separated list of field:direction values.

  • :status (String)

    Filter by status.

Returns:

  • (<Array<Array<Calendly::OrganizationInvitation>, Hash>] - [Array<Calendly::OrganizationInvitation>] organizations - [Hash] next_params the parameters to get next data. if thre is no next it returns nil.)

    <Array<Array<Calendly::OrganizationInvitation>, Hash>]

    • Array<Calendly::OrganizationInvitation>

      organizations

    • Hash

      next_params the parameters to get next data. if thre is no next it returns nil.

Raises:

Since:

  • 0.0.6



315
316
317
318
319
320
321
322
323
324
325
# File 'lib/calendly/client.rb', line 315

def invitations(uuid, opts = {})
  check_not_empty uuid, 'uuid'

  opts_keys = %i[count email page_token sort status]
  params = merge_options opts, opts_keys

  body = request :get, "organizations/#{uuid}/invitations", params: params
  items = body[:collection] || []
  evs = items.map { |item| OrganizationInvitation.new item, self }
  [evs, next_page_params(body)]
end

#membership(uuid) ⇒ Calendly::OrganizationMembership

Returns information about a user’s organization membership

Parameters:

  • uuid (String)

    the specified membership (organization membership’s uuid).

Returns:

Raises:

Since:

  • 0.0.5



207
208
209
210
211
# File 'lib/calendly/client.rb', line 207

def membership(uuid)
  check_not_empty uuid, 'uuid'
  body = request :get, "organization_memberships/#{uuid}"
  OrganizationMembership.new body[:resource], self
end

#memberships(org_uri, opts = {}) ⇒ Array<Array<Calendly::OrganizationMembership>, Hash>

Get List memberships of all users belonging to an organization.

Parameters:

  • org_uri (String)

    the specified organization (organization’s uri).

  • opts (Hash) (defaults to: {})

    the optional request parameters.

Options Hash (opts):

  • :count (Integer)

    Number of rows to return.

  • :email (String)

    Filter by email.

  • :page_token (String)

    Pass this to get the next portion of collection.

Returns:

  • (Array<Array<Calendly::OrganizationMembership>, Hash>)
    • Array<Calendly::OrganizationMembership>

      memberships

    • Hash

      next_params the parameters to get next data. if thre is no next it returns nil.

Raises:

Since:

  • 0.0.5



227
228
229
230
231
232
233
234
235
236
237
238
# File 'lib/calendly/client.rb', line 227

def memberships(org_uri, opts = {})
  check_not_empty org_uri, 'org_uri'

  opts_keys = %i[count email page_token]
  params = {organization: org_uri}
  params = merge_options opts, opts_keys, params
  body = request :get, 'organization_memberships', params: params

  items = body[:collection] || []
  memberships = items.map { |item| OrganizationMembership.new item, self }
  [memberships, next_page_params(body)]
end

#memberships_by_user(user_uri, opts = {}) ⇒ Array<Array<Calendly::OrganizationMembership>, Hash>

Get List memberships of all users belonging to an organization by user.

Parameters:

  • user_uri (String)

    the specified user (user’s uri).

  • opts (Hash) (defaults to: {})

    the optional request parameters.

Options Hash (opts):

  • :count (Integer)

    Number of rows to return.

  • :email (String)

    Filter by email.

  • :page_token (String)

    Pass this to get the next portion of collection.

Returns:

  • (Array<Array<Calendly::OrganizationMembership>, Hash>)
    • Array<Calendly::OrganizationMembership>

      memberships

    • Hash

      next_params the parameters to get next data. if thre is no next it returns nil.

Raises:

Since:

  • 0.0.5



254
255
256
257
258
259
260
261
262
263
264
265
# File 'lib/calendly/client.rb', line 254

def memberships_by_user(user_uri, opts = {})
  check_not_empty user_uri, 'user_uri'

  opts_keys = %i[count email page_token]
  params = {user: user_uri}
  params = merge_options opts, opts_keys, params
  body = request :get, 'organization_memberships', params: params

  items = body[:collection] || []
  memberships = items.map { |item| OrganizationMembership.new item, self }
  [memberships, next_page_params(body)]
end

#refresh!Object

Refresh access token.

Raises:

Since:

  • 0.0.7



46
47
48
49
50
51
52
53
# File 'lib/calendly/client.rb', line 46

def refresh!
  check_not_empty @config.client_id, 'client_id'
  check_not_empty @config.client_secret, 'client_secret'
  @access_token = access_token.refresh!
rescue OAuth2::Error => e
  res = e.response.response
  raise ApiError.new res, e
end

#scheduled_event(uuid) ⇒ Calendly::Event

Returns a single Event by its URI.

Parameters:

  • uuid (String)

    the specified event (event’s uuid).

Returns:

Raises:

Since:

  • 0.0.3



116
117
118
119
120
# File 'lib/calendly/client.rb', line 116

def scheduled_event(uuid)
  check_not_empty uuid, 'uuid'
  body = request :get, "scheduled_events/#{uuid}"
  Event.new body[:resource], self
end

#scheduled_events(user_uri, opts = {}) ⇒ Array<Array<Calendly::Event>, Hash>

Get List of User Events.

Parameters:

  • user_uri (String)

    the specified user (user’s uri).

  • opts (Hash) (defaults to: {})

    the optional request parameters.

Options Hash (opts):

  • :count (Integer)

    Number of rows to return.

  • :invitee_email (String)

    Return events scheduled with the specified invitee email

  • :max_start_time (String)

    Upper bound (inclusive) for an event’s start time to filter by.

  • :min_start_time (String)

    Lower bound (inclusive) for an event’s start time to filter by.

  • :page_token (String)

    Pass this to get the next portion of collection.

  • :sort (String)

    Order results by the specified field and directin. Accepts comma-separated list of field:direction values.

  • :status (String)

    Whether the scheduled event is active or canceled

Returns:

  • (Array<Array<Calendly::Event>, Hash>)
    • Array<Calendly::Event>

      events

    • Hash

      next_params the parameters to get next data. if thre is no next it returns nil.

Raises:

Since:

  • 0.0.3



140
141
142
143
144
145
146
147
148
149
150
151
# File 'lib/calendly/client.rb', line 140

def scheduled_events(user_uri, opts = {})
  check_not_empty user_uri, 'user_uri'

  opts_keys = %i[count invitee_email max_start_time min_start_time page_token sort status]
  params = {user: user_uri}
  params = merge_options opts, opts_keys, params
  body = request :get, 'scheduled_events', params: params

  items = body[:collection] || []
  evs = items.map { |item| Event.new item, self }
  [evs, next_page_params(body)]
end

#user(uuid = 'me') ⇒ Calendly::User

Get basic information about a user

Parameters:

  • uuid (String) (defaults to: 'me')

    User unique identifier, or the constant “me” to reference the caller

Returns:

Raises:

Since:

  • 0.0.1



75
76
77
78
79
# File 'lib/calendly/client.rb', line 75

def user(uuid = 'me')
  check_not_empty uuid, 'uuid'
  body = request :get, "users/#{uuid}"
  User.new body[:resource], self
end