rconomic 0.6.1 → 0.7.0
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/CHANGELOG.md +21 -0
- data/README.md +4 -8
- data/lib/economic/endpoint.rb +1 -10
- data/lib/economic/session.rb +2 -35
- data/lib/rconomic.rb +0 -1
- data/lib/rconomic/version.rb +1 -1
- data/rconomic.gemspec +1 -1
- data/spec/economic/endpoint_spec.rb +0 -16
- data/spec/economic/session_spec.rb +1 -104
- data/spec/support/factories.rb +1 -1
- metadata +1 -8
- data/lib/savon_ext/request.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f1a219e94882985de0e54c405e83d38f41f143fb15aaea9d411aa1b1c48acf9
|
4
|
+
data.tar.gz: beafac33256aad1ad07d84f1c5e3695c29020748adf85ab9f6e06896d648549e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ba0dedca0390d08d94ccba9996b8189e48f48c099ea98aad37c2d1e287a1ef44a291257e5c988cb1c6bb8700fba56c161b4c9e7e5e624484efde73b32def53a
|
7
|
+
data.tar.gz: 7ada580604da2cf3a9fbe8a4d64febd2e1df680adb9976a7511cf3b56cba02abe484e523a17d5cac5c116f650b47c687d6f43e45500d9fb76b95d04ccff3df70
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,27 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
5
5
|
|
6
|
+
## [Unreleased]
|
7
|
+
|
8
|
+
### Added
|
9
|
+
|
10
|
+
*
|
11
|
+
|
12
|
+
### Changes
|
13
|
+
|
14
|
+
*
|
15
|
+
|
16
|
+
### Removed
|
17
|
+
|
18
|
+
## 0.7.0 [July 1st, 2018]
|
19
|
+
|
20
|
+
This release contains breaking changes as E-conomic has deprecated one of their connection methods. See https://www.e-conomic.com/developer#_ga=2.79896535.1117342868.1530474675-2146547048.1526554784 for details.
|
21
|
+
|
22
|
+
### Removed
|
23
|
+
|
24
|
+
* Ability to connect with agreement number, username and password. You need to use `Economic::Session#connect_with_token` going forward.
|
25
|
+
* Ability to set an app identifier. This was tied to the now removed `Economic::Session#connect_with_credentials` method.
|
26
|
+
|
6
27
|
## 0.6.1 [July 1st, 2018]
|
7
28
|
|
8
29
|
### Changes
|
data/README.md
CHANGED
@@ -13,11 +13,7 @@ Usage example
|
|
13
13
|
|
14
14
|
economic = Economic::Session.new
|
15
15
|
|
16
|
-
#
|
17
|
-
# As described here: http://techtalk.e-conomic.com/e-conomic-soap-api-now-requires-you-to-specify-a-custom-x-economicappidentifier-header/
|
18
|
-
economic.connect_with_credentials(123456, 'API', 'passw0rd', 'my awesome integration v1.0.0')
|
19
|
-
|
20
|
-
# Or connect using a Private app ID and an access ID provided by the "Grant Access"
|
16
|
+
# Connect using a Private app ID and an access ID provided by the "Grant Access"
|
21
17
|
# As described here: http://www.e-conomic.com/developer/tutorials
|
22
18
|
economic = Economic::Session.new
|
23
19
|
economic.connect_with_token 'the_private_app_id', 'the_access_id_you_got_from_the_grant'
|
@@ -96,10 +92,10 @@ Usage example
|
|
96
92
|
How to enable e-conomic API access
|
97
93
|
----------------------------------
|
98
94
|
|
99
|
-
You need
|
100
|
-
|
101
|
-
Just follow the instructions on [e-copedia](http://wiki.e-conomic.co.uk/add-on-modules/) to enable the API Add-on module.
|
95
|
+
You need a Developer account and setup an app in their web UI. E-conomic users can then grant that app access to their account.
|
102
96
|
|
97
|
+
* Developer portal: https://www.e-conomic.com/developer
|
98
|
+
* Instructions: https://www.e-conomic.com/developer/connect
|
103
99
|
|
104
100
|
It doesn't do everything
|
105
101
|
------------------------
|
data/lib/economic/endpoint.rb
CHANGED
@@ -11,13 +11,7 @@ class Economic::Endpoint
|
|
11
11
|
# Create a new Endpoint
|
12
12
|
#
|
13
13
|
# Economic::Session uses this internally
|
14
|
-
|
15
|
-
# ==== Attributes
|
16
|
-
#
|
17
|
-
# * +app_identifier+ - A string identifiying your application, as described in http://techtalk.e-conomic.com/e-conomic-soap-api-now-requires-you-to-specify-a-custom-x-economicappidentifier-header/
|
18
|
-
#
|
19
|
-
def initialize(app_identifier = nil)
|
20
|
-
@app_identifier = app_identifier
|
14
|
+
def initialize
|
21
15
|
end
|
22
16
|
|
23
17
|
# Invokes soap_action on the API endpoint with the given data.
|
@@ -48,9 +42,6 @@ class Economic::Endpoint
|
|
48
42
|
def client(force_new_instance: false)
|
49
43
|
reset_client if force_new_instance
|
50
44
|
options = client_options
|
51
|
-
if @app_identifier
|
52
|
-
options[:headers] = {"X-EconomicAppIdentifier" => @app_identifier}
|
53
|
-
end
|
54
45
|
@@client ||= Savon.client(options)
|
55
46
|
end
|
56
47
|
|
data/lib/economic/session.rb
CHANGED
@@ -8,14 +8,9 @@ module Economic
|
|
8
8
|
|
9
9
|
def_delegators :endpoint, :logger=, :log_level=, :log=
|
10
10
|
|
11
|
-
attr_accessor :agreement_number, :user_name, :password, :app_identifier
|
12
11
|
attr_reader :authentication_cookies
|
13
12
|
|
14
|
-
def initialize
|
15
|
-
self.agreement_number = agreement_number
|
16
|
-
self.user_name = user_name
|
17
|
-
self.password = password
|
18
|
-
self.app_identifier = app_identifier
|
13
|
+
def initialize
|
19
14
|
yield endpoint if block_given?
|
20
15
|
end
|
21
16
|
|
@@ -38,34 +33,6 @@ module Economic
|
|
38
33
|
end
|
39
34
|
end
|
40
35
|
|
41
|
-
# Connect/authenticate with credentials
|
42
|
-
#
|
43
|
-
# ==== Attributes
|
44
|
-
#
|
45
|
-
# * +agreement_number+ - your economic agreement number
|
46
|
-
# * +user_name+ - your username
|
47
|
-
# * +password+ - your passsword
|
48
|
-
# * +app_identifier+ - A string identifiying your application, as described in http://techtalk.e-conomic.com/e-conomic-soap-api-now-requires-you-to-specify-a-custom-x-economicappidentifier-header/
|
49
|
-
#
|
50
|
-
def connect_with_credentials(agreement_number, user_name, password, app_identifier = nil)
|
51
|
-
self.app_identifier = app_identifier if app_identifier
|
52
|
-
|
53
|
-
endpoint.call(
|
54
|
-
:connect,
|
55
|
-
:agreementNumber => agreement_number,
|
56
|
-
:userName => user_name,
|
57
|
-
:password => password
|
58
|
-
) do |response|
|
59
|
-
store_authentication_cookies(response)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
# Authenticates with E-conomic using credentials
|
64
|
-
# Assumes ::new was called with credentials as arguments.
|
65
|
-
def connect
|
66
|
-
connect_with_credentials(agreement_number, user_name, password, app_identifier)
|
67
|
-
end
|
68
|
-
|
69
36
|
# Provides access to the DebtorContacts
|
70
37
|
def contacts
|
71
38
|
@contacts ||= DebtorContactProxy.new(self)
|
@@ -142,7 +109,7 @@ module Economic
|
|
142
109
|
|
143
110
|
# Returns the SOAP endpoint to connect to
|
144
111
|
def endpoint
|
145
|
-
@endpoint ||= Economic::Endpoint.new
|
112
|
+
@endpoint ||= Economic::Endpoint.new
|
146
113
|
end
|
147
114
|
|
148
115
|
private
|
data/lib/rconomic.rb
CHANGED
data/lib/rconomic/version.rb
CHANGED
data/rconomic.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.version = Rconomic::VERSION
|
18
18
|
s.platform = Gem::Platform::RUBY
|
19
19
|
|
20
|
-
s.add_runtime_dependency "savon", "~> 2.2"
|
20
|
+
s.add_runtime_dependency "savon", "~> 2.2"
|
21
21
|
s.add_development_dependency "rspec", "> 3.0"
|
22
22
|
|
23
23
|
s.files = `git ls-files`.split("\n").reject { |filename| [".gitignore"].include?(filename) }
|
@@ -86,20 +86,4 @@ describe Economic::Endpoint do
|
|
86
86
|
subject.logger = logger
|
87
87
|
end
|
88
88
|
end
|
89
|
-
|
90
|
-
describe "app identifier configuration" do
|
91
|
-
let(:app_id) { "my awesome app v.4.0.9-beta-rc1" }
|
92
|
-
|
93
|
-
subject {
|
94
|
-
described_class.new(app_id)
|
95
|
-
}
|
96
|
-
|
97
|
-
it "adds the app identifier HTTP headers" do
|
98
|
-
client = subject.client(:force_new_instance => true)
|
99
|
-
globals = client.globals
|
100
|
-
expect(
|
101
|
-
globals[:headers]["X-EconomicAppIdentifier"]
|
102
|
-
).to eq(app_id)
|
103
|
-
end
|
104
|
-
end
|
105
89
|
end
|
@@ -1,99 +1,20 @@
|
|
1
1
|
require "./spec/spec_helper"
|
2
2
|
|
3
3
|
describe Economic::Session do
|
4
|
-
let(:credentials) { [123_456, "api", "passw0rd"] }
|
5
4
|
subject { Economic::Session.new }
|
6
5
|
|
7
6
|
let(:endpoint) { subject.endpoint }
|
8
7
|
|
9
8
|
describe "new" do
|
10
|
-
describe "legacy connect" do
|
11
|
-
subject { Economic::Session.new(*credentials) }
|
12
|
-
it "should store authentication details" do
|
13
|
-
expect(subject.agreement_number).to eq(123_456)
|
14
|
-
expect(subject.user_name).to eq("api")
|
15
|
-
expect(subject.password).to eq("passw0rd")
|
16
|
-
end
|
17
|
-
|
18
|
-
it "can also store an app_id" do
|
19
|
-
session = Economic::Session.new(*credentials, "app_id")
|
20
|
-
expect(session.app_identifier).to eq("app_id")
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
9
|
it "yields the endpoint if a block is given" do
|
25
10
|
endpoint_mock = double("Endpoint")
|
26
11
|
allow(Economic::Endpoint).to receive(:new).and_return(endpoint_mock)
|
27
12
|
expect {|b|
|
28
|
-
Economic::Session.new(
|
13
|
+
Economic::Session.new(&b)
|
29
14
|
}.to yield_with_args(endpoint_mock)
|
30
15
|
end
|
31
16
|
end
|
32
17
|
|
33
|
-
describe "connect" do
|
34
|
-
let(:authentication_details) {
|
35
|
-
{
|
36
|
-
:agreementNumber => 123_456,
|
37
|
-
:userName => "api",
|
38
|
-
:password => "passw0rd"
|
39
|
-
}
|
40
|
-
}
|
41
|
-
|
42
|
-
it "can connect old-style" do
|
43
|
-
mock_request(:connect, authentication_details, :success)
|
44
|
-
e = Economic::Session.new(*credentials)
|
45
|
-
e.connect
|
46
|
-
end
|
47
|
-
|
48
|
-
it "connects to e-conomic with authentication details" do
|
49
|
-
mock_request(:connect, authentication_details, :success)
|
50
|
-
subject.connect_with_credentials(*credentials)
|
51
|
-
end
|
52
|
-
|
53
|
-
it "stores the authentication token for later requests" do
|
54
|
-
response = {
|
55
|
-
:headers => {"Set-Cookie" => "cookie value from e-conomic"},
|
56
|
-
:body => fixture(:connect, :success)
|
57
|
-
}
|
58
|
-
stub_request("Connect", authentication_details, response)
|
59
|
-
|
60
|
-
subject.connect_with_credentials(*credentials)
|
61
|
-
|
62
|
-
expect(subject.authentication_cookies.collect { |cookie|
|
63
|
-
cookie.name_and_value.split("=").last
|
64
|
-
}).to eq(["cookie value from e-conomic"])
|
65
|
-
end
|
66
|
-
|
67
|
-
it "updates the authentication token for new sessions" do
|
68
|
-
stub_request(
|
69
|
-
"Connect",
|
70
|
-
nil,
|
71
|
-
:headers => {"Set-Cookie" => "authentication token"}
|
72
|
-
)
|
73
|
-
subject.connect_with_credentials(*credentials)
|
74
|
-
|
75
|
-
stub_request(
|
76
|
-
"Connect",
|
77
|
-
nil,
|
78
|
-
:headers => {"Set-Cookie" => "another token"}
|
79
|
-
)
|
80
|
-
other_session = Economic::Session.new
|
81
|
-
other_session.connect_with_credentials(123_456, "api", "passw0rd")
|
82
|
-
|
83
|
-
expect(subject.authentication_cookies.collect { |cookie|
|
84
|
-
cookie.name_and_value.split("=").last
|
85
|
-
}).to eq(["authentication token"])
|
86
|
-
expect(other_session.authentication_cookies.collect { |cookie|
|
87
|
-
cookie.name_and_value.split("=").last
|
88
|
-
}).to eq(["another token"])
|
89
|
-
end
|
90
|
-
|
91
|
-
it "doesn't use existing authentication details when connecting" do
|
92
|
-
expect(endpoint).to receive(:call).with(:connect, instance_of(Hash))
|
93
|
-
subject.connect_with_credentials(*credentials)
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
18
|
describe "connecting with access ID" do
|
98
19
|
# As per http://www.e-conomic.com/developer/tutorials
|
99
20
|
let(:authentication_details) {
|
@@ -124,30 +45,6 @@ describe Economic::Session do
|
|
124
45
|
}).to eq(["cookie value from e-conomic"])
|
125
46
|
end
|
126
47
|
|
127
|
-
it "updates the authentication token for new sessions" do
|
128
|
-
stub_request(
|
129
|
-
"ConnectWithToken",
|
130
|
-
nil,
|
131
|
-
:headers => {"Set-Cookie" => "authentication token"}
|
132
|
-
)
|
133
|
-
subject.connect_with_token private_app_id, access_id
|
134
|
-
|
135
|
-
stub_request(
|
136
|
-
"Connect",
|
137
|
-
nil,
|
138
|
-
:headers => {"Set-Cookie" => "another token"}
|
139
|
-
)
|
140
|
-
other_session = Economic::Session.new
|
141
|
-
other_session.connect_with_credentials(123_456, "api", "passw0rd")
|
142
|
-
|
143
|
-
expect(subject.authentication_cookies.collect { |cookie|
|
144
|
-
cookie.name_and_value.split("=").last
|
145
|
-
}).to eq(["authentication token"])
|
146
|
-
expect(other_session.authentication_cookies.collect { |cookie|
|
147
|
-
cookie.name_and_value.split("=").last
|
148
|
-
}).to eq(["another token"])
|
149
|
-
end
|
150
|
-
|
151
48
|
it "doesn't use existing authentication details when connecting" do
|
152
49
|
expect(endpoint).to receive(:call).with(
|
153
50
|
:connect_with_token,
|
data/spec/support/factories.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rconomic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jakob Skjerning
|
@@ -17,9 +17,6 @@ dependencies:
|
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.2'
|
20
|
-
- - "<"
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 2.11.2
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -27,9 +24,6 @@ dependencies:
|
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '2.2'
|
30
|
-
- - "<"
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 2.11.2
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: rspec
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -111,7 +105,6 @@ files:
|
|
111
105
|
- lib/economic/support/string.rb
|
112
106
|
- lib/rconomic.rb
|
113
107
|
- lib/rconomic/version.rb
|
114
|
-
- lib/savon_ext/request.rb
|
115
108
|
- rconomic.gemspec
|
116
109
|
- spec/economic/account_spec.rb
|
117
110
|
- spec/economic/cash_book_entry_spec.rb
|
data/lib/savon_ext/request.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Savon
|
4
|
-
class SOAPRequest < HTTPRequest
|
5
|
-
def build(options = {})
|
6
|
-
configure_proxy
|
7
|
-
configure_timeouts
|
8
|
-
configure_headers options[:soap_action]
|
9
|
-
configure_cookies options[:cookies]
|
10
|
-
configure_ssl
|
11
|
-
configure_auth
|
12
|
-
configure_redirect_handling
|
13
|
-
|
14
|
-
@http_request
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|