culpa 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +8 -8
  2. data/lib/culpa.rb +17 -9
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDI0OTI3ODBhMjhjYjQxODMxODc3ZjJkOTVmM2M1ODhmZDJiZjQ2Mg==
4
+ MTYyMDA4YTVhMWM0MzE1YzJhYzI2OTI0Y2ZmMjkzYmU5YmYzNzk3NA==
5
5
  data.tar.gz: !binary |-
6
- OTEzOWU1ZjM3NGJkMDU4M2MwYjJiZDg4NzlhZDZmYzJmNDkyYzE0NA==
6
+ YjhmYTIxZTQzNTUzYzNmZjBiYTE2NjExZDEwMjk1NjkwOTUwYWM1OA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NGFkOTA3NzIyODFjODI3M2RjYTA2ODUxMTgyMzkwZDUwNGI2NWMyMjVhZTk1
10
- ZTJmOGMyODdlZjg1ODQ5YWI4YjBkMjRmZmJjMTRhN2Q2MjQyNTViMWU1YjM5
11
- MjgyYWNiZTA4MmIzZDBhMjBkYTE3MjEwNjhjYmQxNTFkYTJlNmU=
9
+ ODViMGZhZjAwMDJjOTU2ZGJkMDE5ZGUyMmUyMWIzZmI5YWEwNjFkODQzZjY3
10
+ YTBjNGZlMTQ2ODQ3M2UzY2U4ZjY0MjViMTU0Y2IzYzUzNGJmNzI0ZGE4ODA1
11
+ N2YzZmI5ZDJlOTE1YTY1ZGZiOGFhZTM5Mzg2NzA0ZWNkZGQ3MmI=
12
12
  data.tar.gz: !binary |-
13
- YjRlMGVmYjJiZjU1YmM1MDQ1Nzg1MmUxYjIzNjhjNThkMWRiYTZhYjE4MmQy
14
- ZjRkYWNjYjE0NGVkMTNkYmIzZGRjYzI0ZmM2YmRiZDU1OWVmMzc3NzJiZGY1
15
- OTY1NDRiMzE1MmJiZWFhMjAyZDNjOTY4MjEwNjU2YjQxMzUxY2I=
13
+ OTRhNjQ3ZjliZjRhNjYxNjMwNTliYmViZmZhZjRmYjkxODA0YmQ5NGM4Zjdl
14
+ NjgxZWI1ZjU5N2U3YmExNjE4M2ZlNGQ5MzFiYjQ3YjM3ZGM2NTMwOGFjZGJh
15
+ YzE3ZGYzMTI0NmQxZjJmYTU4MTRkYzI3OTA5YWFhZmM0NjQ3YzE=
data/lib/culpa.rb CHANGED
@@ -7,7 +7,7 @@ require 'envelope'
7
7
  require 'path_parser'
8
8
  require 'file_helpers'
9
9
 
10
- CULPA_VERSION='0.7.0'
10
+ CULPA_VERSION='0.7.1'
11
11
 
12
12
  ACTIONS_PATH ||= './actions/*.rb'
13
13
  MODELS_PATH ||= './models/*.rb'
@@ -40,15 +40,14 @@ module Culpa
40
40
 
41
41
  def initialize(options = {})
42
42
  @router = YAML.load_file(options[:router] || './config/router.yml')
43
- @logger = Logger.new(STDOUT)
43
+ @logger = Logger.new(options[:log_output] || STDOUT)
44
44
  @logger.level = ENV['RACK_ENV'] == 'development' ? Logger::DEBUG : Logger::WARN
45
- @logger.info 'Culpa initialized'
45
+ @logger.info 'Culpa fully initialized'
46
46
  end
47
47
 
48
48
  ##
49
49
  # Rack entrypoint
50
50
  def call(env)
51
- @logger.debug "Request received : #{env['PATH_INFO']}"
52
51
  call_options = {
53
52
  verb: env['REQUEST_METHOD'].downcase.to_sym,
54
53
  params: Rack::Utils.parse_nested_query(env['QUERY_STRING'])
@@ -56,9 +55,7 @@ module Culpa
56
55
  # Parse body if in JSON
57
56
  if env['CONTENT_TYPE'] == 'application/json'
58
57
  body = JSON.parse(env['rack.input'].read)
59
- if body.has_key? 'sub_call'
60
- call_options[:sub_call] = body['sub_call']
61
- end
58
+ call_options[:sub_call] = body['sub_call'] if body.has_key? 'sub_call'
62
59
  call_options[:input] = body['data']
63
60
  else
64
61
  call_options[:input] = env['rack.input']
@@ -92,12 +89,17 @@ module Culpa
92
89
  call_options[:id] = route_params[:id]
93
90
  call_options[:sub_call] = route_params[:sub_call]
94
91
  else
95
- @logger.debug "Refused request, #{env['PATH_INFO']} didn't match enforced routes"
92
+ @logger.info "Refused request, #{env['PATH_INFO']} didn't match enforced routes"
96
93
  return bad_request
97
94
  end
98
95
  # Call the brickchain and return the value to Rack
99
- @logger.debug "Calling brickchain => subcall: #{call_options[:sub_call]}, action: #{call_options[:res_name]}, id: #{call_options[:id]}"
96
+ @logger.info "Calling brickchain => subcall: #{call_options[:sub_call]}, action: #{call_options[:res_name]}, id: #{call_options[:id]}"
100
97
  call_brickchain call_options
98
+ rescue UnpredictableSubCallError, JSON::ParserError
99
+ bad_request
100
+ rescue StandardError => error
101
+ @logger.error "Error ecountered while treating request : #{error.message}, aborting...\n#{error.backtrace.join("\n")}"
102
+ internal_server_error
101
103
  end
102
104
 
103
105
  def call_brickchain(options)
@@ -163,6 +165,12 @@ module Culpa
163
165
  ['404', {'Content-Type' => 'application/json'}, []]
164
166
  end
165
167
 
168
+ ##
169
+ # Rack pre-formatted 404 : Not found
170
+ def internal_server_error
171
+ ['500', {'Content-Type' => 'application/json'}, []]
172
+ end
173
+
166
174
  end
167
175
 
168
176
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: culpa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jérémy SEBAN
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-01 00:00:00.000000000 Z
11
+ date: 2016-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack