Module: Desiru::API

Defined in:
lib/desiru/api.rb,
lib/desiru/api/grape_integration.rb,
lib/desiru/api/sinatra_integration.rb,
lib/desiru/api/persistence_middleware.rb

Defined Under Namespace

Modules: PersistenceExtension Classes: GrapeIntegration, PersistenceMiddleware, SinatraIntegration

Class Method Summary collapse

Class Method Details

.create(framework: :grape, async_enabled: true, stream_enabled: false) ⇒ Object

Convenience method to create a new API integration

Parameters:

  • framework (Symbol) (defaults to: :grape)

    :grape or :sinatra (default: :grape)



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/desiru/api.rb', line 11

def self.create(framework: :grape, async_enabled: true, stream_enabled: false, &)
  klass = case framework
          when :grape
            GrapeIntegration
          when :sinatra
            SinatraIntegration
          else
            raise ArgumentError, "Unknown framework: #{framework}. Use :grape or :sinatra"
          end

  integration = klass.new(
    async_enabled: async_enabled,
    stream_enabled: stream_enabled
  )

  # Allow DSL-style configuration
  integration.instance_eval(&) if block_given?

  integration
end

.grape(async_enabled: true, stream_enabled: false) ⇒ Object

Convenience method to create a new Grape API (backward compatibility)



33
34
35
# File 'lib/desiru/api.rb', line 33

def self.grape(async_enabled: true, stream_enabled: false, &)
  create(framework: :grape, async_enabled: async_enabled, stream_enabled: stream_enabled, &)
end

.sinatra(async_enabled: true, stream_enabled: false) ⇒ Object

Convenience method to create a new Sinatra API



38
39
40
# File 'lib/desiru/api.rb', line 38

def self.sinatra(async_enabled: true, stream_enabled: false, &)
  create(framework: :sinatra, async_enabled: async_enabled, stream_enabled: stream_enabled, &)
end