lws 0.1.7.1 → 0.2.0
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.
- data/bin/lwsconsole +12 -1
- data/lib/lws.rb +28 -10
- data/lib/lws/version.rb +1 -1
- data/test/test_helper.rb +2 -0
- data/test/test_logger.rb +23 -0
- metadata +18 -16
data/bin/lwsconsole
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
# Usage: lwsconsole <LWS API token> [<app>:<endpoint> ...]
|
6
6
|
|
7
7
|
require "irb"
|
8
|
+
require "logger"
|
8
9
|
require "lws"
|
9
10
|
require "pp"
|
10
11
|
|
@@ -46,12 +47,22 @@ ARGV.each do |app_endpoint|
|
|
46
47
|
endpoints[app.to_sym] = endpoint
|
47
48
|
end
|
48
49
|
|
50
|
+
# Set up the logger
|
51
|
+
logger = Logger.new($stdout)
|
52
|
+
logger.level = Logger::DEBUG
|
53
|
+
logger.progname = "LWSConsole"
|
54
|
+
logger.formatter = proc do |sev, datetime, progname, msg|
|
55
|
+
dt_fmt = logger.datetime_format || "%F %X"
|
56
|
+
"#{datetime.strftime(dt_fmt)} #{progname}(#$$) [#{sev}]: #{msg}\n"
|
57
|
+
end
|
58
|
+
|
49
59
|
# Set up the API
|
50
60
|
LWS.setup do |config|
|
51
61
|
config.api_token = api_token
|
62
|
+
config.endpoints = endpoints
|
52
63
|
config.http_debug = true
|
53
64
|
config.json_debug = true
|
54
|
-
config.
|
65
|
+
config.logger = logger
|
55
66
|
end
|
56
67
|
|
57
68
|
def reload!
|
data/lib/lws.rb
CHANGED
@@ -20,22 +20,28 @@ module LWS
|
|
20
20
|
# @!visibility private
|
21
21
|
class HTTPLogger < Faraday::Response::Middleware
|
22
22
|
|
23
|
+
def initialize(app, logger)
|
24
|
+
raise "cannot log HTTP requests without a logger" if logger.nil?
|
25
|
+
@logger = logger
|
26
|
+
super(app)
|
27
|
+
end
|
28
|
+
|
23
29
|
def call(env)
|
24
|
-
|
30
|
+
@logger.debug ">>> #{env[:method].upcase} #{env[:url].to_s}"
|
25
31
|
env[:request_headers].each do |hdr, val|
|
26
|
-
|
32
|
+
@logger.debug " #{hdr}: #{val}"
|
27
33
|
end
|
28
|
-
|
34
|
+
@logger.debug ">>> #{env[:body] || "nil"}"
|
29
35
|
super
|
30
36
|
end
|
31
37
|
|
32
38
|
def on_complete(env)
|
33
39
|
super
|
34
|
-
|
40
|
+
@logger.debug "<<< HTTP #{env[:status].to_s}"
|
35
41
|
env[:response_headers].each do |hdr, val|
|
36
|
-
|
42
|
+
@logger.debug " #{hdr}: #{val}"
|
37
43
|
end
|
38
|
-
|
44
|
+
@logger.debug "<<< #{env[:body] || "nil"}"
|
39
45
|
end
|
40
46
|
|
41
47
|
end
|
@@ -43,9 +49,15 @@ module LWS
|
|
43
49
|
# @!visibility private
|
44
50
|
class JSONLogger < Faraday::Response::Middleware
|
45
51
|
|
52
|
+
def initialize(app, logger)
|
53
|
+
raise "cannot log JSON data without a logger" if logger.nil?
|
54
|
+
@logger = logger
|
55
|
+
super(app)
|
56
|
+
end
|
57
|
+
|
46
58
|
def on_complete(env)
|
47
59
|
dump = MultiJson.dump(env[:body], pretty: true)
|
48
|
-
dump.split("\n").each { |line|
|
60
|
+
dump.split("\n").each { |line| @logger.debug "||| #{line}" }
|
49
61
|
end
|
50
62
|
|
51
63
|
end
|
@@ -100,6 +112,11 @@ module LWS
|
|
100
112
|
# @return [Boolean] whether to show HTTP debug messages
|
101
113
|
property :http_debug, default: false
|
102
114
|
|
115
|
+
#@!attribute logger
|
116
|
+
# @return [#fatal, #error, #warn, #info, #debug] the logger object
|
117
|
+
# (Rails logger, Logger, etc.)
|
118
|
+
property :logger
|
119
|
+
|
103
120
|
#@!attribute json_debug
|
104
121
|
# @return [Boolean] whether to show JSON debug messages
|
105
122
|
property :json_debug, default: false
|
@@ -108,11 +125,12 @@ module LWS
|
|
108
125
|
# Sets up the application API libraries using the provided
|
109
126
|
# configuration (see {Config}).
|
110
127
|
#
|
111
|
-
# @example Set up LWS with a token, an endpoint override and
|
128
|
+
# @example Set up LWS with a token, an endpoint override, HTTP debugging and the Rails logger
|
112
129
|
# LWS.setup do |config|
|
113
130
|
# config.api_token = "MY_TOKEN"
|
114
131
|
# config.endpoints = { maps: https://maps-dev.leftclick.eu }
|
115
132
|
# config.http_debug = true
|
133
|
+
# config.logger = Rails.logger
|
116
134
|
# end
|
117
135
|
#
|
118
136
|
# @yieldparam [Config] config an API configuration object that can be
|
@@ -150,10 +168,10 @@ module LWS
|
|
150
168
|
c.use Faraday::Request::UrlEncoded
|
151
169
|
|
152
170
|
# Response
|
153
|
-
c.use JSONLogger if config.json_debug
|
171
|
+
c.use JSONLogger, config.logger if config.json_debug
|
154
172
|
c.use Her::Middleware::DefaultParseJSON
|
155
173
|
c.use FaradayMiddleware::FollowRedirects, limit: 3
|
156
|
-
c.use HTTPLogger if config.http_debug
|
174
|
+
c.use HTTPLogger, config.logger if config.http_debug
|
157
175
|
|
158
176
|
# Adapter
|
159
177
|
c.use Faraday::Adapter::NetHttp
|
data/lib/lws/version.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require "logger"
|
1
2
|
require "lws"
|
2
3
|
require "minitest/autorun"
|
3
4
|
|
@@ -7,6 +8,7 @@ def reconfigure(options = {})
|
|
7
8
|
LWS.setup do |config|
|
8
9
|
config.api_token = ENV["LC_LWS_TEST_TOKEN"]
|
9
10
|
if ENV["LC_LWS_TEST_DEBUG"].present?
|
11
|
+
config.logger = Logger.new($stdout)
|
10
12
|
config.http_debug = true
|
11
13
|
config.json_debug = true
|
12
14
|
end
|
data/test/test_logger.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class TestLogger < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
def test_working_logger
|
6
|
+
log = StringIO.new
|
7
|
+
logger = Logger.new(log)
|
8
|
+
logger.level = Logger::DEBUG
|
9
|
+
|
10
|
+
# Configure the logger and enable HTTP request and JSON data debugging
|
11
|
+
reconfigure(logger: logger,
|
12
|
+
http_debug: true,
|
13
|
+
json_debug: true)
|
14
|
+
|
15
|
+
# Perform a query to have any log entries
|
16
|
+
LWS::Auth::Task.all.first
|
17
|
+
refute_nil(log.string)
|
18
|
+
|
19
|
+
# Restore the token
|
20
|
+
reconfigure
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-05
|
12
|
+
date: 2016-08-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday_middleware
|
16
|
-
requirement: &
|
16
|
+
requirement: &6049580 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -24,10 +24,10 @@ dependencies:
|
|
24
24
|
version: '1.0'
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
|
-
version_requirements: *
|
27
|
+
version_requirements: *6049580
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: hashie
|
30
|
-
requirement: &
|
30
|
+
requirement: &6048680 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
33
|
- - ! '>='
|
@@ -35,10 +35,10 @@ dependencies:
|
|
35
35
|
version: '0'
|
36
36
|
type: :runtime
|
37
37
|
prerelease: false
|
38
|
-
version_requirements: *
|
38
|
+
version_requirements: *6048680
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: her
|
41
|
-
requirement: &
|
41
|
+
requirement: &6047960 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
44
|
- - ~>
|
@@ -46,10 +46,10 @@ dependencies:
|
|
46
46
|
version: 0.8.1
|
47
47
|
type: :runtime
|
48
48
|
prerelease: false
|
49
|
-
version_requirements: *
|
49
|
+
version_requirements: *6047960
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
51
|
name: hashie
|
52
|
-
requirement: &
|
52
|
+
requirement: &6047360 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
54
54
|
requirements:
|
55
55
|
- - ! '>='
|
@@ -57,10 +57,10 @@ dependencies:
|
|
57
57
|
version: '0'
|
58
58
|
type: :development
|
59
59
|
prerelease: false
|
60
|
-
version_requirements: *
|
60
|
+
version_requirements: *6047360
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: her
|
63
|
-
requirement: &
|
63
|
+
requirement: &6046660 !ruby/object:Gem::Requirement
|
64
64
|
none: false
|
65
65
|
requirements:
|
66
66
|
- - ~>
|
@@ -68,10 +68,10 @@ dependencies:
|
|
68
68
|
version: 0.8.1
|
69
69
|
type: :development
|
70
70
|
prerelease: false
|
71
|
-
version_requirements: *
|
71
|
+
version_requirements: *6046660
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: minitest
|
74
|
-
requirement: &
|
74
|
+
requirement: &6046080 !ruby/object:Gem::Requirement
|
75
75
|
none: false
|
76
76
|
requirements:
|
77
77
|
- - ! '>='
|
@@ -79,10 +79,10 @@ dependencies:
|
|
79
79
|
version: '0'
|
80
80
|
type: :development
|
81
81
|
prerelease: false
|
82
|
-
version_requirements: *
|
82
|
+
version_requirements: *6046080
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rake
|
85
|
-
requirement: &
|
85
|
+
requirement: &6061840 !ruby/object:Gem::Requirement
|
86
86
|
none: false
|
87
87
|
requirements:
|
88
88
|
- - ~>
|
@@ -90,7 +90,7 @@ dependencies:
|
|
90
90
|
version: 0.9.2
|
91
91
|
type: :development
|
92
92
|
prerelease: false
|
93
|
-
version_requirements: *
|
93
|
+
version_requirements: *6061840
|
94
94
|
description: ! "This library for Ruby provides access to the LeftClick\n web services/applications
|
95
95
|
using a model-based structure that abstracts from API calls\n using the available
|
96
96
|
REST interfaces."
|
@@ -118,6 +118,7 @@ files:
|
|
118
118
|
- test/test_caching.rb
|
119
119
|
- test/test_generic.rb
|
120
120
|
- test/test_helper.rb
|
121
|
+
- test/test_logger.rb
|
121
122
|
- test/test_maps.rb
|
122
123
|
- test/test_presence.rb
|
123
124
|
homepage: https://leftclick.eu/
|
@@ -150,6 +151,7 @@ test_files:
|
|
150
151
|
- test/test_caching.rb
|
151
152
|
- test/test_generic.rb
|
152
153
|
- test/test_helper.rb
|
154
|
+
- test/test_logger.rb
|
153
155
|
- test/test_maps.rb
|
154
156
|
- test/test_presence.rb
|
155
157
|
has_rdoc:
|