nec_mock_server 0.1.3 → 0.2.2

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: 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