axhub-sdk 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af207a4a3d83fa1b8f8fb7f66baa8a6f880877f0971ad6228ab65a9daede4e5e
4
- data.tar.gz: 478545d4c9b51589fd403141e578f38e2f1189b0dfce8361a4963daae52eea0b
3
+ metadata.gz: b05fc409d0332a6e77331fa9b8d893fde93d99b022b6209f9159faabf3d2d38e
4
+ data.tar.gz: a8fcbda4d4ec7be14156c3f70e605100e0d372f267826e77d7fe969f986661cf
5
5
  SHA512:
6
- metadata.gz: f503acb2c6d7b6daae9bac7d9311be9e5fa9e0e5cb51f089a2309be1c01cfa17803c52824d96b039158439c6c9d5c17d3b89789992804797c8599d3ebcb10b38
7
- data.tar.gz: 39cf39bda82f472d156b6c10a575b3e6c88881b9610e349eb61000949b55c23e9a311b9f564931d35ba3260d2016c984bed9039c5cc8fc7975789d27c277fd79
6
+ metadata.gz: 1b8e7c144ad7949bbb4eef4453e67f6786b21d5596e2a432aeef7455eee6f6d8424587a971ac1f930718684a1bf0cb1f6d14153b137042fe174dd97b4c1af5a9
7
+ data.tar.gz: 74b8bca75475ba90f5fb9aed68a1151633dab2a3981990abbd5cff81a41d979b0c79db912e3a63158851aa292b5a4135f2b3884986a821275a1a6b4cc2f7a86e
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AxHub
4
- VERSION = '0.7.0'
4
+ VERSION = '0.8.0'
5
5
  end
data/lib/axhub_sdk.rb CHANGED
@@ -355,6 +355,22 @@ module AxHub
355
355
  authPostOauthRevoke
356
356
  authPostOauthToken
357
357
  ].freeze
358
+ # Token-style OAuth responses keep RFC 6749/8628 standard keys in snake_case.
359
+ # Must match the python SDK's _OAUTH_RESPONSE_SNAKE_CASE_OPERATIONS / _OAUTH_RESPONSE_SNAKE_KEYS.
360
+ OAUTH_RESPONSE_SNAKE_CASE_OPERATIONS = %w[
361
+ authPostOauthDeviceAuthorization
362
+ authPostOauthToken
363
+ ].freeze
364
+ OAUTH_RESPONSE_SNAKE_KEYS = %w[
365
+ access_token token_type expires_in refresh_token id_token scope resource tenant
366
+ ].freeze
367
+ def self.camelize_oauth_response(value)
368
+ case value
369
+ when Hash then value.map { |k, v| [OAUTH_RESPONSE_SNAKE_KEYS.include?(k.to_s) ? k.to_s : camel(k), camelize_oauth_response(v)] }.to_h
370
+ when Array then value.map { |v| camelize_oauth_response(v) }
371
+ else value
372
+ end
373
+ end
358
374
  class Client
359
375
  attr_reader :base_url, :apps
360
376
  def initialize(base_url: DEFAULT_BASE_URL, token: nil, token_type: nil, default_tenant_id: nil, default_tenant_slug: nil, timeout_seconds: 30)
@@ -376,7 +392,7 @@ module AxHub
376
392
  req.body = JSON.generate(body)
377
393
  end
378
394
  end
379
- _send(req, uri, camelize: true)
395
+ _send(req, uri, camelize: OAUTH_RESPONSE_SNAKE_CASE_OPERATIONS.include?(operation_id) ? :oauth_snake : true)
380
396
  end
381
397
 
382
398
  private
@@ -414,7 +430,11 @@ module AxHub
414
430
  retryable = err.key?('retryable') ? !!err['retryable'] : !!info&.retryable
415
431
  raise Error.new(category: err['category'] || info&.category || 'unknown', code: err['code'] || "http_#{res.code}", message: err['message'], status: res.code.to_i, retryable: retryable, request_id: err['request_id'] || err['requestId'])
416
432
  end
417
- camelize ? AxHub.camelize(parsed) : parsed
433
+ case camelize
434
+ when :oauth_snake then AxHub.camelize_oauth_response(parsed)
435
+ when true then AxHub.camelize(parsed)
436
+ else parsed
437
+ end
418
438
  end
419
439
 
420
440
  def request_id
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: axhub-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jocoding AX Partners
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-01 00:00:00.000000000 Z
11
+ date: 2026-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest