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 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.endpoints = endpoints
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
- puts ">>> #{env[:method].upcase} #{env[:url].to_s}"
30
+ @logger.debug ">>> #{env[:method].upcase} #{env[:url].to_s}"
25
31
  env[:request_headers].each do |hdr, val|
26
- puts " #{hdr}: #{val}"
32
+ @logger.debug " #{hdr}: #{val}"
27
33
  end
28
- puts ">>> #{env[:body] || "nil"}"
34
+ @logger.debug ">>> #{env[:body] || "nil"}"
29
35
  super
30
36
  end
31
37
 
32
38
  def on_complete(env)
33
39
  super
34
- puts "<<< HTTP #{env[:status].to_s}"
40
+ @logger.debug "<<< HTTP #{env[:status].to_s}"
35
41
  env[:response_headers].each do |hdr, val|
36
- puts " #{hdr}: #{val}"
42
+ @logger.debug " #{hdr}: #{val}"
37
43
  end
38
- puts "<<< #{env[:body] || "nil"}"
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| puts "||| #{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 HTTP debugging
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
@@ -2,6 +2,6 @@ module LWS
2
2
 
3
3
  # The LWS library version.
4
4
  # @note This is not the API version!
5
- VERSION = '0.1.7.1'
5
+ VERSION = '0.2.0'
6
6
 
7
7
  end
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
@@ -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.1.7.1
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-27 00:00:00.000000000 Z
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: &10637080 !ruby/object:Gem::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: *10637080
27
+ version_requirements: *6049580
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: hashie
30
- requirement: &10636140 !ruby/object:Gem::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: *10636140
38
+ version_requirements: *6048680
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: her
41
- requirement: &10635460 !ruby/object:Gem::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: *10635460
49
+ version_requirements: *6047960
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: hashie
52
- requirement: &10634860 !ruby/object:Gem::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: *10634860
60
+ version_requirements: *6047360
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: her
63
- requirement: &10634140 !ruby/object:Gem::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: *10634140
71
+ version_requirements: *6046660
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: minitest
74
- requirement: &10633560 !ruby/object:Gem::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: *10633560
82
+ version_requirements: *6046080
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake
85
- requirement: &10649340 !ruby/object:Gem::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: *10649340
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: