economic-rest 0.2.0 → 0.2.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
- SHA256:
3
- metadata.gz: 708eea9e22edcc7c7ebdb0d619bcc7a61e088209ee0da3db606db8aeda83cd75
4
- data.tar.gz: e7acc224d6e5f1dada3be67e7cc9f505b2a90c057140a3eb1f6b150d22367114
2
+ SHA1:
3
+ metadata.gz: 70dd914f6e7821a8c727eeb8d6f1bb3ccd5cb1ad
4
+ data.tar.gz: 263b1e229629e472e794f4722942ae976e9dcbe5
5
5
  SHA512:
6
- metadata.gz: b968674ace73f8c88f64d066e55819aa79800a2fba25bc600c5b490bc9ad6773ac32ba985635c5fecf4903d7239fd0d4497b1b979bfbb72a571455dcefb6b7a7
7
- data.tar.gz: ebaef0843aabde82c6160a84565a440181a95f4d3115b711bdeb449f11598df4dee4a404a7eef6a3d9b677a96c32f4f33fab0801e5340248ce410e7fa350f513
6
+ metadata.gz: 5f528aeceed253f32041d2e5acf86a88e7889f00634ff3798793621bba6a60e5f705cc51061062c411a343866f8a1acc24607343c1b8543484079ad4d541b9f1
7
+ data.tar.gz: d91757bca5942f4c9f7b9613e85198d3cfee707633cc2bff1551707adffcd5a54211d2da67d462c4542c67462802a5cabef5afc47fa4c503e3701f669512bb1c
data/.gitignore CHANGED
@@ -5,3 +5,6 @@
5
5
  # git config --global core.excludesfile '~/.gitignore_global'
6
6
 
7
7
  /pkg*
8
+
9
+ # Ignore coverage
10
+ /coverage
data/Gemfile CHANGED
@@ -4,5 +4,3 @@ git_source(:bitbucket) { |_repo_name| 'https://bitbucket.org/traels/economic-res
4
4
 
5
5
  # Specify your gem's dependencies in economic-rest.gemspec
6
6
  gemspec
7
-
8
- gem 'webmock', '~> 3.5'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- economic-rest (0.1.9)
4
+ economic-rest (0.2.0)
5
5
  rest-client
6
6
 
7
7
  GEM
@@ -11,11 +11,13 @@ GEM
11
11
  public_suffix (>= 2.0.2, < 4.0)
12
12
  crack (0.4.3)
13
13
  safe_yaml (~> 1.0.0)
14
+ docile (1.3.1)
14
15
  domain_name (0.5.20180417)
15
16
  unf (>= 0.0.5, < 1.0.0)
16
17
  hashdiff (0.3.8)
17
18
  http-cookie (1.0.3)
18
19
  domain_name (~> 0.5)
20
+ json (2.1.0)
19
21
  m (1.5.1)
20
22
  method_source (>= 0.6.7)
21
23
  rake (>= 0.9.2.2)
@@ -32,6 +34,11 @@ GEM
32
34
  mime-types (>= 1.16, < 4.0)
33
35
  netrc (~> 0.8)
34
36
  safe_yaml (1.0.4)
37
+ simplecov (0.16.1)
38
+ docile (~> 1.1)
39
+ json (>= 1.8, < 3)
40
+ simplecov-html (~> 0.10.0)
41
+ simplecov-html (0.10.2)
35
42
  unf (0.1.4)
36
43
  unf_ext
37
44
  unf_ext (0.0.7.5)
@@ -49,6 +56,7 @@ DEPENDENCIES
49
56
  m
50
57
  minitest (~> 5.0)
51
58
  rake (~> 10.0)
59
+ simplecov
52
60
  webmock (~> 3.5)
53
61
 
54
62
  BUNDLED WITH
@@ -27,5 +27,8 @@ The documentation can be found at https://restdocs.e-conomic.com'
27
27
  spec.add_development_dependency 'm'
28
28
  spec.add_development_dependency 'minitest', '~> 5.0'
29
29
  spec.add_development_dependency 'rake', '~> 10.0'
30
+ spec.add_development_dependency 'simplecov'
31
+ spec.add_development_dependency 'webmock', '~> 3.5'
32
+
30
33
  spec.add_dependency 'rest-client'
31
34
  end
data/lib/economic/base.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Economic
2
2
  class Base
3
- def initialize(hash)
3
+ def initialize(hash = {})
4
4
  values_based_on_hash(hash)
5
5
  end
6
6
 
@@ -16,18 +16,13 @@ module Economic
16
16
  (@relations ||= []).push(name: name, fields: fields)
17
17
  end
18
18
 
19
- def self.field(name, id: false, model: nil)
19
+ def self.field(name, id: false)
20
20
  economic_cased_attibute_name = name.to_s
21
21
  attr_accessor economic_cased_attibute_name
22
22
  alias_method snake_case(economic_cased_attibute_name), economic_cased_attibute_name
23
23
  alias_method "#{snake_case(economic_cased_attibute_name)}=", "#{economic_cased_attibute_name}="
24
24
  alias_method 'id_key', economic_cased_attibute_name if id
25
25
  add_attribute economic_cased_attibute_name
26
- if model
27
- define_method("create_#{economic_cased_attibute_name[0...-1]}") do |class_instance|
28
- repo.save(self, submodel: class_instance)
29
- end
30
- end
31
26
  end
32
27
 
33
28
  def self.relation(name, fields:)
@@ -5,47 +5,31 @@ require 'economic/session'
5
5
  module Economic
6
6
  class BaseRepo
7
7
  URL = 'https://restapi.e-conomic.com/'.freeze
8
+
8
9
  class << self
9
10
  def headers
10
11
  { 'X-AppSecretToken': Session.app_secret_token, 'X-AgreementGrantToken': Session.agreement_grant_token, 'Content-Type': 'application/json' }
11
12
  end
12
13
 
13
- def fetch(endpoint:, page_or_id: nil, pageindex: 0, filter_text: '')
14
- url = ''
15
- url << URL
16
- url << endpoint.to_s if endpoint
17
- url << if page_or_id.nil? || page_or_id.to_s.empty?
18
- "?skippages=#{pageindex}&pagesize=1000"
19
- else
20
- "/#{page_or_id}"
21
- end
14
+ def fetch(pageindex: 0, filter_text: '')
15
+ url = endpoint_url
16
+ url << "?skippages=#{pageindex}&pagesize=1000"
22
17
  url << "&filter=#{filter_text}" unless filter_text == ''
23
- response = RestClient.get(url, headers) do |response, _request, _result|
24
- response
25
- end
18
+
19
+ response = RestClient.get(url, headers)
26
20
  test_response(response)
27
21
  end
28
22
 
29
- def save(model, submodel: '')
30
- url = ''
31
- url << URL
32
- url << endpoint_name.to_s if endpoint_name
33
- url << "/#{model.id_key}"
34
- url << sub_endpoint_name(submodel) unless submodel == ''
35
- relevant_model = if submodel == ''
36
- model
37
- else
38
- submodel
39
- end
40
- response = if relevant_model.id_key.nil?
41
- RestClient.post(url, relevant_model.to_h.to_json, headers) do |response, _request, _result|
42
- response
43
- end
44
- else
45
- RestClient.put(url, relevant_model.to_h.to_json, headers) do |response, _request, _result|
46
- response
47
- end
48
- end
23
+ def save(model)
24
+ post_or_put = model.id_key.nil? ? :post : :put
25
+
26
+ response = RestClient.public_send(post_or_put, endpoint_url + '/' + model.id_key.to_s, model.to_h.to_json, headers)
27
+
28
+ test_response(response)
29
+ end
30
+
31
+ def send(model)
32
+ response = RestClient.post(endpoint_url, model.to_h.to_json, headers)
49
33
  test_response(response)
50
34
  end
51
35
 
@@ -56,7 +40,7 @@ module Economic
56
40
 
57
41
  # Loop until last page, last page does not have a 'nextPage'
58
42
  while pagination['nextPage'] || pageindex.zero?
59
- response = fetch(endpoint: endpoint_name, pageindex: pageindex, filter_text: filter_text)
43
+ response = fetch(pageindex: pageindex, filter_text: filter_text)
60
44
 
61
45
  hash = JSON.parse(response.body)
62
46
  hash['collection'].each do |entry_hash|
@@ -84,7 +68,7 @@ module Economic
84
68
  end
85
69
 
86
70
  def find(entry_number)
87
- response = fetch(endpoint: endpoint_name, page_or_id: entry_number)
71
+ response = test_response(RestClient.get(endpoint_url + '/' + entry_number.to_s, headers))
88
72
  entry_hash = JSON.parse(response.body)
89
73
  model.new(entry_hash)
90
74
  end
@@ -107,10 +91,8 @@ module Economic
107
91
  end_p.downcase
108
92
  end
109
93
 
110
- def sub_endpoint_name(submodel)
111
- end_p = submodel.class.name.sub('Economic::', '')
112
- end_p = "/#{end_p}s"
113
- end_p.downcase
94
+ def endpoint_url
95
+ URL + endpoint_name
114
96
  end
115
97
 
116
98
  def test_response(response)
@@ -24,16 +24,16 @@ module Economic
24
24
  field :website
25
25
  field :zip
26
26
 
27
- field :attention
28
- field :customerContact
29
- field :customerGroup
30
- field :defaultDeliveryLocation
31
- field :invoices
32
- field :layout
33
- field :paymentTerms
34
- field :salesPerson
35
- field :templates
36
- field :totals
37
- field :vatZone
27
+ # field :attention
28
+ # field :customerContact
29
+ relation :customerGroup, fields: [:customerGroupNumber]
30
+ # field :defaultDeliveryLocation
31
+ # field :invoices
32
+ # field :layout
33
+ relation :paymentTerms, fields: [:paymentTermsNumber]
34
+ # field :salesPerson
35
+ # field :templates
36
+ # field :totals
37
+ relation :vatZone, fields: [:vatZoneNumber]
38
38
  end
39
39
  end
@@ -0,0 +1,9 @@
1
+ module Economic
2
+ class CustomerGroup < Base
3
+ field :account
4
+ field :customerGroupNumber, id: true
5
+ field :customers
6
+ field :layout
7
+ field :name
8
+ end
9
+ end
@@ -3,7 +3,7 @@ module Economic
3
3
  field :entries
4
4
  field :journalNumber, id: true
5
5
  field :name
6
- field :vouchers, model: :Voucher
6
+ field :vouchers
7
7
 
8
8
  field :settings
9
9
  field :templates
@@ -0,0 +1,19 @@
1
+ module Economic
2
+ class JournalVoucherRepo < Economic::BaseRepo
3
+ def self.save(voucher)
4
+ response = RestClient.post(
5
+ Economic::JournalRepo.endpoint_url + '/' + voucher.journal.journalNumber.to_s + '/vouchers',
6
+ voucher.to_h.to_json,
7
+ headers
8
+ )
9
+
10
+ test_response(response)
11
+
12
+ Voucher.new(JSON.parse(response.body).first)
13
+ end
14
+
15
+ def self.endpoint_name
16
+ raise StandardError, 'only save is available on this repository'
17
+ end
18
+ end
19
+ end
@@ -1,16 +1,6 @@
1
1
  module Economic
2
2
  module Orders
3
3
  class DraftsRepo < Economic::Orders::Repo
4
- def self.send(model)
5
- url = ''
6
- url << URL
7
- url << 'orders'
8
- url << '/drafts'
9
- response = RestClient.post(url, model.to_h.to_json, headers) do |response, _request, _result|
10
- response
11
- end
12
- test_response(response)
13
- end
14
4
  end
15
5
  end
16
6
  end
@@ -1,16 +1,6 @@
1
1
  module Economic
2
2
  module Orders
3
3
  class SentRepo < Economic::Orders::Repo
4
- def self.send(model)
5
- url = ''
6
- url << URL
7
- url << 'orders'
8
- url << '/sent'
9
- response = RestClient.post(url, model.to_h.to_json, headers) do |response, _request, _result|
10
- response
11
- end
12
- test_response(response)
13
- end
14
4
  end
15
5
  end
16
6
  end
@@ -10,11 +10,11 @@ module Economic
10
10
  field :recommendedPrice
11
11
  field :salesPrice
12
12
 
13
- field :departmentalDistribution
14
- field :inventory
15
- field :invoices
16
- field :pricing
17
- field :productGroup
18
- field :unit
13
+ # field :departmentalDistribution
14
+ # field :inventory
15
+ # field :invoices
16
+ # field :pricing
17
+ relation :productGroup, fields: [:productGroupNumber]
18
+ # field :unit
19
19
  end
20
20
  end
@@ -0,0 +1,5 @@
1
+ module Economic
2
+ class ProductGroup < Base
3
+ field :productGroupNumber
4
+ end
5
+ end
@@ -1,5 +1,5 @@
1
1
  module Economic
2
2
  module Rest
3
- VERSION = '0.2.0'.freeze
3
+ VERSION = '0.2.1'.freeze
4
4
  end
5
5
  end
data/lib/economic/rest.rb CHANGED
@@ -5,6 +5,8 @@ require 'economic/base_repo'
5
5
  require 'economic/base'
6
6
 
7
7
  require 'economic/vat_zone'
8
+ require 'economic/customer_group'
9
+ require 'economic/product_group'
8
10
 
9
11
  require 'economic/delivery'
10
12
  require 'economic/layout'
@@ -28,9 +30,10 @@ require 'economic/orders/sent_repo'
28
30
 
29
31
  require 'economic/journal_repo'
30
32
  require 'economic/journal'
33
+ require 'economic/journal_voucher_repo'
34
+ require 'economic/voucher'
31
35
 
32
36
  require 'economic/accounting_year'
33
- require 'economic/voucher'
34
37
 
35
38
  module Economic
36
39
  class Demo
@@ -3,8 +3,8 @@ module Economic
3
3
  field :voucherNumber, id: true
4
4
 
5
5
  field :entries
6
- field :journal
7
6
 
7
+ relation :journal, fields: [:journalNumber]
8
8
  relation :accountingYear, fields: [:year]
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: economic-rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Klogborg
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-06 00:00:00.000000000 Z
11
+ date: 2019-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,34 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: webmock
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.5'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.5'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: rest-client
71
99
  requirement: !ruby/object:Gem::Requirement
@@ -101,10 +129,12 @@ files:
101
129
  - lib/economic/base.rb
102
130
  - lib/economic/base_repo.rb
103
131
  - lib/economic/customer.rb
132
+ - lib/economic/customer_group.rb
104
133
  - lib/economic/customer_repo.rb
105
134
  - lib/economic/delivery.rb
106
135
  - lib/economic/journal.rb
107
136
  - lib/economic/journal_repo.rb
137
+ - lib/economic/journal_voucher_repo.rb
108
138
  - lib/economic/layout.rb
109
139
  - lib/economic/notes.rb
110
140
  - lib/economic/order.rb
@@ -115,6 +145,7 @@ files:
115
145
  - lib/economic/payment_terms.rb
116
146
  - lib/economic/pdf.rb
117
147
  - lib/economic/product.rb
148
+ - lib/economic/product_group.rb
118
149
  - lib/economic/product_repo.rb
119
150
  - lib/economic/project.rb
120
151
  - lib/economic/recipient.rb
@@ -143,7 +174,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
174
  - !ruby/object:Gem::Version
144
175
  version: '0'
145
176
  requirements: []
146
- rubygems_version: 3.0.1
177
+ rubyforge_project:
178
+ rubygems_version: 2.5.1
147
179
  signing_key:
148
180
  specification_version: 4
149
181
  summary: Ruby wrapper for the e-conomic REST API, that aims at making working with