Class: Alula::RpcResource
- Inherits:
-
Object
- Object
- Alula::RpcResource
- Defined in:
- lib/alula/rpc_resource.rb
Direct Known Subclasses
DealerDeviceStatsProc, DealerRestoreProc, DealerSuspendProc, DeviceAssignProc, DeviceCellularHistoryProc, DeviceProgramsRenewProc, DeviceRatePlanGetProc, DeviceRegisterProc, DeviceSignalAddProc, DeviceSignalDeliveredProc, DeviceSignalUpdateProc, DeviceUnassignProc, DeviceUnregisterProc, FeaturePlanCloneProc, UploadTouchpadBrandingProc, UserGetLockedProc, UserPasswordResetProc, UserPlansVideoPriceGetProc, UserTransferAccept, UserTransferAuthorize, UserTransferCancel, UserTransferDeny, UserTransferReject, UserTransferRequest, UserUnlockProc, VideoUnregisterProc
Class Method Summary collapse
-
.ok?(response) ⇒ Boolean
RPC endpoints tend to return a 200 OK even if the response failed.
- .request(http_method:, path:, payload:, handler:, wrap: true, opts: {}) ⇒ Object
- .wrap_payload(payload) ⇒ Object
Class Method Details
.ok?(response) ⇒ Boolean
RPC endpoints tend to return a 200 OK even if the response failed. Examine the response body to determine if there was an error.
25 26 27 28 29 30 |
# File 'lib/alula/rpc_resource.rb', line 25 def self.ok?(response) error = response.data['error'] && !response.data['error'].empty? errors = response.data['errors'] && !response.data['errors'].empty? !(error || errors) end |
.request(http_method:, path:, payload:, handler:, wrap: true, opts: {}) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/alula/rpc_resource.rb', line 3 def self.request(http_method:, path:, payload:, handler:, wrap: true, opts: {}) response = Alula::Client.request(http_method, path, wrap ? wrap_payload(payload) : payload, opts) unless response.ok? && ok?(response) error = Alula::AlulaError.for_response(response) # # Some error classifications are critical and should be raised for visibility # These errors do not contain meaningful data that an end-user can use to correct # the error. raise error if [Alula::RateLimitError, Alula::BadRequestError, Alula::ForbiddenError, Alula::UnknownError, Alula::InsufficientScopeError].include?(error.class) return error end handler.new(response) end |
.wrap_payload(payload) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/alula/rpc_resource.rb', line 32 def self.wrap_payload(payload) { id: SecureRandom.uuid, jsonrpc: '2.0', params: payload } end |