lws 6.1.0.beta3 → 6.1.0.beta4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7ce4acf9c7e03325ea30484df6033d9629e5b529
4
- data.tar.gz: f389cb4a66d55a2ac983009e14b8ae78e8f5429e
3
+ metadata.gz: 5b58d4f19b39cd31f8eb39c19252248889bbcdc1
4
+ data.tar.gz: fe5430ca9566e47fce0585eb7dc5e9f3e06d1406
5
5
  SHA512:
6
- metadata.gz: cda7314094b11b9f564c360ab04f358f5fad616004d81159caabdf072421d472053240523068d4c1c8692be1d108121807d343197d61acec0fdfc25bea9f7bfb
7
- data.tar.gz: fda0ae24f5cd2383bcddda99555321a68d118e6bee0cc19694ee96ec6dafe28175f6032299e9e3b1680c7f28b2c2dd1c4d528c868df57327deddf7ff268212da
6
+ metadata.gz: a9b8964fe328533bd15bcc54aaa2e9f44239bafd204f00b56fbfc9e8ecc0050fecf14a1d6c4363f432d06074267e80689f4f40465ffa5be8ffdd8040a355cc39
7
+ data.tar.gz: 4f8664f672916043a6aac86cb7175f7e001c4df14537e0b2c345bd6f03306610184519afe7dc5ab5ca4f309eee8aca62c3f6a55b068f6c465e46b9063fde0009
data/bin/lwsconsole CHANGED
@@ -2,23 +2,59 @@
2
2
  #
3
3
  # lwsconsole - A command-line tool to access the LWS web services
4
4
  #
5
- # Usage: lwsconsole <LWS API token> [<app>:<endpoint> ...]
5
+ # Usage: lwsconsole [<option>...] [<app>:<endpoint>...]
6
6
 
7
7
  require "logger"
8
8
  require "lws"
9
+ require "optparse"
9
10
  require "pp"
10
11
  require "pry"
11
12
 
12
13
  # Parse the command-line arguments
13
- if ARGV.length < 1
14
- puts "Usage: #{$0} <LWS API token> [<app>:<endpoint> ...]"
15
- exit 1
14
+ PROG_NAME = File.basename($0)
15
+ @options = {}
16
+ opt_parser = OptionParser.new do |opts|
17
+ opts.banner = <<EOB
18
+ Usage: #{PROG_NAME} [OPTION]... [APP]:[ENDPOINT]...
19
+ A command-line tool to access the LWS web services.
20
+
21
+ EOB
22
+
23
+ opts.separator("Optional arguments:")
24
+ opts.on("-a", "--app=APP-NAME", "switch to a specific app") do |app|
25
+ @options[:app] = app
26
+ end
27
+ opts.on("-d", "--[no-]debug", "show HTTP and JSON debug information") do |debug|
28
+ @options[:debug] = debug
29
+ end
30
+ opts.on("-e", "--environment=ENV", "select the LWS environment (default: production)") do |env|
31
+ @options[:environment] = env.to_sym
32
+ end
33
+ opts.on("-t", "--token=TOKEN", "the LWS API token necessary to gain access") do |token|
34
+ @options[:token] = token
35
+ end
36
+ opts.on("--help", "display this help and exit") do
37
+ puts opts
38
+ exit
39
+ end
40
+ opts.on("--version", "display the LWS library version and exit") do
41
+ puts LWS::VERSION
42
+ exit
43
+ end
44
+ end
45
+
46
+ begin
47
+ opt_parser.parse!
48
+ rescue OptionParser::ParseError => e
49
+ puts "#{PROG_NAME}: #{e}"
50
+ puts opt_parser
51
+ exit 2
16
52
  end
17
- api_token = ARGV.shift
18
- endpoints = {}
53
+
54
+ @endpoints = {}
19
55
  ARGV.each do |app_endpoint|
20
56
  app,endpoint = app_endpoint.split(':', 2)
