adsk_auth_service 1.0.22 → 1.0.23
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 +4 -4
- data/Gemfile +2 -1
- data/adsk_auth_service.gemspec +2 -1
- data/lib/services/auth_service.rb +1 -1
- data/lib/utils/net_util.rb +72 -67
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3831bc4e5b1f8295d772bcddbdaa8a05586b8a6a
|
4
|
+
data.tar.gz: 873d24eb28f728615f3e8906dd168eaeaffe2ea7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 97bc45d30d1ba40da1c77dfb915982a7275acab6e45f4fef106f426bc8b3da3119fa1f03bdfc222c5bd87f7c67f63df61fe01233bf3097b760219c6409b148a4
|
7
|
+
data.tar.gz: c1cedc98cbd4dd56bc6efed8b6a2ef0a56bd10106b54723471b9f94e81353d0572f980bf86bd6eb9f52b70ff88e749e233e2c70cdb7c1e5221cc6086c144231d
|
data/Gemfile
CHANGED
data/adsk_auth_service.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'adsk_auth_service'
|
3
|
-
s.version = '1.0.
|
3
|
+
s.version = '1.0.23'
|
4
4
|
s.summary = "Autodesk second phase token retrieval"
|
5
5
|
s.description = "A gem for Autodesk 2-phase authentication service."
|
6
6
|
s.authors = ['Linh Chau']
|
@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.homepage = 'https://github.com/linhchauatl/adsk_auth_service'
|
15
15
|
s.license = 'MIT'
|
16
16
|
s.add_runtime_dependency 'config_service'
|
17
|
+
s.add_runtime_dependency 'faraday'
|
17
18
|
|
18
19
|
s.add_development_dependency 'rspec', '~> 3.1'
|
19
20
|
end
|
@@ -25,7 +25,7 @@ class AuthService
|
|
25
25
|
NetUtil.call_webservices(url,
|
26
26
|
'post',
|
27
27
|
"client_id=#{key}&client_secret=#{secret}&grant_type=client_credentials",
|
28
|
-
{ headers: {'Content-Type' => 'application/x-www-form-urlencoded'} }).body
|
28
|
+
{ headers: {'Content-Type' => 'application/x-www-form-urlencoded', 'grant_type' => 'client_credentials'} }).body
|
29
29
|
)
|
30
30
|
end
|
31
31
|
|
data/lib/utils/net_util.rb
CHANGED
@@ -1,89 +1,94 @@
|
|
1
1
|
require 'net/https'
|
2
2
|
require 'active_support'
|
3
|
+
require 'faraday'
|
3
4
|
|
4
5
|
class NetUtil
|
5
6
|
READ_TIMEOUT = 600 # 10 minutes
|
6
7
|
RETRY_TIMES = 3
|
7
8
|
WAIT_TIME = 5 # Wait for 5 seconds before retry
|
8
9
|
|
10
|
+
class << self
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
12
|
+
# This method performs GET, PUT and POST requests to web services
|
13
|
+
# Call it like this:
|
14
|
+
# response = NetUtil.call_web_services(url) <= This will perform a GET, with url provided by the caller
|
15
|
+
# response = NetUtil.call_web_services(url, 'post', doc) <= This will perform a POST, doc is the data to post, can be REXML::Document or XML String
|
16
|
+
# In the case of GET, the returned XML data is 'response'
|
17
|
+
# In the case of POST and PUT, the returned XML data is 'response.body'
|
18
|
+
def call_webservices(url, method_name = 'get', data = '', options = { headers: {'Content-Type' => 'application/json'} })
|
19
|
+
method_name = method_name.to_s.downcase
|
20
|
+
try_time = 0
|
21
|
+
begin
|
22
|
+
NetUtil.send("do_#{method_name}", {url: url, data: data}.merge(options))
|
23
|
+
rescue StandardError => error
|
24
|
+
try_time += 1
|
25
|
+
if try_time > RETRY_TIMES
|
26
|
+
puts ("\n#{Time.now} Unrecoverable error in NetUtil.call_webservices: "\
|
27
|
+
"#{error}\n#{error.backtrace.join("\n")}\n")
|
28
|
+
# It is an unrecoverable error, throw the exception back, don't suppress it.
|
29
|
+
raise "Unrecoverable error calling web services.\nURL: #{url}.\nError message: #{error.message}."
|
30
|
+
end
|
31
|
+
|
32
|
+
puts ("NetUtil.call_webservices #{url}:\nError happens: #{error}. Try #{try_time} time(s).")
|
33
|
+
sleep(WAIT_TIME)
|
34
|
+
retry
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def do_get(options)
|
39
|
+
do_get_headers = build_header(options)
|
40
|
+
params = options[:params] || {}
|
41
|
+
do_get_url = options[:url]
|
42
|
+
do_get_uri = URI.parse(do_get_url)
|
43
|
+
conn = Faraday.new(:url => do_get_url) do |faraday|
|
44
|
+
faraday.adapter Faraday.default_adapter
|
28
45
|
end
|
29
46
|
|
30
|
-
|
31
|
-
|
32
|
-
|
47
|
+
response = conn.get do |req|
|
48
|
+
req.url do_get_uri.path, params
|
49
|
+
do_get_headers.each { |key, value| req.headers[key] = value}
|
50
|
+
end
|
33
51
|
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def NetUtil.do_get(options)
|
37
|
-
# headers = {'Content-Type' => 'text/xml'}
|
38
|
-
headers = build_header(options)
|
39
|
-
url = options[:url]
|
40
|
-
uri = URI.parse(url)
|
41
|
-
req = Net::HTTP.new(uri.host, uri.port)
|
42
|
-
req = set_ssl(req, url)
|
43
|
-
response = req.request_get(uri.path, headers)
|
44
|
-
return response.body
|
45
|
-
end
|
46
|
-
|
47
|
-
def NetUtil.do_post(options)
|
48
|
-
run_p(options, 'post')
|
49
|
-
end
|
50
|
-
|
51
|
-
def NetUtil.do_put(options)
|
52
|
-
run_p(options, 'put')
|
53
|
-
end
|
54
|
-
|
55
|
-
|
56
|
-
def NetUtil.run_p(options, method_name)
|
57
|
-
data = options[:data].to_s
|
58
52
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
req = Net::HTTP.new(uri.host, uri.port)
|
63
|
-
req = set_ssl(req, url)
|
53
|
+
def do_post(options)
|
54
|
+
run_p(options, :post)
|
55
|
+
end
|
64
56
|
|
65
|
-
|
66
|
-
|
57
|
+
def do_put(options)
|
58
|
+
run_p(options, :put)
|
59
|
+
end
|
67
60
|
|
68
|
-
response, body = req.send(method_name, uri.path, data, headers)
|
69
61
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
62
|
+
def run_p(options, method_name)
|
63
|
+
data = options[:data].to_s
|
64
|
+
|
65
|
+
headers = build_header(options)
|
66
|
+
url = options[:url]
|
67
|
+
uri = URI.parse(url)
|
68
|
+
req = Net::HTTP.new(uri.host, uri.port)
|
69
|
+
req = set_ssl(req, url)
|
70
|
+
|
71
|
+
req.read_timeout = READ_TIMEOUT
|
72
|
+
req.open_timeout = READ_TIMEOUT
|
73
|
+
|
74
|
+
return req.send(method_name, uri.path, data, headers)
|
75
|
+
end
|
76
|
+
|
77
|
+
def build_header(options)
|
78
|
+
headers = (options[:headers] || { 'Content-Type' => 'application/json' }).dup
|
79
|
+
conntent_type = ( headers['Content-Type'].nil? )? 'application/json' : headers['Content-Type']
|
80
|
+
headers.delete('Content-Type')
|
81
|
+
{'Content-Type' => conntent_type}.merge(headers)
|
78
82
|
|
79
|
-
|
83
|
+
end
|
80
84
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
+
def set_ssl(request, url)
|
86
|
+
if url.start_with? 'https'
|
87
|
+
request.use_ssl = true
|
88
|
+
request.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
89
|
+
end
|
90
|
+
request
|
85
91
|
end
|
86
|
-
request
|
87
92
|
end
|
88
93
|
end
|
89
94
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adsk_auth_service
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.23
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Linh Chau
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: config_service
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: faraday
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rspec
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|