Class: Booqable::ResourceParser
- Inherits:
-
Object
- Object
- Booqable::ResourceParser
- Defined in:
- lib/booqable/resource_parser.rb
Overview
Parses JSON:API payloads into Sawyer::Resource objects
JSON:API formatted data (from webhooks or API responses) is converted into Ruby objects with dot-notation access for convenient attribute access.
Class Method Summary collapse
-
.parse(payload) ⇒ Sawyer::Resource?
Parse a JSON:API payload into a Sawyer::Resource.
Instance Method Summary collapse
-
#initialize(payload) ⇒ ResourceParser
constructor
Initialize a new ResourceParser.
-
#parse ⇒ Sawyer::Resource?
Parse the payload into a Sawyer::Resource.
Constructor Details
#initialize(payload) ⇒ ResourceParser
Initialize a new ResourceParser
45 46 47 |
# File 'lib/booqable/resource_parser.rb', line 45 def initialize(payload) @payload = payload end |
Class Method Details
.parse(payload) ⇒ Sawyer::Resource?
Parse a JSON:API payload into a Sawyer::Resource
38 39 40 |
# File 'lib/booqable/resource_parser.rb', line 38 def self.parse(payload) new(payload).parse end |
Instance Method Details
#parse ⇒ Sawyer::Resource?
Parse the payload into a Sawyer::Resource
52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/booqable/resource_parser.rb', line 52 def parse return nil if @payload.nil? json_string = @payload.is_a?(String) ? @payload : @payload.to_json return nil if json_string.strip.empty? serializer = JsonApiSerializer.any_json decoded = serializer.decode(json_string) return nil unless decoded && decoded[:data] Sawyer::Resource.new(sawyer_agent, decoded[:data]) end |