goserv-util 0.0.1.alpha.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.
- checksums.yaml +7 -0
- data/lib/goserv-util/log.rb +46 -0
- data/lib/goserv-util/request.rb +53 -0
- data/lib/goserv-util/version.rb +4 -0
- data/lib/goserv-util.rb +3 -0
- metadata +104 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f9d8745d2f69a42de6f5af6f703e6e67d6c1b2b9
|
4
|
+
data.tar.gz: e3930c8781fb7fc047f72e7214b88082e33cd240
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1468b184eb79dff37345eaed160659dff9ce6af83bb0146f921e98e0891e8cb555baa4460593a2908adf3ff9ea0faa7ea77aea57ae665eb7f92d900c348e4fed
|
7
|
+
data.tar.gz: a511b0b0d01ef873afbfa193221675239cf2b0884280c714e3db0fa1ddec661ad044488491c1c3b5dd3e700f6cebd2cc3855d03b311d357d7fd85e14ac384471
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# Logging made intuitive.
|
2
|
+
module GoUtil
|
3
|
+
module Log
|
4
|
+
class << self
|
5
|
+
attr_reader :log
|
6
|
+
|
7
|
+
def init(path, prefix)
|
8
|
+
log_file = File.join(path, "#{prefix}.log")
|
9
|
+
@log = Logger.new(log_file, 'daily')
|
10
|
+
end
|
11
|
+
|
12
|
+
def included(base)
|
13
|
+
def base.log
|
14
|
+
Log.log
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def begin_request(request)
|
19
|
+
log.info '*************'
|
20
|
+
log.info 'REQUEST BEGIN'
|
21
|
+
log.info "IP: #{request.ip}"
|
22
|
+
log.info "Request Method: #{request.request_method}"
|
23
|
+
log.info "Request URL: #{request.url}"
|
24
|
+
log.info '*************'
|
25
|
+
end
|
26
|
+
|
27
|
+
def request_error(err, err_status)
|
28
|
+
lines = %W(
|
29
|
+
**************
|
30
|
+
REQUEST FAILED
|
31
|
+
status: #{err_status}
|
32
|
+
#{err.message}
|
33
|
+
)
|
34
|
+
bt = err.backtrace.first([10, err.backtrace.length].min)
|
35
|
+
lines.concat(bt).each do |line|
|
36
|
+
log.error(line)
|
37
|
+
end
|
38
|
+
log.error '**************'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def log
|
43
|
+
Log.log
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'json-schema'
|
2
|
+
require_relative 'log'
|
3
|
+
|
4
|
+
module GoUtil
|
5
|
+
module Request
|
6
|
+
# Error for schema validation problems.
|
7
|
+
class SchemaValidationError < StandardError
|
8
|
+
end
|
9
|
+
|
10
|
+
# provides prehandling methods.
|
11
|
+
module Prehandler
|
12
|
+
class << self
|
13
|
+
@schema = nil
|
14
|
+
@auth_handler = nil
|
15
|
+
@has_json_body = false
|
16
|
+
|
17
|
+
def included(base)
|
18
|
+
def base.has_json_body
|
19
|
+
@has_json_body = true
|
20
|
+
end
|
21
|
+
|
22
|
+
class << base
|
23
|
+
attr_accessor :schema
|
24
|
+
end
|
25
|
+
|
26
|
+
def base.prehandle(request)
|
27
|
+
Log.log.info 'PREHANDLING...'
|
28
|
+
authenticate(request.env['goserv-token'])
|
29
|
+
body = request.body.read.to_s
|
30
|
+
@has_json_body ? prehandle_json(body) : nil
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def base.authenticate(auth_details)
|
36
|
+
@auth_handler.check(auth_details) unless @auth_handler.nil?
|
37
|
+
end
|
38
|
+
|
39
|
+
def base.prehandle_json(body)
|
40
|
+
json = JSON.parse(body, symbolize_names: true)
|
41
|
+
|
42
|
+
unless @schema.nil?
|
43
|
+
errs = JSON::Validator.fully_validate(@schema, json)
|
44
|
+
raise(SchemaValidationError, errs) unless errs.empty?
|
45
|
+
end
|
46
|
+
|
47
|
+
json
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/goserv-util.rb
ADDED
metadata
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: goserv-util
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1.alpha.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ben C Lewis
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-04-01 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '10.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '10.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.11'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.11'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: json-schema
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.0'
|
69
|
+
description: Common patterns between services implemented here.
|
70
|
+
email:
|
71
|
+
- benjamin.connah.lewis@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- lib/goserv-util.rb
|
77
|
+
- lib/goserv-util/log.rb
|
78
|
+
- lib/goserv-util/request.rb
|
79
|
+
- lib/goserv-util/version.rb
|
80
|
+
homepage: https://github.com/goserv/user
|
81
|
+
licenses:
|
82
|
+
- MIT
|
83
|
+
metadata: {}
|
84
|
+
post_install_message:
|
85
|
+
rdoc_options: []
|
86
|
+
require_paths:
|
87
|
+
- lib
|
88
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: 1.3.1
|
98
|
+
requirements: []
|
99
|
+
rubyforge_project:
|
100
|
+
rubygems_version: 2.5.1
|
101
|
+
signing_key:
|
102
|
+
specification_version: 4
|
103
|
+
summary: Utility functionality for goserv
|
104
|
+
test_files: []
|