ecoportal-api-graphql 0.3.3 → 0.3.6

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
  SHA256:
3
- metadata.gz: 802706f5cb251ec2df63b4f43576f779e244da1fb7ad0d93875e5d05d87e3539
4
- data.tar.gz: d761dd4b221133959cf2a64b49e5cceb11c10b6bafea42dd115294b44f7812ae
3
+ metadata.gz: 17f9bb4aed7ac9d69f595b1f3501a1268d22183dd4a479740ae12f9a26343a25
4
+ data.tar.gz: 40c3685c22e3e43aaa68ba8ba1ecb3a7ca385070d5d014c5674e1bbd3bca813b
5
5
  SHA512:
6
- metadata.gz: 9ea32be18933799c0a210250771f95f6fbfbf0bcaaee1bcf907b86cf759eb4350f6786d4c9efe3188a22dacad396cbd9b1d84b79c8233a194f2f99c8a4a3d77d
7
- data.tar.gz: 8af6e498686d97e395a50195970346af89676652721ed673405287c45632f4077b47e5388d179b59ca45f15021ce38718e6aa1cfe54a718b039aaf8c5a63fa43
6
+ metadata.gz: d1b8d8375dc608337bcbdd4b34a4bbb8da3e4f6cf50649afccb0a2558a9b4be51ef8a208870d43a1145a0ce374a031761989941bd1097d78289d6a5f02f69fa5
7
+ data.tar.gz: 5e12819b2085d2f8a9a813a025892feeff4fadc7a80267f6180816746bcea29d9b7057384c406a6365604f52f574123796b97f87a44455c0f955bc29dfc124f5
data/CHANGELOG.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
- ## [0.3.4] - 2023-04-xx
4
+ ## [0.3.7] - 2023-04-xx
5
5
 
6
6
  ### Added
7
7
  ### Changed
@@ -11,9 +11,33 @@ All notable changes to this project will be documented in this file.
11
11
  - Add update operation for `ContractorEntity`
12
12
  - Add currentOrganization.action
13
13
  - Analyse how to "DSL" currentOrganization.action.activities
14
-
15
14
  - review `path` tracking
16
15
 
16
+ ## [0.3.6] - 2023-04-17
17
+
18
+ ### Changed
19
+ - Softened max version of **gem** dependencies
20
+
21
+ ### Fixed
22
+ - `Ecoportal::API::GraphQL::Fragment#define` was not removing previous constants
23
+ - Changed check method to be `::const_defined?`
24
+
25
+ ## [0.3.5] - 2023-04-03
26
+
27
+ ### Fixed
28
+ - `Ecoportal::API::GraphQL::Helpers::LocationsTree#treeify`
29
+ - Make it real id-case-insensitive (parents in lower case were being missed due to this)
30
+
31
+ ## [0.3.4] - 2023-04-03
32
+
33
+ ### Added
34
+ - `Ecoportal::API::Common::GraphQL::AuthService`
35
+ - `#session_token` added **token auto-renew** functionality (when token expires in less than 90 minutes)
36
+ - `#session_token_renewed`
37
+
38
+ ### Fixed
39
+ - Enabled to specify `host` (other than `live.ecoportal.com`) by the user
40
+
17
41
  ## [0.3.3] - 2023-04-02
18
42
 
19
43
  ### Fixed
@@ -22,13 +22,13 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
24
 
25
- spec.add_development_dependency "bundler", ">= 2.4.9", "< 2.5"
26
- spec.add_development_dependency "rspec", ">= 3.10.0", "< 3.11"
27
- spec.add_development_dependency "rake", ">= 13.0.3", "< 13.1"
28
- spec.add_development_dependency "yard", ">= 0.9.26", "< 0.10"
29
- spec.add_development_dependency "redcarpet", ">= 3.5.1", "< 3.6"
25
+ spec.add_development_dependency "bundler", ">= 2.4.9", "< 3"
26
+ spec.add_development_dependency "rspec", ">= 3.10.0", "< 4"
27
+ spec.add_development_dependency "rake", ">= 13.0.3", "< 14"
28
+ spec.add_development_dependency "yard", ">= 0.9.26", "< 1"
29
+ spec.add_development_dependency "redcarpet", ">= 3.5.1", "< 4"
30
30
  spec.add_development_dependency "pry" , ">= 0.14"
