Class: MemoriClient::Resource
- Inherits:
-
Object
- Object
- MemoriClient::Resource
- Defined in:
- lib/memori_client/resource.rb
Instance Attribute Summary collapse
-
#operations ⇒ Object
readonly
Returns the value of attribute operations.
Instance Method Summary collapse
-
#initialize(key, api_root:, version:) ⇒ Resource
constructor
A new instance of Resource.
- #markdown_documentation ⇒ Object
- #method_missing(method, *args, &block) ⇒ Object
- #register_operation(item) ⇒ Object
Constructor Details
#initialize(key, api_root:, version:) ⇒ Resource
Returns a new instance of Resource.
4 5 6 7 8 9 |
# File 'lib/memori_client/resource.rb', line 4 def initialize(key, api_root:, version:) @key = key @api_root = api_root @version = version @operations = {} end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/memori_client/resource.rb', line 24 def method_missing(method, *args, &block) if @operations.key?(method.to_s) invoke_endpoint(method, *args, &block) elsif method.to_s.end_with?('_documentation') documentation = @operations[method.to_s.chomp('_documentation')] # Add the request body schema to the documentation schema_ref = documentation[:spec]['requestBody']['content']['application/json']['schema']['$ref'] key = schema_ref.split('/').last schema = Swagger::SchemaStore.instance.get(key) documentation[:request_body_schema] = schema documentation else super end end |
Instance Attribute Details
#operations ⇒ Object (readonly)
Returns the value of attribute operations.
2 3 4 |
# File 'lib/memori_client/resource.rb', line 2 def operations @operations end |
Instance Method Details
#markdown_documentation ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/memori_client/resource.rb', line 16 def markdown_documentation <<~MARKDOWN # #{@version}.#{@key.downcase} #{@operations.map { |key, operation| operation.markdown_documentation }.join("\n")} MARKDOWN end |
#register_operation(item) ⇒ Object
11 12 13 14 |
# File 'lib/memori_client/resource.rb', line 11 def register_operation(item) method_name = item[:method_name] @operations[method_name] ||= MemoriClient::Operation.new(item, version: @version, key: @key) end |