squake 0.2.1 → 0.2.3

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
2
  SHA256:
3
- metadata.gz: '00325909416eb7545b395e8a0ffa0ee164b6c9ec125f5f9900c5f3efe7f1e058'
4
- data.tar.gz: 003ce1f90f3e379f995169079672319a8a044db9f46684582a59d7c333b082d0
3
+ metadata.gz: ee6305b25a05791eab5def5da0136c3d3ce4c9f21d2a08335376e48ae258ce38
4
+ data.tar.gz: 5627d8bcb46e2ae7cc3b22f5452f81e57c0c68f6185ddef0252c055b8b08d9a9
5
5
  SHA512:
6
- metadata.gz: '06795250b08b0b20e15d7283c7f29e9761a9f21a3553ed269f4c2b49bffee2afdae3d5143577ded233cafe1b86fde494471ef60363c635c8bcbd7d4cd9e2322c'
7
- data.tar.gz: 6eebe00fa09b233feb52fc156e1bd7b922d4831d53e1da6f90381dbc9830d70f14e6ea935801cfc79f4ab328ff034ece20b8fde985433c07c6797d07cfe6fc19
6
+ metadata.gz: cfdd7561a7e8fd2a517a3da273bde5bf7f8e4a6ffc4135c7d0333845072e980f1f933967dab6435f647c0cc211f5fa1d5a401be7e68f9094236e51671b73f0b6
7
+ data.tar.gz: 914e22650297a827546698deaf3510a99aedf7608cc84539976cc8e19cfeb4fdf7deb9ddc596144de2c1e26fb0269f48708b425609e4b6cd8f4c90b970058034
@@ -11,7 +11,7 @@ module Squake
11
11
  sig do
12
12
  params(
13
13
  client: Squake::Client,
14
- items: T::Array[Squake::Model::Items::BaseType],
14
+ items: T::Array[T.any(Squake::Model::Items::BaseType, T::Hash[T.any(String, Symbol), T.untyped])],
15
15
  product: String,
16
16
  currency: String,
17
17
  carbon_unit: String,
@@ -19,11 +19,16 @@ module Squake
19
19
  ).returns(Squake::Model::Pricing)
20
20
  end
21
21
  def self.quote(client:, items:, product:, currency: 'EUR', carbon_unit: 'gram', expand: [])
22
+ # @TODO: add typed objects for all possible items. Until then, we allow either a Hash or a T::Struct
23
+ items.map! do |item|
24
+ item.is_a?(T::Struct) ? item.serialize : item
25
+ end
26
+
22
27
  result = client.call(
23
28
  path: ENDPOINT,
24
29
  method: :post,
25
30
  params: {
26
- items: items.map(&:serialize),
31
+ items: items,
27
32
  product: product,
28
33
  currency: currency,
29
34
  carbon_unit: carbon_unit,
@@ -1,6 +1,8 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
+ require_relative 'carbon_unit'
5
+
4
6
  module Squake
5
7
  module Model
6
8
  class Carbon < T::Struct
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Squake
5
- VERSION = '0.2.1'
5
+ VERSION = '0.2.3'
6
6
  end
data/lib/squake.rb CHANGED
@@ -8,3 +8,8 @@ require 'net/http'
8
8
  Dir[File.join(__dir__, './**/*', '*.rb')].each { require(_1) }
9
9
 
10
10
  module Squake; end
11
+
12
+ Oj.default_options = {
13
+ mode: :compat, # required to dump hashes with symbol-keys
14
+ symbol_keys: true,
15
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - SQUAKE