31
31
 
32
- spec.add_dependency 'ecoportal-api-v2', '>= 1.1.1', '< 1.2'
32
+ spec.add_dependency 'ecoportal-api-v2', '>= 1.1.2', '< 1.2'
33
33
  spec.add_dependency 'graphlient', '>= 0.7.0', '< 0.8'
34
34
  end
@@ -3,20 +3,64 @@ module Ecoportal
3
3
  module Common
4
4
  module GraphQL
5
5
  module AuthService
6
- DEFAULT_SERVER = "live.ecoportal.com"
6
+ DEFAULT_SERVER = "live.ecoportal.com"
7
+ TOKEN_AUTORENEW = 90 # minutes
7
8
 
8
9
  module InstanceMethods
9
- def session_token(host: server, version: nil)
10
+ def session_token(host: server, version: nil, auto_renew: true)
11
+ session_token_data(host: host, version: version).yield_self do |body|
12
+ return nil unless body
13
+ if auto_renew && token_renew?(body["expires_in"])
14
+ session_token_renewed(host: host, version: version, refresh_token: body["refresh_token"])
15
+ else
16
+ body["access_token"]
17
+ end
18
+ end
19
+ end
20
+
21
+ def session_token_renewed(host: server, version: nil, refresh_token: nil)
22
+ unless refresh_token
23
+ return nil unless body = session_token_data(host: host, version: version)
24
+ return nil unless refresh_token = body["resfresh_token"]
25
+ end
26
+ session_refresh_token_data(host: host, version: version, refresh_token: refresh_token).yield_self do |body|
27
+ return nil unless body
28
+ body["access_token"] if body
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ def session_token_data(host: server, version: nil)
10
35
  http_client(host: host, version: version).post("/oauth/token", data: {
11
36
  "grant_type" => "password",
12
37
  "email" => user_email,
13
38
  "password" => user_pass
14
39
  }).yield_self do |response|
15
- response.body["access_token"] if response.success?
40
+ if response.success?
41
+ response.body
42
+ else
43
+ nil
44
+ end
16
45
  end
17
46
  end
18
47
 
19
- private
48
+ def session_refresh_token_data(host: server, version: nil, refresh_token:)
49
+ http_client(host: host, version: version).post("/oauth/token", data: {
50
+ "grant_type" => "refresh_token",
51
+ "refresh_token" => refresh_token
52
+ }).yield_self do |response|
53
+ if response.success?
54
+ response.body
55
+ else
56
+ nil
57
+ end
58
+ end
59
+ end
60
+
61
+ def token_renew?(seconds)
62
+ (TOKEN_AUTORENEW * 60) > seconds
63
+ end
20
64
 
21
65
  def http_client(host: server, version: nil)
22
66
  @http_client ||= Ecoportal::API::Common::GraphQL::HttpClient.new(host: host, version: version)
@@ -19,7 +19,7 @@ module Ecoportal
19
19
  puts "Configuring GraphQL Client onto '#{url}'"