21
- endpoints[app.to_sym] = endpoint
57
+ @endpoints[app.to_sym] = endpoint
22
58
  end
23
59
 
24
60
  # Set up the logger
@@ -32,12 +68,22 @@ logger.formatter =
32
68
  end
33
69
 
34
70
  # Set up the API
35
- LWS.setup do |config|
36
- config.api_token = api_token
37
- config.endpoints = endpoints
38
- config.http_debug = true
39
- config.json_debug = true
40
- config.logger = logger
71
+ begin
72
+ LWS.setup do |config|
73
+ config.api_token = @options[:token] if @options[:token]
74
+ config.environment = @options[:environment] if @options[:environment]
75
+ config.endpoints = @endpoints
76
+ config.http_debug = @options[:debug]
77
+ config.json_debug = @options[:debug]
78
+ config.logger = logger
79
+ end
80
+ if @options[:app]
81
+ @app_module = LWS.app_module(@options[:app].downcase)
82
+ puts "#{PROG_NAME}: Cannot find app `#{@options[:app]}', ignoring it!" unless @app_module
83
+ end
84
+ rescue => e
85
+ puts "#{PROG_NAME}: Problem during LWS setup: #{e}"
86
+ exit 3
41
87
  end
42
88
 
43
89
  ### Extra commands/methods
@@ -68,5 +114,5 @@ def reload!
68
114
  LWS.load_app_modules
69
115
  end
70
116
 
71
- # Use the LWS module as the default namespace
72
- LWS.pry
117
+ # Use the LWS module or the selected app module as the default namespace
118
+ (@app_module || LWS).pry
data/lib/lws/config.rb ADDED
@@ -0,0 +1,69 @@
1
+ #
2
+ # Copyright © 2016 LeftClick B.V.
3
+ #
4
+ # This software is property of LeftClick B.V. and cannot be redistributed
5
+ # and/or modified without permission. The software or any of its parts
6
+ # cannot be used for any other purposes than the LeftClick services and
7
+ # only during a valid license subscription. For more information, please
8
+ # contact LeftClick B.V. at: Geldropseweg 8B, 5731 SG Mierlo, The
9
+ # Netherlands, info@leftclick.eu, +31492-782120.
10
+
11
+
12
+ module LWS
13
+
14
+ # = The LWS API configuration class
15
+ #
16
+ # This class represents the configuration that is used for connecting to
17
+ # LWS.
18
+ #
19
+ # @note Either the API token or API token middleware needs to be
20
+ # configured for the library to work properly!
21
+ class Config < Hashie::Dash
22
+ #@!attribute api_token
23
+ # @return [String, nil] the API token necessary to gain access
24
+ property :api_token
25
+
26
+ #@!attribute api_token_middleware
27
+ # @return [Faraday::Middleware, nil] the API token middleware that
28
+ # provides the API token to the request at runtime
29
+ property :api_token_middleware
30
+
31
+ #@!attribute caching_object
32
+ # @return [#read, #write] an object that can cache request results
33
+ property :caching_object, default: nil
34
+
35
+ #@!attribute endpoints
36
+ # @return [Hash{Symbol=>String}] a mapping of application endpoint
37
+ # overrides (default: +{}+)
38
+ property :endpoints, default: {}
39
+
40
+ #@!attribute environment
41
+ # @return [Symbol] the (default) API environment
42
+ # (default: +:production+)
43
+ property :environment, default: :production
44
+
45
+ #@!attribute http_debug
46
+ # @return [Boolean] whether to show HTTP debug messages (default: +false+)
47
+ property :http_debug, default: false
48
+
49
+ #@!attribute http_debug_headers
50
+ # @return [Boolean] whether to show HTTP headers in the debug messages
51
+ # (default: +false+)
52
+ property :http_debug_headers, default: false
53
+
54
+ #@!attribute json_debug
55
+ # @return [Boolean] whether to show JSON debug messages (default: +false+)
56
+ property :json_debug, default: false
57
+
58
+ #@!attribute logger
59
+ # @return [#fatal, #error, #warn, #info, #debug] the logger object
60
+ # (Rails logger, Logger, etc.)
61
+ property :logger
62
+
63
+ #@!attribute stubbing
64
+ # @return [String] the path to a directory with stubbing fixtures
65
+ # (setting this enables the default stubs)
66
+ property :stubbing
67
+ end
68
+
69
+ end
@@ -9,6 +9,15 @@
9
9
  # Netherlands, info@leftclick.eu, +31492-782120.
10
10
 
11
11
 
12
+ module LWS
13
+
14
+ # @private
15
+ # @!visibility private
16
+ module Middleware
17
+ end
18
+
19
+ end
20
+
12
21
  require "lws/middleware/http_logger"
13
22
  require "lws/middleware/json_logger"
14
23
  require "lws/middleware/json_parser"
data/lib/lws/stubbing.rb CHANGED
@@ -11,19 +11,23 @@
11
11
 
12
12
  module LWS
13
13
 
14
- # = Class that regulates request stubbing based on a tree of fixtures
14
+ # = The LWS API stubbing class
15
15
  #
16
- # Stubbing is enabled when a path is provided to a tree of fixture objects.
17
- # These fixture files should have the form:
16
+ # This class regulates request stubbing based on a tree of fixtures.
17
+ # It can be used for testing an application that uses this library.
18
18
  #
19
- # app_name:
20
- # /model/1:
21
- # default:
22
- # id: 1
23
- # attr: value
24
- # test:
25
- # id: 1
26
- # attr: other_value
19
+ #
20
+ # These fixtures are defined in files that should have the following
21
+ # form:
22
+ #
23
+ # app_name:
24
+ # /model/1:
25
+ # default:
26
+ # id: 1
27
+ # attr: value
28
+ # test:
29
+ # id: 1
30
+ # attr: other_value
27
31
  #
28
32
  # When initialized, for all apps, for all paths, the default stub is
29
33
  # loaded if it exists.
@@ -72,6 +76,7 @@ module LWS
72
76
  # Disables all request stubbing.
73
77
  #
74
78
  # This should be used when the stubbing is not used anymore.
79
+ # @return [void]
75
80
  def disable!
76
81
  WebMock.disable!
77
82
  end
@@ -82,13 +87,14 @@ module LWS
82
87
  # @note For the HTTP method +:delete+, the response status is set to 204.
83
88
  #
84
89
  # @param method [Symbol] the HTTP method (+:get+, +:put+, etc.)
85
- # @param app_name [Symbol] the app name (see {::SUPPORTED_APPS})
90
+ # @param app_name [Symbol] the app name (see {LWS::SUPPORTED_APPS})
86
91
  # @param path [String] the path part of the request URI
87
92
  # @param fixture_name [Symbol, nil] the name of the fixture to use as stub
88
93
  # response body (or +nil+ for an empty fixture)
89
94
  # @param http_status [Fixnum] the HTTP status code to use
90
95
  # @raise if the fixture name could not be found for the given app name
91
96
  # and path
97
+ # @return [void]
92
98
  def replace(method, app_name, path, fixture_name = :default, http_status = 200)
93
99
  fixture = if fixture_name
94
100
  @fixtures.dig(app_name.to_s, path, fixture_name.to_s)
@@ -123,6 +129,7 @@ module LWS
123
129
  # @param path [String] the path part of the request URI
124
130
  # @raise if there is not request stub for the given HTTP method,
125
131
  # app name and path
132
+ # @return [void]
126
133
  def remove(method, app_name, path)
127
134
  request_stub = @stubs.delete([method, app_name, path])
128
135
  raise "no such request stub" unless request_stub
data/lib/lws/version.rb CHANGED
@@ -13,6 +13,6 @@ module LWS
13
13
 
14
14
  # The LWS library version.
