domoscio_viz 0.1.1.4 → 0.2.4

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
  SHA256:
3
- metadata.gz: 4b56d8068cc89b1fd70f1d0d085e960307ce7038261c9a2640fc2033286f7b49
4
- data.tar.gz: d64091ea450a17c5500f13caa3b48618c12f8cdf7e135eac6912fff31254367e
3
+ metadata.gz: 887c55dd8caa52f79ff7cdb18b53f7ed134b538f0d3783d5f4826bbe99efe0db
4
+ data.tar.gz: 6229db276d697d67b482d5c6bedf8bf0cd5a236ce3336f73f5187ab4d995af85
5
5
  SHA512:
6
- metadata.gz: 5fd0f66253608031e7ccb578492430d9b4d0febc8b8c9fff50f8cae52a910f3ae77d81acc53b3b6c21e6deedbb07a81a677b1855bc255989e046084370fe817c
7
- data.tar.gz: ecf4b4b43f307db1d29950ecadbbccc25ebd3cec5ad2e0a310afe6d1aa5200d7c1ce7bfc57b15f3f604f0cb89882192dc2339a2b65bfeeda1ef48ee35e30983f
6
+ metadata.gz: 665710baedb373e38e2cfb5a821f95ce52d5ba80d16de6d56127a8cc90ad1b80cbd9391ae45a377f679f6316bff32623f99e5c1598c1bd4122207d6dae616c4e
7
+ data.tar.gz: e02a53ce48feffc03b70377f129339dd3e4c7ad43f0b776be02baa67d9d8741ec9fc2544ba19e762d36576f8d2bdd1f2a7eb2a433bb9d69cbfce5fb704ffae79
@@ -2,16 +2,13 @@
2
2
  require 'net/https'
3
3
  require 'cgi/util'
4
4
  require 'multi_json'
5
-
6
5
  # helpers
7
6
  require 'domoscio_viz/version'
8
7
  require 'domoscio_viz/json'
9
8
  require 'domoscio_viz/errors'
10
9
  require 'domoscio_viz/authorization_token'
11
-
12
10
  # generators
13
11
  require 'domoscio_viz/generators/install_generator'
14
-
15
12
  # resources
16
13
  require 'domoscio_viz/http_calls'
17
14
  require 'domoscio_viz/resource'
@@ -35,9 +32,9 @@ module DomoscioViz
35
32
  def root_url
36
33
  if @preproduction == true
37
34
  if @test == true
38
- @root_url || "https://domoscio-viz-engine-preprod.azurewebsites.net"
35
+ @root_url || "https://domoscio-viz-engine-v2-preprod.azurewebsites.net"
39
36
  else
40
- @root_url || "https://domoscio-viz-engine-v2.azurewebsites.net"
37
+ @root_url || "https://visualization-engine.domoscio.com"
41
38
  end
42
39
  else
43
40
  @root_url || "http://localhost:3002"
@@ -58,40 +55,52 @@ module DomoscioViz
58
55
  URI(configuration.root_url + url)
59
56
  end
60
57
 
61
- #
62
58
  def self.request(method, url, params={}, filters={}, headers = request_headers, before_request_proc = nil)
63
59
  return false if @disabled
64
60
  uri = api_uri(url)
65
61
  uri.query = URI.encode_www_form(filters) unless filters.empty?
66
-
67
62
  res = DomoscioViz.send_request(uri, method, params, headers, before_request_proc)
68
-
69
- # decode json data
63
+ return res if res.kind_of? DomoscioViz::ProcessingError
70
64
  begin
65
+ raise_http_failure(uri, res, params)
71
66
  data = DomoscioViz::JSON.load(res.body.nil? ? '' : res.body)
72
- DomoscioViz::AuthorizationToken::Manager.storage.store({client_id: res['ClientID'], client_passphrase: res['ClientPassphrase']})
73
- rescue MultiJson::LoadError
74
- data = {}
67
+ DomoscioViz::AuthorizationToken::Manager.storage.store({access_token: res['Accesstoken'], refresh_token: res['Refreshtoken']})
68
+ rescue MultiJson::LoadError => exception
69
+ return ProcessingError.new(uri, 500, exception, res.body, params)
70
+ rescue ResponseError => exception
71
+ return exception
75
72
  end
