fulfil-io 0.4.5 → 0.4.7

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
  SHA256:
3
- metadata.gz: 520488638d7340fb0278fc798770d821f87f0a7427765118c418f2db16877af1
4
- data.tar.gz: 7c1dfb2aac58524eef56a7d38729ffd01f3350ff3413bd7e0b6fa8bf6ab37411
3
+ metadata.gz: 21d5119cc38db9e9a414775dcfc9b37d53ca5fa3ff05218c4ae81bbc912d0695
4
+ data.tar.gz: a4bf8e9ae17a2993c1a3644d298e39f71c78b1eddc40f6bb20d35bdb25ad1ba5
5
5
  SHA512:
6
- metadata.gz: 035bc157721ab0b620cf30b99afdaf3825a2f8732e289a7b9e2b309bc99d25ec81cd3f1612ce88df4dcdb98a05a56fff295e8461f7a525e741e5d3200be8c9b6
7
- data.tar.gz: 0bb63dba2c5ee6d608d7b4d5b22895538ea288dde9423fac5bf133c37b24bb3a00b68dd2329a1b1874d0293e755165d0ce033df72e319de3e7204d9461de151c
6
+ metadata.gz: b1fc2fe57cb22c234b12ffe3c0182030baa3be525971eaa7a2f21470e36f5ef9f6957919ba3675574c1159c79ff3b40f28b11167927ce8f852e70fed667f01b3
7
+ data.tar.gz: 1406056b1b4f566163829b91dd96822c1705286528581567f74d1c383146652a10e0788fd1b80bab81fa79088a32a65440c72483f70fc8c22ae073e9115f19fa
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.4.7
2
+
3
+ * Bugfix: Accidentally removed the model parameter from the URL.
4
+
5
+ ## 0.4.6
6
+
7
+ * Add InteractiveReport support.
8
+
1
9
  ## 0.4.5
2
10
 
3
11
  * Add #delete to client.
data/README.md CHANGED
@@ -109,6 +109,19 @@ sale['channel'] = 4
109
109
 
110
110
  fulfil.put(model: sale_model, body: sale)
111
111
  ```
112
+ ### Interactive Reports
113
+
114
+ As of v0.4.6, interactive report support exists in a basic form.
115
+ You're able to execute reports with basic params. Responses are
116
+ transformed to JSON structures.
117
+
118
+ ```ruby
119
+ fulfil = Fulfil::Client.new
120
+
121
+ report = Fulfil::Report.new(client: fulfil, report_name: 'account.tax.summary.ireport')
122
+
123
+ report.execute(start_date: Date.new(2020, 12, 1), end_date: Date.new(2020, 12, 31))
124
+ ```
112
125
 
113
126
  ## Development
114
127
 
data/lib/fulfil/client.rb CHANGED
@@ -11,8 +11,11 @@ module Fulfil
11
11
 
12
12
  class Client
13
13
  class NotAuthorizedError < StandardError; end
14
+
14
15
  class UnknownHTTPError < StandardError; end
16
+
15
17
  class ConnectionError < StandardError; end
18
+
16
19
  class ResponseError < StandardError; end
17
20
 
18
21
  def initialize(subdomain: SUBDOMAIN, token: OAUTH_TOKEN, headers: { 'X-API-KEY' => API_KEY }, debug: false)
@@ -71,7 +74,7 @@ module Fulfil
71
74
  parse(results: results)
72
75
  end
73
76
 
74
- def put(model:, id:, endpoint: nil, body: {})
77
+ def put(model: nil, id: nil, endpoint: nil, body: {})
75
78
  uri = URI(model_url(model: model, id: id, endpoint: endpoint))
76
79
 
77
80
  result = request(verb: :put, endpoint: uri, json: body)
@@ -85,6 +88,12 @@ module Fulfil
85
88
  parse(result: result)
86
89
  end
87
90
 
91
+ def interactive_report(endpoint:, body: nil)
92
+ uri = URI("#{base_url}/model/#{endpoint}")
93
+ result = request(verb: :put, endpoint: uri, json: body)
94
+ parse(result: result)
95
+ end
96
+
88
97
  private
89
98
 
90
99
  def parse(result: nil, results: [])
@@ -103,15 +112,19 @@ module Fulfil
103
112
  results.map { |result| Fulfil::ResponseParser.parse(item: result) }
104
113
  end
105
114
 
115
+ def domain
116
+ "https://#{@subdomain}.fulfil.io"
117
+ end
118
+
106
119
  def base_url
107
- "https://#{@subdomain}.fulfil.io/api/v2/model"
120
+ [domain, 'api', 'v2'].join('/')
108
121
  end
109
122
 
110
123
  def model_url(model:, id: nil, endpoint: nil)
111
- [base_url, model, id, endpoint].compact.join('/')
124
+ [base_url, 'model', model, id, endpoint].compact.join('/')
112
125
  end
113
126
 
114
- def request(verb: :get, endpoint:, **args)
127
+ def request(endpoint:, verb: :get, **args)
115
128
  response = client.request(verb, endpoint, args)
116
129
 
117
130
  if response.status.ok? || response.status.created?
@@ -131,8 +144,8 @@ module Fulfil
131
144
  rescue HTTP::ConnectionError => e
132
145
  puts "Couldn't connect"
133
146
  raise ConnectionError, "Can't connect to #{base_url}"
134
- rescue HTTP::ResponseError => ex
135
- raise ResponseError, "Can't process response: #{ex}"
147
+ rescue HTTP::ResponseError => e
148
+ raise ResponseError, "Can't process response: #{e}"
136
149
  []
137
150
  end
138
151
 
@@ -0,0 +1,33 @@
1
+ module Fulfil
2
+ class InteractiveReport
3
+ def initialize(client:, report:)
4
+ @client = client
5
+ @report = report
6
+ end
7
+
8
+ def execute(start_date:, end_date:)
9
+ @client.interactive_report(
10
+ endpoint: report_url,
11
+ body: [{
12
+ start_date: serialize_date(start_date),
13
+ end_date: serialize_date(end_date)
14
+ }]
15
+ )
16
+ end
17
+
18
+ private
19
+
20
+ def report_url
21
+ "#{@report}/execute"
22
+ end
23
+
24
+ def serialize_date(date)
25
+ {
26
+ __class__: 'date',
27
+ year: date.year,
28
+ month: date.month,
29
+ day: date.day
30
+ }
31
+ end
32
+ end
33
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Fulfil
4
- VERSION = '0.4.5'
4
+ VERSION = '0.4.7'
5
5
  end
data/lib/fulfil.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'fulfil/version'
2
2
  require 'fulfil/client'
3
3
  require 'fulfil/model'
4
+ require 'fulfil/interactive_report'
4
5
  require 'fulfil/response_parser'
5
6
 
6
7
  module Fulfil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fulfil-io
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Moore
@@ -111,6 +111,7 @@ files:
111
111
  - Rakefile
112
112
  - lib/fulfil.rb
113
113
  - lib/fulfil/client.rb
114
+ - lib/fulfil/interactive_report.rb
114
115
  - lib/fulfil/model.rb
115
116
  - lib/fulfil/query.rb
116
117
  - lib/fulfil/response_parser.rb