lipseys 0.1.0 → 0.1.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
2
  SHA1:
3
- metadata.gz: b0e6d7c35268c59574518eea37ec94caedf6b103
4
- data.tar.gz: 4eb87e7dc445f74eca9c80366e92e9b88ef3abe7
3
+ metadata.gz: ab57eb9fa2c0803b7af43f27d10b63b1fd7055c9
4
+ data.tar.gz: 5fad1f099f209fdaa967cb6395fb9cf4537b36cd
5
5
  SHA512:
6
- metadata.gz: 31b27cb8d50003c6e6035d5417d49e250c55e031349615e05ee9f2af22aadeb9c796b0af023484fed18839aeb45c0ec5b97a867739452e4ea8dbb9ddeb8a4465
7
- data.tar.gz: e3866541d78ed597bcf6263be502f0e7d4c8eef6436e62fa7e63bbadeaa277c293bd20dd01832f6e7ad62b0560f808ed84d115ea48321debe6b4d09d687414a5
6
+ metadata.gz: 4a561fcb032e9a1aa544f055c15cdebbcefefd9c9ca6a7d6069e7027171e1b226bb6114aedc4cff39e94f0559088998b9b1830ff5c143fbf27c461414f08f5e3
7
+ data.tar.gz: 6bed03afd616a07b957a2cf61124f4f84a155085ac610c4aa5b99313a0970ebac8cf46a3a7e85d76acb6629d8da3dc9868e690f64335df8aca15dc7271fa4372
data/README.md CHANGED
@@ -20,7 +20,106 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- TODO: Write usage instructions here
23
+ **Note**: Nearly all methods require `:email` and `:password` keys in the options hash.
24
+
25
+ ```ruby
26
+ options = {
27
+ email: 'dealer@example.com',
28
+ password: 'sekret-passwd'
29
+ }
30
+ ```
31
+
32
+ ### Lipseys::Catalog
33
+
34
+ There are several methods you can use to fetch different kinds (or all) items in the catalog.
35
+ All of the listed methods return the same response structure. See Lipseys::Catalog for details.
36
+
37
+ ```ruby
38
+ # All items
39
+ catalog = Lipseys::Catalog.all(options)
40
+
41
+ # Firearms only
42
+ firearms = Lipseys::Catalog.firearms(options)
43
+
44
+ # NFA / Class 3 items only
45
+ nfa = Lipseys::Catalog.nfa(options)
46
+
47
+ # Optics only
48
+ optics = Lipseys::Catalog.optics(options)
49
+
50
+ # Accessories only
51
+ accessories = Lipseys::Catalog.accessories(options)
52
+ ```
53
+
54
+ ### Lipseys::Inventory
55
+
56
+ There are similar methods for getting your account's inventory (availability, price, etc.).
57
+ All methods return the same response structure. See Lipseys::Inventory for details.
58
+
59
+ ```ruby
60
+ inventory = Lipseys::Inventory.all(options)
61
+ firearms = Lipseys::Inventory.firearms(options)
62
+ nfa = Lipseys::Inventory.nfa(options)
63
+ optics = Lipseys::Inventory.optics(options)
64
+ accessories = Lipseys::Inventory.accessories(options)
65
+ ```
66
+
67
+ ### Lipseys::Order
68
+
69
+ In addition to the `:email` and `:password` keys in the options hash, submitting an order requires
70
+ the following params:
71
+
72
+ ```ruby
73
+ options = {
74
+ email: 'dealer@example.com',
75
+ password: 'sekret-passwd',
76
+
77
+ item_number: '...', # Lipsey's item number
78
+ # - OR -
79
+ upc: '...', # Universal Product Code
80
+
81
+ quantity: 1,
82
+ purchase_order: 'PO-123', # Application specific Purchase Order
83
+
84
+ # Optional order params:
85
+ notify_by_email: true, # If you want an email sent when the order is created
86
+ note: '...', # Any notes attached to the order
87
+ }
88
+
89
+ response = Lipseys::Order.submit!(options)
90
+ ```
91
+
92
+ The response will have this structure: (See Lipseys::Order for more details)
93
+
94
+ ```ruby
95
+ {
96
+ order_number: '...',
97
+ new_order: (true/false),
98
+ success: (true/false),
99
+ description: '...',
100
+ quantity_received: Integer,
101
+ }
102
+ ```
103
+
104
+ ### Lipseys::Invoice
105
+
106
+ In addition to the `:email` and `:password` keys in the options hash, finding an invoice requires
107
+ either an `:order_number` **OR** a `:purchase_order` param.
108
+
109
+ ```ruby
110
+ options = {
111
+ email: 'dealer@example.com',
112
+ password: 'sekret-passwd',
113
+
114
+ order_number: '...', # Lipsey's order number
115
+ # - OR -
116
+ purchase_order: '...', # Application specific Purchase Order submitted with the order
117
+ }
118
+
119
+ invoice = Lipseys::Invoice.all(options)
120
+ ```
121
+
122
+ See Lipseys::Invoice for the response structure details.
24
123
 
25
124
  ## Development
26
125
 
@@ -1,4 +1,62 @@
1
1
  module Lipseys
2
+ # Each method will return an array of catalog items with the following fields:
3
+ #
4
+ # {
5
+ # item_number: content_for(item, 'ItemNo'),
6
+ # description_1: content_for(item, 'Desc1'),
7
+ # description_2: content_for(item, 'Desc2'),
8
+ # upc: content_for(item, 'UPC'),
9
+ # manufacturer_model_number: content_for(item, 'MFGModelNo'),
10
+ # msrp: content_for(item, 'MSRP'),
11
+ # model: content_for(item, 'Model'),
12
+ # caliber: content_for(item, 'Caliber'),
13
+ # manufacturer: content_for(item, 'MFG'),
14
+ # type: content_for(item, 'Type'),
15
+ # action: content_for(item, 'Action'),
16
+ # barrel: content_for(item, 'Barrel'),
17
+ # capacity: content_for(item, 'Capacity'),
18
+ # finish: content_for(item, 'Finish'),
19
+ # length: content_for(item, 'Length'),
20
+ # receiver: content_for(item, 'Receiver'),
21
+ # safety: content_for(item, 'Safety'),
22
+ # sights: content_for(item, 'Sights'),
23
+ # stock_frame_grips: content_for(item, 'StockFrameGrips'),
24
+ # magazine: content_for(item, 'Magazine'),
25
+ # weight: content_for(item, 'Weight'),
26
+ # image: "http://www.lipseys.net/images/#{content_for(item, 'Image')}",
27
+ # chamber: content_for(item, 'Chamber'),
28
+ # drilled_tapped: (content_for(item, 'DrilledTapped') == 'Y'),
29
+ # rate_of_twist: content_for(item, 'RateOfTwist'),
30
+ # item_type: content_for(item, 'ItemType'),
31
+ # feature_1: content_for(item, 'Feature1'),
32
+ # feature_2: content_for(item, 'Feature2'),
33
+ # feature_3: content_for(item, 'Feature3'),
34
+ # shipping_weight: content_for(item, 'ShippingWeight'),
35
+ # bound_book: {
36
+ # model: content_for(item, 'BoundBookModel'),
37
+ # type: content_for(item, 'BoundBookType'),
38
+ # manufacturer: content_for(item, 'BoundBookMFG'),
39
+ # },
40
+ # nfa: {
41
+ # thread_pattern: content_for(item, 'NFAThreadPattern'),
42
+ # attach_method: content_for(item, 'NFAAttachMethod'),
43
+ # baffle: content_for(item, 'NFABaffle'),
44
+ # can_disassemble: (content_for(item, 'NFACanDisassemble') == 'Y'),
45
+ # construction: content_for(item, 'NFAConstruction'),
46
+ # db_reduction: content_for(item, 'NFAdbReduction'),
47
+ # diameter: content_for(item, 'NFADiameter'),
48
+ # form_3_caliber: content_for(item, 'NFAForm3Caliber'),
49
+ # },
50
+ # optic: {
51
+ # magnification: content_for(item, 'Magnification'),
52
+ # maintube: content_for(item, 'Maintube'),
53
+ # objective: content_for(item, 'Objective'),
54
+ # adjustable_objective: (content_for(item, 'AdjustableObjective') == 'Y'),
55
+ # optic_adjustments: content_for(item, 'OpticAdjustments'),
56
+ # reticle: content_for(item, 'Reticle'),
57
+ # illuminated_reticle: (content_for(item, 'IlluminatedReticle') == 'Y'),
58
+ # }
59
+ # }
2
60
  class Catalog < Base