76
-
77
73
  data
78
74
  end
79
75
 
80
-
81
76
  def self.send_request(uri, method, params, headers, before_request_proc)
82
- res = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http| # , use_ssl: uri.scheme == 'https') do |http|
83
- req = Net::HTTP::const_get(method.capitalize).new(uri.request_uri, headers)
84
- req.body = DomoscioViz::JSON.dump(params)
85
- before_request_proc.call(req) if before_request_proc
86
- http.request req
77
+ begin
78
+ res = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
79
+ req = Net::HTTP::const_get(method.capitalize).new(uri.request_uri, headers)
80
+ req.body = DomoscioRails::JSON.dump(params)
81
+ before_request_proc.call(req) if before_request_proc
82
+ http.request req
83
+ end
84
+ rescue Timeout::Error, Errno::EINVAL, HTTP::ConnectionError, Errno::ECONNREFUSED, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => exception
85
+ ProcessingError.new(uri, 500, exception, res, params)
87
86
  end
88
87
  end
89
88
 
90
89
  private
91
90
 
91
+ def self.raise_http_failure(uri, res, params)
92
+ unless res.kind_of? Net::HTTPSuccess
93
+ if res.blank?
94
+ raise ResponseError.new(uri, 500, {error: {status: 500, message: 'VisualizationEngine not available'}}, {}, params)
95
+ else
96
+ body = DomoscioRails::JSON.load((res.body.nil? ? '' : res.body), :symbolize_keys => true)
97
+ raise ResponseError.new(uri, res.code.to_i, body, res.body, params)
98
+ end
99
+ end
100
+ end
101
+
92
102
  def self.user_agent
93
103
  @uname ||= get_uname
