lipseys 0.1.0 → 0.1.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
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