20
20
  super(url,
21
21
  headers: {
22
- 'Authorization' => "Bearer #{session_token}"
22
+ 'Authorization' => "Bearer #{session_token(host: host)}"
23
23
  },
24
24
  http_options: {
25
25
  read_timeout: 20,
@@ -27,7 +27,7 @@ module Ecoportal
27
27
  end
28
28
 
29
29
  def define(sym, heredoc, namespace: ::Fragment)
30
- namespace.send(:remove_const, sym) if namespace.const?(sym)
30
+ namespace.send(:remove_const, sym) if namespace.const_defined?(sym)
31
31
  client.parse(heredoc).tap do |fragment|
32
32
  namespace.const_set(sym, fragment)
33
33
  ::Fragment.const_set(sym, fragment) unless namespace == ::Fragment
@@ -6,8 +6,6 @@ module Ecoportal
6
6
  def treeify(nodes)
7
7
  parents = nodes.each_with_object({}) do |node, parents|
8
8
  parent = node.parent
9
- # puts "Node '#{node.name}' with ID: '#{node.id}'. "
10
- # puts " • Parent '#{parent.name}' with ID: '#{parent.id}'." if parent
11
9
  parentId = parent && parent.id.upcase
12
10
  (parents[parentId] ||= []).push(node)
13
11
  end
@@ -17,7 +15,7 @@ module Ecoportal
17
15
  private
18
16
 
19
17
  def get_children(node_id, parents)
20
- (parents[node_id] ||= []).each_with_object([]) do |child, results|
18
+ (parents[node_id&.upcase] ||= []).each_with_object([]) do |child, results|
21
19
  results << {
22
20
  "id" => child.id,
23
21
  "name" => child.name,
@@ -11,8 +11,9 @@ module Ecoportal
11
11
  # @param org_id [String] the id of the target organization.
12
12
  # It defaults to the environmental variable `ORGANIZATION_ID`, if defined
13
13
  # @param logger [Logger] an object with `Logger` interface to generate logs.
14
- def initialize(email: nil, pass: nil, org_id: nil)
15
- @client = Ecoportal::API::Common::GraphQL::Client.new(email: email, pass: pass, org_id: org_id, no_schema: true)
14
+ def initialize(email: nil, pass: nil, org_id: nil, host: "live.ecoportal.com")
15
+ kargs = {email: email, pass: pass, host: host, org_id: org_id, no_schema: true}
16
+ @client = Ecoportal::API::Common::GraphQL::Client.new(**kargs)
16
17
  @fragments = Ecoportal::API::GraphQL::Fragment.new(client)
17
18
  end
18
19
 
@@ -1,5 +1,5 @@
1
1
  module Ecoportal
2
2
  module API
3
- GRAPQL_VERSION = "0.3.3"
3
+ GRAPQL_VERSION = "0.3.6"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecoportal-api-graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-01 00:00:00.000000000 Z
11
+ date: 2023-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: 2.4.9
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '2.5'
22
+ version: '3'
23
23
  type: :development
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: 2.4.9
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '2.5'
32
+ version: '3'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rspec
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: 3.10.0
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '3.11'
42
+ version: '4'
43
43
  type: :development
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: 3.10.0
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '3.11'
52
+ version: '4'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: rake
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +59,7 @@ dependencies:
59
59
  version: 13.0.3
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: '13.1'
62
+ version: '14'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -69,7 +69,7 @@ dependencies:
69
69
  version: 13.0.3
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: '13.1'
72
+ version: '14'
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: yard
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -79,7 +79,7 @@ dependencies:
79
79
  version: 0.9.26
80
80
  - - "<"
81
81
  - !ruby/object:Gem::Version
82
- version: '0.10'
82
+ version: '1'
83
83
  type: :development
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
@@ -89,7 +89,7 @@ dependencies:
89
89
  version: 0.9.26
90
90
  - - "<"
91
91
  - !ruby/object:Gem::Version
92
- version: '0.10'
92
+ version: '1'
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: redcarpet
95
95
  requirement: !ruby/object:Gem::Requirement
@@ -99,7 +99,7 @@ dependencies:
99
99
  version: 3.5.1
100
100
  - - "<"
101
101
  - !ruby/object:Gem::Version
102
- version: '3.6'
102
+ version: '4'
103
103
  type: :development
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: 3.5.1
110
110
  - - "<"
111
111
  - !ruby/object:Gem::Version
112
- version: '3.6'
112
+ version: '4'
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: pry
115
115
  requirement: !ruby/object:Gem::Requirement
@@ -130,7 +130,7 @@ dependencies:
130
130
  requirements:
131
131
  - - ">="
132
132
  - !ruby/object:Gem::Version
133
- version: 1.1.1
133
+ version: 1.1.2
134
134
  - - "<"
135
135
  - !ruby/object:Gem::Version
136
136
  version: '1.2'
@@ -140,7 +140,7 @@ dependencies:
140
140
  requirements:
141
141
  - - ">="
142
142
  - !ruby/object:Gem::Version
143
- version: 1.1.1
143
+ version: 1.1.2
144
144
  - - "<"
145
145
  - !ruby/object:Gem::Version
146
146
  version: '1.2'