nec_mock_server 0.1.3 → 0.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1e38889970e4f40ae0784f58887606ae485242d0
4
- data.tar.gz: 867b609df99b9cbf44826b31c96700b4efd83dec
3
+ metadata.gz: cd135ccba491319b1a06cbe454097ff713e20d15
4
+ data.tar.gz: da839dd085b505595df196bb61fcefb866e9fb5b
5
5
  SHA512:
6
- metadata.gz: e2273f26d4446264b71f90917691f280142f7db4bbf2b7f36f0d9df14e6ebc091ac362c93b4d355d9dc5e2d84f63ce44ecce4b763ef1e08bb9f5052c5331def8
7
- data.tar.gz: 7ba99dc529917411d2245eb4b6b0620da265380bc157918ab3dfbf2874f303a9ae6d7923fa3ff858d90349ed4f6bff5075ae0fcd59c48ba8c819ae5173daf081
6
+ metadata.gz: e462ebbf35f349aa242b0c83d03cdd396b8aa8a2276fce0272314fe76f77f389de6ec0a5b1df286d7ec71f6ec33deabd020c35b0f762249ba470b073e8235000
7
+ data.tar.gz: 3351be7e6f0401530b56531ae65075176021054396defe015362e74b91d624d3cea2f163eff1c1381075d3a3d206659f6b165f7d3ab439e8206ed79a659c9516
@@ -3,6 +3,7 @@ require 'rack/server'
3
3
  require 'json'
4
4
  require 'fileutils'
5
5
  require 'net/http'
6
+ require 'base64'
6
7
 
7
8
  module NEC
8
9
 
@@ -40,7 +40,8 @@ module NEC
40
40
  class Application
41
41
 
42
42
  MATCHERS = {
43
- base: /:\d+(\/(?<product>[\-\w]+)){0,1}(\/(?<tid>\w+)\-(?<awid>\w+)){0,1}(?<resource>(\/\w+)+)(\?(?<parameters>.*)){0,1}/
43
+ uaf: /:(?<port>\d+)(\/(?<product>[\-\w]+)){0,1}(\/(?<tid>\w+)\-(?<awid>\w+)){0,1}(?<resource>(\/\w+)+)(\?(?<parameters>.*)){0,1}/,
44
+ uu8: /:(?<port>\d+)\/{0,1}(?<territory>[0-9A-z\-]*)\/(?<product>[\w\-]+)\/(?<resource>\w+\/\w+)\/exec\?(?<parameters>.*)/
44
45
  }
45
46
 
46
47
  REGISTER_AWID_RESOURCE = '/sys/initAppWorkspace'
@@ -59,9 +60,9 @@ module NEC
59
60
  def initialize(router, opts = {})
60
61
  @router = router
61
62
  @only_registered_awid = opts[:only_registered_awid]
62
- @url_parts_matcher = opts.fetch(:matcher) {MATCHERS[:base]}
63
- @awids = opts.fetch(:awids){ {} }
64
- @asids = opts.fetch(:asids){ {} }
63
+ @url_parts_matcher = opts.fetch(:matcher) {MATCHERS[:uaf]}
64
+ @awids = opts.fetch(:awids) {{}}
65
+ @asids = opts.fetch(:asids) {{}}
65
66
  end
66
67
 
67
68
  ###
@@ -70,14 +71,31 @@ module NEC
70
71
  # @param [Hash] env
71
72
  def call(env)
72
73
  request = Rack::Request.new(env)
73
- serve_request(request)
74
+ identity = get_identity(env['HTTP_AUTHORIZATION'])
75
+ serve_request(request, identity)
76
+ end
77
+
78
+ ###
79
+ # The method helps to get identity information from Bearer token
80
+ #
81
+ # @param [String] authorization
82
+ def get_identity(authorization)
83
+ if authorization
84
+ begin
85
+ token = authorization.split('Bearer ')[1]
86
+ parts = token.split('.')
87
+ JSON.parse(Base64.decode64(parts[1]), symbolize_names: true)
88
+ rescue => e
89
+ warn e.message
90
+ end
91
+ end
74
92
  end
75
93
 
76
94
  ###
77
95
  # The method handle received request.
78
96
  #
79
97
  # @param [Rack::Request] request
80
- def serve_request(request)
98
+ def serve_request(request, identity = nil)
81
99
  parts = get_url_parts(request.url)
82
100
 
83
101
  begin
@@ -95,7 +113,7 @@ module NEC
95
113
  return @router.no_registered_awid(parts[:tid], parts[:awid]) unless is_registered_resource?(parts[:tid], parts[:awid])
96
114
  end
97
115
 
98
- @router.route(parts, data)
116
+ @router.route(parts, data, identity)
99
117
  end
100
118
 
101
119
  private
@@ -164,7 +182,8 @@ module NEC
164
182
  #
165
183
  # @param [Hash] parts All parts find by specified matcher of URL request
166
184
  # @param [String] request_data Received data by request
167
- def route(parts, request_data)
185
+ # @param [Hash] identity
186
+ def route(parts, request_data, identity = nil)
168
187
  case parts[:resource]
169
188
  when "/", ""
170
189
  home
@@ -1,3 +1,3 @@
1
1
  module NECMockServer
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nec_mock_server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marek Filteš
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-09 00:00:00.000000000 Z
11
+ date: 2018-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler