Sha256: 89dcfe6d68a39a811bc7bc15ceafbd8d55a234b4d149884bb4df386760376514

Contents?: true

Size: 1.14 KB

Versions: 16

Compression:

Stored size: 1.14 KB

Contents

class Jets::Router
  class State
    extend Memoist
    include Jets::AwsServices

    def load(filename)
      resp = s3.get_object(
        bucket: Jets.aws.s3_bucket,
        key: s3_storage_path(filename),
      )
      text = resp.body.read
      JSON.load(text)
    rescue
    end
    memoize :load

    # Save previously deployed APIGW routes state
    def save(filename, data)
      # body = Jets::Router.routes.to_json
      # body = JSON.generate(Jets::Cfn::Builders::PageBuilder.pages)
      body = data.respond_to?(:to_json) ? data.to_json : JSON.generate(data)
      s3.put_object(
        body: body,
        bucket: Jets.aws.s3_bucket,
        key: s3_storage_path(filename),
      )
    end

    # Examples:
    #
    #   jets/state/apigw/pages.json
    #   jets/state/apigw/routes.json
    #
    # Fetch or loaded in:
    #
    #   pages.json: Jets::Cfn::Builders::PageBuilder#old_pages
    #   routes.json: Jets::Resource::ApiGateway::RestApi::Routes::Change::Base#deployed_routes
    #
    # Saved in:
    #
    #   Jets::Cfn::Ship#save_apigw_state
    #
    def s3_storage_path(filename)
      "jets/state/apigw/#{filename}.json"
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
jets-4.0.12 lib/jets/router/state.rb
jets-4.0.11 lib/jets/router/state.rb
jets-4.0.10 lib/jets/router/state.rb
jets-4.0.9 lib/jets/router/state.rb
jets-4.0.8 lib/jets/router/state.rb
jets-4.0.7 lib/jets/router/state.rb
jets-4.0.6 lib/jets/router/state.rb
jets-4.0.5 lib/jets/router/state.rb
jets-4.0.4 lib/jets/router/state.rb
jets-4.0.3 lib/jets/router/state.rb
jets-4.0.2 lib/jets/router/state.rb
jets-4.0.1 lib/jets/router/state.rb
jets-4.0.0 lib/jets/router/state.rb
jets-3.2.2 lib/jets/router/state.rb
jets-3.2.1 lib/jets/router/state.rb
jets-3.2.0 lib/jets/router/state.rb