Class: Flapjack::Gateways::JSONAPI

Inherits:
Sinatra::Base
  • Object
show all
Includes:
Helpers::SwaggerDocs, Utility, Swagger::Blocks
Defined in:
lib/flapjack/gateways/jsonapi.rb,
lib/flapjack/gateways/jsonapi/helpers/headers.rb,
lib/flapjack/gateways/jsonapi/methods/metrics.rb,
lib/flapjack/gateways/jsonapi/helpers/resources.rb,
lib/flapjack/gateways/jsonapi/helpers/serialiser.rb,
lib/flapjack/gateways/jsonapi/data/join_descriptor.rb,
lib/flapjack/gateways/jsonapi/helpers/swagger_docs.rb,
lib/flapjack/gateways/jsonapi/methods/resource_get.rb,
lib/flapjack/gateways/jsonapi/helpers/miscellaneous.rb,
lib/flapjack/gateways/jsonapi/methods/resource_post.rb,
lib/flapjack/gateways/jsonapi/data/method_descriptor.rb,
lib/flapjack/gateways/jsonapi/methods/resource_patch.rb,
lib/flapjack/gateways/jsonapi/methods/association_get.rb,
lib/flapjack/gateways/jsonapi/methods/resource_delete.rb,
lib/flapjack/gateways/jsonapi/methods/association_post.rb,
lib/flapjack/gateways/jsonapi/methods/association_patch.rb,
lib/flapjack/gateways/jsonapi/methods/association_delete.rb,
lib/flapjack/gateways/jsonapi/middleware/array_param_fixer.rb,
lib/flapjack/gateways/jsonapi/middleware/request_timestamp.rb,
lib/flapjack/gateways/jsonapi/middleware/json_params_parser.rb

Defined Under Namespace

Modules: Data, Helpers, Methods, Middleware

Constant Summary collapse

JSONAPI_MEDIA_TYPE =
'application/vnd.api+json'
JSONAPI_MEDIA_TYPE_BULK =
'application/vnd.api+json; ext=bulk'
RESOURCE_CLASSES =

# tools.ietf.org/html/rfc6902 JSON_PATCH_MEDIA_TYPE = ‘application/json-patch+json; charset=utf-8’

[
  Flapjack::Data::Acknowledgement,
  Flapjack::Data::Check,
  Flapjack::Data::Contact,
  Flapjack::Data::Medium,
  Flapjack::Data::Rule,
  Flapjack::Data::ScheduledMaintenance,
  Flapjack::Data::State,
  Flapjack::Data::Statistic,
  Flapjack::Data::Tag,
  Flapjack::Data::TestNotification,
  Flapjack::Data::UnscheduledMaintenance
]
SWAGGERED_CLASSES =
[self] + Flapjack::Gateways::JSONAPI::RESOURCE_CLASSES +
[Flapjack::Data::Metrics]
@@lock =
Monitor.new

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Utility

#hashify, #load_template, #local_timezone, #relative_time_ago, #remove_utc_offset, #stringify, #symbolize, #time_period_in_words, #truncate

Class Method Details

.media_type_produced(options = {}) ⇒ Object



104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/flapjack/gateways/jsonapi.rb', line 104

def media_type_produced(options = {})
  unless options[:with_charset].is_a?(TrueClass)
    return 'application/vnd.api+json; supported-ext=bulk'
  end

  media_type = nil
  @@lock.synchronize do
    encoding = Encoding.default_external
    media_type = if encoding.nil?
      'application/vnd.api+json; supported-ext=bulk'
    else
      "application/vnd.api+json; supported-ext=bulk; charset=#{encoding.name.downcase}"
    end
  end
  media_type
end

.startObject



90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/flapjack/gateways/jsonapi.rb', line 90

def start
  Flapjack.logger.info "starting jsonapi - class"

  if access_log = (@config && @config['access_log'])
    unless File.directory?(File.dirname(access_log))
      raise "Parent directory for log file #{access_log} doesn't exist"
    end

    @access_log = ::Logger.new(@config['access_log'])
    use Rack::CommonLogger, @access_log
  end

end

Instance Method Details

#configObject



122
123
124
# File 'lib/flapjack/gateways/jsonapi.rb', line 122

def config
  self.class.instance_variable_get("@config")
end

#media_type_produced(options = {}) ⇒ Object



126
127
128
# File 'lib/flapjack/gateways/jsonapi.rb', line 126

def media_type_produced(options = {})
  self.class.media_type_produced(options)
end