3
61
 
4
62
  API_URL = 'https://www.lipseys.com/API/catalog.ashx'
@@ -1,4 +1,16 @@
1
1
  module Lipseys
2
+ # Each method will return an array of inventory items with the following fields:
3
+ #
4
+ # {
5
+ # item_number: content_for(item, 'ItemNo'),
6
+ # upc: content_for(item, 'UPC'),
7
+ # manufacturer_model_number: content_for(item, 'MFGModelNo'),
8
+ # quantity_on_hand: content_for(item, 'QtyOnHand'),
9
+ # allocation: (content_for(item, 'Allocation') == 'Y'),
10
+ # price: content_for(item, 'Price'),
11
+ # on_sale: (content_for(item, 'OnSale') == 'Y'),
12
+ # retail_map: content_for(item, 'RetailMAP')
13
+ # }
2
14
  class Inventory < Base
3
15
 
4
16
  API_URL = 'https://www.lipseys.com/API/pricequantitycatalog.ashx'
@@ -1,4 +1,6 @@
1
1
  module Lipseys
2
+ # In addition to the `:email` and `:password` options, finding invoices requires
3
+ # either an `:order_number` **OR** a `:purchase_order`.
2
4
  class Invoice < SoapClient
3
5
 
4
6
  def initialize(options = {})
@@ -16,6 +18,30 @@ module Lipseys
16
18
  new(*args).all
17
19
  end
18
20
 
21
+ # The response structure will look like this:
22
+ #
23
+ # {
24
+ # invoices_found: 1,
25
+ # description: "1 Invoice(s) found.",
26
+ # invoices: {
27
+ # invoice_detail: {
28
+ # invoice_no: "...",
29
+ # ship_to_location: "...",
30
+ # tracking_no: "...",
31
+ # line_items: {
32
+ # item_detail: {
33
+ # item_no: "...",
34
+ # upc: "...",
35
+ # qty: "...",
36
+ # serialized_item: "...",
37
+ # serial_numbers: {
38
+ # string: "..."
39
+ # }
40
+ # }
41
+ # }
42
+ # }
43
+ # }
44
+ # }
19
45
  def all
20
46
  response = soap_client.call(:get_invoices, message: build_inquiry_data)
21
47
 
data/lib/lipseys/order.rb CHANGED
@@ -1,4 +1,15 @@
1
1
  module Lipseys
2
+ # Required options when submitting an order:
3
+ #
4
+ # * `:email` and `:password`
5
+ # * `:item_number` OR `:upc`
6
+ # * `:quantity`
7
+ # * `:purchase_order`
8
+ #
9
+ # Optional order params:
10
+ #
11
+ # * `:notify_by_email` (boolean)
12
+ # * `:note`
2
13
  class Order < SoapClient
3
14
 
4
15
  def initialize(options = {})
@@ -17,10 +28,10 @@ module Lipseys
17
28
 
18
29
 
19
30
  def self.submit(*args)
20
- new(*args).submit
31
+ new(*args).submit!
21
32
  end
22
33
 
23
- def submit
34
+ def submit!
24
35
  response = soap_client.call(:submit_order, message: build_order_data)
25
36
 
26
37
  raise Lipseys::NotAuthenticated if not_authenticated?(response)
@@ -1,3 +1,3 @@
1
1
  module Lipseys
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lipseys
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dale Campbell