Class: TrophyApiClient::AsyncUsersClient

Inherits:
Object
  • Object
show all
Defined in:
lib/trophy_api_client/users/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request_client:) ⇒ TrophyApiClient::AsyncUsersClient

Parameters:



273
274
275
# File 'lib/trophy_api_client/users/client.rb', line 273

def initialize(request_client:)
  @request_client = request_client
end

Instance Attribute Details

#request_clientTrophyApiClient::AsyncRequestClient (readonly)



269
270
271
# File 'lib/trophy_api_client/users/client.rb', line 269

def request_client
  @request_client
end

Instance Method Details

#allachievements(id:, request_options: nil) ⇒ Array<TrophyApiClient::MultiStageAchievementResponse>

Get all of a user’s completed achievements.

Examples:

api = TrophyApiClient::Client.new(
  base_url: "https://api.example.com",
  environment: TrophyApiClient::Environment::DEFAULT,
  api_key: "YOUR_API_KEY"
)
api.users.allachievements(id: "userId")

Parameters:

Returns:



470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
# File 'lib/trophy_api_client/users/client.rb', line 470

def allachievements(id:, request_options: nil)
  Async do
    response = @request_client.conn.get do |req|
      req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
      req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
      req.headers = {
    **(req.headers || {}),
    **@request_client.get_headers,
    **(request_options&.additional_headers || {})
      }.compact
      unless request_options.nil? || request_options&.additional_query_parameters.nil?
        req.params = { **(request_options&.additional_query_parameters || {}) }.compact
      end
      unless request_options.nil? || request_options&.additional_body_parameters.nil?
        req.body = { **(request_options&.additional_body_parameters || {}) }.compact
      end
      req.url "#{@request_client.get_url(request_options: request_options)}/users/#{id}/achievements"
    end
    parsed_json = JSON.parse(response.body)
    parsed_json&.map do |item|
      item = item.to_json
      TrophyApiClient::MultiStageAchievementResponse.from_json(json_object: item)
    end
  end
end

#allmetrics(id:, request_options: nil) ⇒ Array<TrophyApiClient::MetricResponse>

Get a single user’s progress against all active metrics.

Examples:

api = TrophyApiClient::Client.new(
  base_url: "https://api.example.com",
  environment: TrophyApiClient::Environment::DEFAULT,
  api_key: "YOUR_API_KEY"
)
api.users.allmetrics(id: "userId")

Parameters:

Returns:



397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
# File 'lib/trophy_api_client/users/client.rb', line 397

def allmetrics(id:, request_options: nil)
  Async do
    response = @request_client.conn.get do |req|
      req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
      req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
      req.headers = {
    **(req.headers || {}),
    **@request_client.get_headers,
    **(request_options&.additional_headers || {})
      }.compact
      unless request_options.nil? || request_options&.additional_query_parameters.nil?
        req.params = { **(request_options&.additional_query_parameters || {}) }.compact
      end
      unless request_options.nil? || request_options&.additional_body_parameters.nil?
        req.body = { **(request_options&.additional_body_parameters || {}) }.compact
      end
      req.url "#{@request_client.get_url(request_options: request_options)}/users/#{id}/metrics"
    end
    parsed_json = JSON.parse(response.body)
    parsed_json&.map do |item|
      item = item.to_json
      TrophyApiClient::MetricResponse.from_json(json_object: item)
    end
  end
end

#create(request:, request_options: nil) ⇒ TrophyApiClient::User

Identify a new user.

Examples:

api = TrophyApiClient::Client.new(
  base_url: "https://api.example.com",
  environment: TrophyApiClient::Environment::DEFAULT,
  api_key: "YOUR_API_KEY"
)
api.users.create(request: { id: "user-id" })

Parameters:

  • request (Hash)

    The user object.Request of type TrophyApiClient::UpsertedUser, as a Hash

    • :id (String)

    • :email (String)

    • :name (String)

    • :tz (String)

    • :subscribe_to_emails (Boolean)

  • request_options (TrophyApiClient::RequestOptions) (defaults to: nil)

Returns:



294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
# File 'lib/trophy_api_client/users/client.rb', line 294

def create(request:, request_options: nil)
  Async do
    response = @request_client.conn.post do |req|
      req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
      req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
      req.headers = {
    **(req.headers || {}),
    **@request_client.get_headers,
    **(request_options&.additional_headers || {})
      }.compact
      unless request_options.nil? || request_options&.additional_query_parameters.nil?
        req.params = { **(request_options&.additional_query_parameters || {}) }.compact
      end
      req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
      req.url "#{@request_client.get_url(request_options: request_options)}/users"
    end
    TrophyApiClient::User.from_json(json_object: response.body)
  end
end

#get(id:, request_options: nil) ⇒ TrophyApiClient::User

Get a single user.

Examples:

api = TrophyApiClient::Client.new(
  base_url: "https://api.example.com",
  environment: TrophyApiClient::Environment::DEFAULT,
  api_key: "YOUR_API_KEY"
)
api.users.get(id: "userId")

Parameters:

Returns:



326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
# File 'lib/trophy_api_client/users/client.rb', line 326

def get(id:, request_options: nil)
  Async do
    response = @request_client.conn.get do |req|
      req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
      req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
      req.headers = {
    **(req.headers || {}),
    **@request_client.get_headers,
    **(request_options&.additional_headers || {})
      }.compact
      unless request_options.nil? || request_options&.additional_query_parameters.nil?
        req.params = { **(request_options&.additional_query_parameters || {}) }.compact
      end
      unless request_options.nil? || request_options&.additional_body_parameters.nil?
        req.body = { **(request_options&.additional_body_parameters || {}) }.compact
      end
      req.url "#{@request_client.get_url(request_options: request_options)}/users/#{id}"
    end
    TrophyApiClient::User.from_json(json_object: response.body)
  end
end

#singlemetric(id:, key:, request_options: nil) ⇒ TrophyApiClient::MetricResponse

Get a user’s progress against a single active metric.

Examples:

api = TrophyApiClient::Client.new(
  base_url: "https://api.example.com",
  environment: TrophyApiClient::Environment::DEFAULT,
  api_key: "YOUR_API_KEY"
)
api.users.singlemetric(id: "userId", key: "key")

Parameters:

Returns:



436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
# File 'lib/trophy_api_client/users/client.rb', line 436

def singlemetric(id:, key:, request_options: nil)
  Async do
    response = @request_client.conn.get do |req|
      req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
      req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
      req.headers = {
    **(req.headers || {}),
    **@request_client.get_headers,
    **(request_options&.additional_headers || {})
      }.compact
      unless request_options.nil? || request_options&.additional_query_parameters.nil?
        req.params = { **(request_options&.additional_query_parameters || {}) }.compact
      end
      unless request_options.nil? || request_options&.additional_body_parameters.nil?
        req.body = { **(request_options&.additional_body_parameters || {}) }.compact
      end
      req.url "#{@request_client.get_url(request_options: request_options)}/users/#{id}/metrics/#{key}"
    end
    TrophyApiClient::MetricResponse.from_json(json_object: response.body)
  end
end

#streak(id:, history_periods: nil, request_options: nil) ⇒ TrophyApiClient::StreakResponse

Get a user’s streak data.

Examples:

api = TrophyApiClient::Client.new(
  base_url: "https://api.example.com",
  environment: TrophyApiClient::Environment::DEFAULT,
  api_key: "YOUR_API_KEY"
)
api.users.streak(id: "userId")

Parameters:

  • id (String)

    ID of the user.

  • history_periods (Integer) (defaults to: nil)

    The number of past streak periods to include in the streakHistory field of the response.

  • request_options (TrophyApiClient::RequestOptions) (defaults to: nil)

Returns:



510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
# File 'lib/trophy_api_client/users/client.rb', line 510

def streak(id:, history_periods: nil, request_options: nil)
  Async do
    response = @request_client.conn.get do |req|
      req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
      req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
      req.headers = {
    **(req.headers || {}),
    **@request_client.get_headers,
    **(request_options&.additional_headers || {})
      }.compact
      req.params = {
        **(request_options&.additional_query_parameters || {}),
        "historyPeriods": history_periods
      }.compact
      unless request_options.nil? || request_options&.additional_body_parameters.nil?
        req.body = { **(request_options&.additional_body_parameters || {}) }.compact
      end
      req.url "#{@request_client.get_url(request_options: request_options)}/users/#{id}/streak"
    end
    TrophyApiClient::StreakResponse.from_json(json_object: response.body)
  end
end

#update(id:, request:, request_options: nil) ⇒ TrophyApiClient::User

Update a user.

Examples:

api = TrophyApiClient::Client.new(
  base_url: "https://api.example.com",
  environment: TrophyApiClient::Environment::DEFAULT,
  api_key: "YOUR_API_KEY"
)
api.users.update(id: "id", request: { email: "[email protected]", tz: "Europe/London" })

Parameters:

  • id (String)

    ID of the user to update.

  • request (Hash)

    The user object.Request of type TrophyApiClient::UpdatedUser, as a Hash

    • :email (String)

    • :name (String)

    • :tz (String)

    • :subscribe_to_emails (Boolean)

  • request_options (TrophyApiClient::RequestOptions) (defaults to: nil)

Returns:



365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
# File 'lib/trophy_api_client/users/client.rb', line 365

def update(id:, request:, request_options: nil)
  Async do
    response = @request_client.conn.patch do |req|
      req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
      req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
      req.headers = {
    **(req.headers || {}),
    **@request_client.get_headers,
    **(request_options&.additional_headers || {})
      }.compact
      unless request_options.nil? || request_options&.additional_query_parameters.nil?
        req.params = { **(request_options&.additional_query_parameters || {}) }.compact
      end
      req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
      req.url "#{@request_client.get_url(request_options: request_options)}/users/#{id}"
    end
    TrophyApiClient::User.from_json(json_object: response.body)
  end
end