15
15
  # @note The major and minor version parts match the LWS API version!
16
- VERSION = '6.1.0.beta3'
16
+ VERSION = '6.1.0.beta4'
17
17
 
18
18
  end
data/lib/lws.rb CHANGED
@@ -16,6 +16,7 @@ require "spyke"
16
16
  require "pp"
17
17
  require "webmock"
18
18
 
19
+ require "lws/config"
19
20
  require "lws/middleware"
20
21
  require "lws/stubbing"
21
22
  require "lws/version"
@@ -43,56 +44,6 @@ module LWS
43
44
  # @return [Stubbing] the stubbing setup for the web service
44
45
  mattr_reader :stubbing
45
46
 
46
- # = The API configuration class
47
- #
48
- # @note Either the API token or API token middleware needs to be
49
- # configured for LWS to work properly!
50
- class Config < Hashie::Dash
51
- #@!attribute api_token
52
- # @return [String, nil] the API token necessary to gain access
53
- property :api_token
54
-
55
- #@!attribute api_token_middleware
56
- # @return [Faraday::Middleware, nil] the API token middleware that
57
- # provides the API token to the request at runtime
58
- property :api_token_middleware
59
-
60
- #@!attribute caching_object
61
- # @return [#read, #write] an object that can cache request results
62
- property :caching_object, default: nil
63
-
64
- #@!attribute endpoints
65
- # @return [Hash{Symbol=>String}] a mapping of application endpoint
66
- # overrides
67
- property :endpoints, default: {}
68
-
69
- #@!attribute environment
70
- # @return [Symbol] the (default) API environment
71
- property :environment, default: :production
72
-
73
- #@!attribute http_debug
74
- # @return [Boolean] whether to show HTTP debug messages
75
- property :http_debug, default: false
76
-
77
- #@!attribute http_debug_headers
78
- # @return [Boolean] whether to show HTTP headers in the debug messages
79
- property :http_debug_headers, default: false
80
-
81
- #@!attribute json_debug
82
- # @return [Boolean] whether to show JSON debug messages
83
- property :json_debug, default: false
84
-
85
- #@!attribute logger
86
- # @return [#fatal, #error, #warn, #info, #debug] the logger object
87
- # (Rails logger, Logger, etc.)
88
- property :logger
89
-
90
- #@!attribute stubbing
91
- # @return [String] the path to a directory with stubbing fixtures
92
- # (setting this enables the default stubs)
93
- property :stubbing
94
- end
95
-
96
47
  # Sets up the application API libraries using the provided
97
48
  # configuration (see {Config}).
98
49
  #
@@ -104,9 +55,9 @@ module LWS
104
55
  # config.logger = Rails.logger
105
56
  # end
106
57
  #
107
- # A default value for the API token can be set using the
108
- # +LC_LWS_API_TOKEN+ environment variable. The default environment can
109
- # be overriden using the +LC_LWS_ENV+ environment variable.
58
+ # The API token can be overridden using the +LC_LWS_API_TOKEN+
59
+ # environment variable. The LWS environment can be overriden using the
60
+ # +LC_LWS_ENV+ environment variable.
110
61
  #
111
62
  # @yieldparam [Config] config an API configuration object that can be
112
63
  # configured
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lws
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.0.beta3
4
+ version: 6.1.0.beta4
5
5
  platform: ruby
6
6
  authors:
7
7
  - LeftClick B.V.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-03 00:00:00.000000000 Z
11
+ date: 2018-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday_middleware
@@ -243,6 +243,7 @@ files:
243
243
  - lib/lws/apps/maps.rb
244
244
  - lib/lws/apps/presence.rb
245
245
  - lib/lws/apps/ticket.rb
246
+ - lib/lws/config.rb
246
247
  - lib/lws/middleware.rb
247
248
  - lib/lws/middleware/http_logger.rb
248
249
  - lib/lws/middleware/json_logger.rb