allscripts_unity_client 2.0.0 → 2.0.1

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: ecd96ba97fa670be830e0a85f10e577201e6363b
4
- data.tar.gz: 87af8b8cbf7ebcea83ef5b0cf69d0ad67f3d2ab6
3
+ metadata.gz: 0f4d391c7be9dbfb1805efb30c26b2def701a968
4
+ data.tar.gz: 8339db470d7aeb19974e82b4d8e714af42103cee
5
5
  SHA512:
6
- metadata.gz: b0c13a8a52bca8a0ad7a26ca837f1d8820922dd952ac08ccba9a23c03331731f141757ebcd7a7489f322ece978f4742dc630728cf30e40c4ceaeb905bb5e6a9d
7
- data.tar.gz: 83b22d9a877b32fe3014450e4ab4500baedd05b945a7f81367046d8823afd4b873cc0db14a615a79ede8a5767db92315c69b87308e9dda4e456e91b3b7f41586
6
+ metadata.gz: b7bafb0b0cbf587c7729fda1ff143f20f3481d54fa3f54b5f383c1c728ed942bfe64937b61ecb53b24f6fc837f21d420e34190c968cbaaa77c13429cdff3286a
7
+ data.tar.gz: 663bd4436aa214ac28cbc47e7f24109e9193f75ff27b60e60b19af2b42790268fce2cd9cce33a7da277afbad19a160b341c9e4513e8d1a65b2d9340d771b212d
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Allscripts Unity Client [![Build Status](https://travis-ci.org/healthfinch/allscripts-unity-client.png?branch=master)](https://travis-ci.org/healthfinch/allscripts-unity-client) [![Coverage Status](https://coveralls.io/repos/healthfinch/allscripts-unity-client/badge.png?branch=master)](https://coveralls.io/r/healthfinch/allscripts-unity-client?branch=master)
1
+ # Allscripts Unity Client [![Build Status](https://travis-ci.org/healthfinch/allscripts-unity-client.png?branch=version2)](https://travis-ci.org/healthfinch/allscripts-unity-client) [![Coverage Status](https://coveralls.io/repos/healthfinch/allscripts-unity-client/badge.png?branch=master)](https://coveralls.io/r/healthfinch/allscripts-unity-client?branch=version2)
2
2
 
3
3
  The `allscripts_unity_client` gem is a Ruby client for the Allscripts Unity API. See http://remotecentral.allscripts.com/UnityAPIReference for more documentation on the API.
4
4
 
@@ -45,6 +45,38 @@ unity_client = AllscriptsUnityClient.create({
45
45
  })
46
46
  ```
47
47
 
48
+ ## SSL Management
49
+
50
+ [Faraday](https://github.com/lostisland/faraday) is used in combination with [EM-HTTP-Request](https://github.com/igrigorik/em-http-request) to send HTTP requests when using JSON clients. Faraday requires
51
+ some configuration when making connections over SSL. AllscriptsUnityClient will try to auto-detect the location of the
52
+ operating system's CA File or CA Path, but these values can be explicitly configured when creating a client:
53
+
54
+ ```ruby
55
+ # Mode defaults to :soap
56
+ unity_client = AllscriptsUnityClient.create({
57
+ mode: :json,
58
+ base_unity_url: "http://unity.base.url",
59
+ appname: "appname",
60
+ username: "username",
61
+ password: "password",
62
+ ca_file: "/usr/lib/ssl/certs/ca-certificates.crt"
63
+ })
64
+ ```
65
+
66
+ OR
67
+
68
+ ```ruby
69
+ # Mode defaults to :soap
70
+ unity_client = AllscriptsUnityClient.create({
71
+ mode: :json,
72
+ base_unity_url: "http://unity.base.url",
73
+ appname: "appname",
74
+ username: "username",
75
+ password: "password",
76
+ ca_path: "/usr/lib/ssl/certs"
77
+ })
78
+ ```
79
+
48
80
  ### Security token management
49
81
 
50
82
  Security tokens can be manually requested using the `get_security_token!` method:
@@ -1,7 +1,7 @@
1
1
  module AllscriptsUnityClient
2
2
  class ClientOptions
3
3
  attr_accessor :proxy, :logger
4
- attr_reader :base_unity_url, :username, :password, :appname, :timezone
4
+ attr_reader :base_unity_url, :username, :password, :appname, :timezone, :ca_file, :ca_path
5
5
 
6
6
  def initialize(options = {})
7
7
  @base_unity_url = options[:base_unity_url] ? options[:base_unity_url].gsub(/\/$/, '') : nil
@@ -11,6 +11,8 @@ module AllscriptsUnityClient
11
11
  @proxy = options[:proxy]
12
12
  self.timezone = options[:timezone]
13
13
  @logger = options[:logger]
14
+ @ca_file = options[:ca_file]
15
+ @ca_path = options[:ca_path]
14
16
 
15
17
  validate_options
16
18
  end
@@ -64,5 +66,17 @@ module AllscriptsUnityClient
64
66
  def logger?
65
67
  !@logger.nil?
66
68
  end
69
+
70
+ def ca_file?
71
+ return false if @ca_file.nil?
72
+ return false if @ca_file.empty?
73
+ true
74
+ end
75
+
76
+ def ca_path?
77
+ return false if @ca_path.nil?
78
+ return false if @ca_path.empty?
79
+ true
80
+ end
67
81
  end
68
82
  end
@@ -10,11 +10,7 @@ module AllscriptsUnityClient
10
10
 
11
11
  def initialize(options)
12
12
  super
13
- @connection = Faraday.new(url: @options.base_unity_url) do |conn|
14
- if @options.proxy?
15
- conn.proxy @options.proxy
16
- end
17
-
13
+ @connection = Faraday.new(build_faraday_options) do |conn|
18
14
  conn.adapter :em_http
19
15
  end
20
16
  end
@@ -102,5 +98,54 @@ module AllscriptsUnityClient
102
98
  raise APIError, response
103
99
  end
104
100
  end
101
+
102
+ def build_faraday_options
103
+ options = {}
104
+
105
+ # Configure Faraday base url
106
+ options[:url] = @options.base_unity_url
107
+
108
+ # Configure root certificates for Faraday using options or via auto-detection
109
+ if @options.ca_file?
110
+ options[:ssl] = { ca_file: @options.ca_file }
111
+ elsif @options.ca_path?
112
+ options[:ssl] = { ca_path: @options.ca_path }
113
+ elsif ca_file = JSONClientDriver.find_ca_file
114
+ options[:ssl] = { ca_file: ca_file }
115
+ elsif ca_path = JSONClientDriver.find_ca_path
116
+ options[:ssl] = { ca_path: ca_path }
117
+ end
118
+
119
+ # Configure proxy
120
+ if @options.proxy?
121
+ options[:proxy] = @options.proxy
122
+ end
123
+
124
+ options
125
+ end
126
+
127
+ def self.find_ca_path
128
+ if File.directory?('/usr/lib/ssl/certs')
129
+ return '/usr/lib/ssl/certs'
130
+ end
131
+
132
+ nil
133
+ end
134
+
135
+ def self.find_ca_file
136
+ if File.exists?('/opt/boxen/homebrew/opt/curl-ca-bundle/share/ca-bundle.crt')
137
+ return '/opt/boxen/homebrew/opt/curl-ca-bundle/share/ca-bundle.crt'
138
+ end
139
+
140
+ if File.exists?('/opt/local/share/curl/curl-ca-bundle.crt')
141
+ return '/opt/local/share/curl/curl-ca-bundle.crt'
142
+ end
143
+
144
+ if File.exists?('/usr/lib/ssl/certs/ca-certificates.crt')
145
+ return '/usr/lib/ssl/certs/ca-certificates.crt'
146
+ end
147
+
148
+ nil
149
+ end
105
150
  end
106
151
  end
@@ -1,3 +1,3 @@
1
1
  module AllscriptsUnityClient
2
- VERSION = '2.0.0'
2
+ VERSION = '2.0.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: allscripts_unity_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ash Gupta
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-04-29 00:00:00.000000000 Z
12
+ date: 2014-04-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: savon