lws 0.1.7.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: