futureshop 0.1.4 → 0.1.5

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: 98c8d7b64e6c87c143bf69d49a3ca20c480b7bf07086fdf8c5fa45f1ede4b33a
4
- data.tar.gz: b18b15af5c1790f11137305848888744bb88c3248b2aa9e2bc432584ba4e493f
3
+ metadata.gz: de1dda6ccfb095050e2c4555103dcf79fbc9bb816230671a43d03ebd2ab8ce7b
4
+ data.tar.gz: 8f9c5ce46b616c378f131a769709256d3e02753179966495f1b6da797da7cdf8
5
5
  SHA512:
6
- metadata.gz: 40b81c3cd65ef881c8a14d8eb3120351c184e4971d893acb76dde46defb187a85527ffc85c4b01552751c8b1b640dbc6c8c3951877203645a1890ccd9124e7ec
7
- data.tar.gz: fbedd017cec85d9fbb717d556a7727d47672a0c91611a14f62b93452e4bcb2a3ea0fb9c5a26c7cf56366740fc85b8e9cfc530811d9dfcad3f43189dcaa55010b
6
+ metadata.gz: c16675ddac87f365e25bd71661900a81731b1b390112e58c98e0d31cb7a0afcd7f824bb98b5cc92bed40c109a36a735d464f5c2acc6ddd78e378ed09afd2e692
7
+ data.tar.gz: 93b8ae4040cfa6f496871a4aa84c815a94da50f24a99a4b44f974efa06bcf1b7f0289256ac7b282841e23e380ec5732c174b49a2c99ed778f6535b43d81ecac9
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.1.5] - 2021-10-21
4
+
5
+ - Add `Futureshop::Inventory` class
6
+ - Add `inventories` subcommand
7
+
3
8
  ## [0.1.4] - 2021-10-11
4
9
 
5
10
  - Handle order's couponList field, which was introduced on 2021-09-29
data/README.md CHANGED
@@ -21,6 +21,7 @@ Or install it yourself as:
21
21
  ## Usage
22
22
 
23
23
  futureshop orders -fcsv --order-date-start=2016-07-05 --order-date-end=2021-07-20 > orders.2021-07-20.csv
24
+ futureshop inventories --type=regular,preorder
24
25
 
25
26
  ## Development
26
27
 
data/exe/futureshop CHANGED
@@ -4,7 +4,7 @@ require "optparse"
4
4
  require "optparse/time"
5
5
  require "futureshop"
6
6
 
7
- SUPPORTED_COMMANDS = %w[orders]
7
+ SUPPORTED_COMMANDS = %w[orders inventories]
8
8
 
9
9
  def main(argv)
10
10
  global_options = parse_global_options(argv)
@@ -14,6 +14,8 @@ def main(argv)
14
14
  case subcommand
15
15
  when "orders"
16
16
  orders global_options, argv
17
+ when "inventories"
18
+ inventories global_options, argv
17
19
  end
18
20
  end
19
21
 
@@ -43,4 +45,30 @@ def orders(global_options, argv)
43
45
  Futureshop.orders(order_date_start: options[:"order-date-start"], order_date_end: options[:"order-date-end"], format: options[:format])
44
46
  end
45
47
 
48
+ def inventories(global_options, argv)
49
+ require "futureshop/inventory"
50
+
51
+ options = {
52
+ type: ["regular"],
53
+ product_no: [],
54
+ jan_code: []
55
+ }
56
+ options = options.update(parse_options(argv) {|opt|
57
+ opt.on "--type=TYPE", Array
58
+ opt.on "--create-date-start=DATE", Time
59
+ opt.on "--create-date-end=DATE", Time
60
+ opt.on "--product-no=NUMBER", Array
61
+ opt.on "--jan-code=CODE", Array
62
+ })
63
+ if options[:type]
64
+ unknown_types = options[:type].select {|type| ! %w[regular preorder planned realstore].include?(type)}
65
+ unless unknown_types.empty?
66
+ raise "Unknown type(s): #{unknown_types.join(', ')}"
67
+ end
68
+ end
69
+ Futureshop::Inventory.each types: options[:type].collect(&:to_sym), create_date_start: options[:"create-date-start"], create_date_end: options[:"create-date-end"], product_no: options[:"product-no"], jan_code: options[:"jan-code"] do |inventory|
70
+ puts inventory.to_json
71
+ end
72
+ end
73
+
46
74
  main ARGV
@@ -0,0 +1,51 @@
1
+ module Futureshop
2
+ class Inventory
3
+ class << self
4
+ def each_batch(types: [:regular], create_date_start: nil, create_date_end: nil, product_no: [], jan_code: [])
5
+ params = {
6
+ types: types,
7
+ product_no: product_no,
8
+ jan_code: jan_code
9
+ }
10
+ params[:create_date_start] = create_date_start.strftime("%FT%T") if create_date_start
11
+ params[:create_date_end] = create_date_end.strftime("%FT%T") if create_date_end
12
+ res = client.get("/admin-api/v1/inventory", params: params)
13
+ yield res["productList"]
14
+
15
+ next_url = res["nextUrl"]
16
+ while next_url
17
+ sleep Client::INTERVAL
18
+ url = URI.parse(next_url)
19
+ res = client.request_by_uri(:get, url)
20
+ yield res["productList"]
21
+ next_url = res["nextUrl"]
22
+ end
23
+ end
24
+
25
+ def each(**args)
26
+ return enum_for(__method__, **args) unless block_given?
27
+
28
+ each_batch **args do |inventories|
29
+ inventories.each do |inventory|
30
+ yield inventory
31
+ end
32
+ end
33
+ end
34
+
35
+ def all(**args)
36
+ return each.to_a
37
+ end
38
+
39
+ private
40
+
41
+ def client
42
+ @client ||= Futureshop::Client.new(
43
+ shop_key: ENV["FUTURESHOP_SHOP_KEY"],
44
+ client_id: ENV["FUTURESHOP_CLIENT_ID"],
45
+ client_secret: ENV["FUTURESHOP_CLIENT_SECRET"],
46
+ api_domain: ENV["FUTURESHOP_API_DOMAIN"]
47
+ )
48
+ end
49
+ end
50
+ end
51
+ end
@@ -1,3 +1,3 @@
1
1
  module Futureshop
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: futureshop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kitaiti Makoto
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-10 00:00:00.000000000 Z
11
+ date: 2021-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -73,6 +73,7 @@ files:
73
73
  - futureshop.gemspec
74
74
  - lib/futureshop.rb
75
75
  - lib/futureshop/client.rb
76
+ - lib/futureshop/inventory.rb
76
77
  - lib/futureshop/version.rb
77
78
  homepage: https://gitlab.com/KitaitiMakoto/futuresohp
78
79
  licenses: