economic-rest 0.2.0 → 0.2.1

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
- 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