94
-
95
104
  {
96
105
  bindings_version: DomoscioViz::VERSION,
97
106
  lang: 'ruby',
@@ -108,12 +117,23 @@ module DomoscioViz
108
117
  end
109
118
 
110
119
  def self.request_headers
111
- headers = {
112
- 'user_agent' => "DomoscioViz RubyBindings/#{DomoscioViz::VERSION}",
113
- 'ClientID' => "#{DomoscioViz.configuration.client_id}",
114
- 'ClientPassphrase' => "#{DomoscioViz.configuration.client_passphrase}",
115
- 'Content-Type' => 'application/json'
116
- }
120
+ auth_token = DomoscioViz::AuthorizationToken::Manager.get_token
121
+ if !auth_token.is_a? String
122
+ headers = {
123
+ 'user_agent' => "#{DomoscioViz.user_agent}",
124
+ 'ClientId' => "#{DomoscioViz.configuration.client_id}",
125
+ 'AccessToken' => "#{auth_token[:access_token]}",
126
+ 'RefreshToken' => "#{auth_token[:refresh_token]}",
127
+ 'Content-Type' => 'application/json'
128
+ }
129
+ else
130
+ headers = {
131
+ 'user_agent' => "#{DomoscioViz.user_agent}",
132
+ 'ClientId' => "#{DomoscioViz.configuration.client_id}",
133
+ 'Authorization' => "Token token=#{DomoscioViz.configuration.client_passphrase}",
134
+ 'Content-Type' => 'application/json'
135
+ }
136
+ end
117
137
  headers
118
138
  end
119
139
 
@@ -124,5 +144,4 @@ module DomoscioViz
124
144
  c.temp_dir = File.expand_path('../tmp', __FILE__)
125
145
  FileUtils.mkdir_p(c.temp_dir) unless File.directory?(c.temp_dir)
126
146
  end
127
-
128
- end
147
+ end
@@ -1,6 +1,5 @@
1
1
  module DomoscioViz
2
2
  module AuthorizationToken
3
-
4
3
  class Manager
5
4
 
6
5
  class << self
@@ -1,24 +1,26 @@
1
1
  module DomoscioViz
2
-
3
2
  # Generic error superclass for MangoPay specific errors.
4
3
  # Currently never instantiated directly.
5
4
  # Currently only single subclass used.
6
5
  class Error < StandardError
7
6
  end
8
-
9
- # Thrown from any MangoPay API call whenever
10
- # it returns response with HTTP code != 200.
7
+ # ResponseError from VizEngine
11
8
  class ResponseError < Error
12
-
13
- attr_reader :request_url, :code, :details
14
-
15
- def initialize(request_url, code, details)
16
- @request_url, @code, @details = request_url, code, details
9
+ attr_reader :request_url, :code, :details, :body, :request_params
10
+ def initialize(request_url, code, details = {}, body = nil, request_params = {})
11
+ @request_url, @code, @details, @body, @request_params = request_url, code, details, body, request_params
17
12
  super(message) if message
18
13
  end
14
+ def message; @details.is_a?(Hash) ? @details.dig(:error, :message) : @details; end
15
+ end
19
16
 
20
- def message; @details['Message']; end
21
- def type; @details['Type']; end
22
- def errors; @details['errors']; end
17
+ # ProcessingError from Domoscio_viz
18
+ class ProcessingError < Error
19
+ attr_reader :request_url, :code, :details, :body, :request_params
20
+ def initialize(request_url, code, details = {}, body = nil, request_params = {})
21
+ @request_url, @code, @details, @body, @request_params = request_url, code, details, body, request_params
22
+ super(message) if message
23
+ end
24
+ def message; @details.message; end
23
25
  end
24
26
  end
@@ -1,12 +1,10 @@
1
1
  require 'rails/generators'
2
-
3
2
  module DomoscioViz
4
3
  class InstallGenerator < ::Rails::Generators::Base
5
4
  source_root File.expand_path('../templates', __FILE__)
6
5
  desc "Generate config file for DomoscioViz configuration"
7
-
8
6
  def install
9
- copy_file "install.rb", "config/initializers/domoscio_viz.rb"
7
+ copy_file "install.rb", "config/initializers/domoscio_viz.rb"
10
8
  end
11
9
  end
12
10
  end
@@ -6,8 +6,6 @@ DomoscioViz.configure do |c|
6
6
  end
7
7
  c.client_id = ENV['DOMOSCIO_ID']
8
8
  c.client_passphrase = ENV['DOMOSCIO_PASSWORD']
9
-
10
9
  c.temp_dir = File.expand_path('../tmp', __FILE__)
11
-
12
10
  FileUtils.mkdir_p(c.temp_dir) unless File.directory?(c.temp_dir)
13
11
  end
@@ -2,15 +2,10 @@ module DomoscioViz
2
2
  module HTTPCalls
3
3
  module GetUrl
4
4
  module ClassMethods
5
- # In order to catch current SocketsTimeoutError that seem to appear when the VizEngine stays Idle for too long
6
- # Perform the request a second time if it fails the fisrt time
7
5
  def get_url(util_name = nil, params = {})
8
- response = DomoscioViz.request(:post, url(util_name), params)
9
- response = DomoscioViz.request(:post, url(util_name), params) unless response && response.is_a?(Hash) && response['url'] && response['success'] == true
10
- response
6
+ DomoscioViz.request(:post, url(util_name), params)
11
7
  end
12
8
  end
13
-
14
9
  def self.included(base)
15
10
  base.extend(ClassMethods)
16
11
  end
@@ -21,4 +21,4 @@ module DomoscioViz
21
21
  end
22
22
  end
23
23
  end
24
- end
24
+ end
@@ -1,3 +1,3 @@
1
1
  module DomoscioViz
2
- VERSION = "0.1.1.4"
3
- end
2
+ VERSION = "0.2.4"
3
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: domoscio_viz
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1.4
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benoit Praly
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-17 00:00:00.000000000 Z
11
+ date: 2021-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -44,7 +44,6 @@ files:
44
44
  - lib/domoscio_viz/json.rb
45
45
  - lib/domoscio_viz/resource.rb
46
46
  - lib/domoscio_viz/version.rb
47
- - lib/tasks/domoscio_rails_tasks.rake
48
47
  homepage: http://www.domoscio.com
49
48
  licenses:
50
49
  - MIT
@@ -64,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
63
  - !ruby/object:Gem::Version
65
64
  version: '0'
66
65
  requirements: []
67
- rubygems_version: 3.0.8
66
+ rubygems_version: 3.1.2
68
67
  signing_key:
69
68
  specification_version: 4
70
69
  summary: Summary of DomoscioViz.
@@ -1,4 +0,0 @@
1
- # desc "Explaining what the task does"
2
- # task :domoscio_viz do
3
- # # Task goes here
4
- # end