magento_remote 0.2.4 → 0.2.5

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: 25e48a3c4c2d32aa637c541ef48cd02a9f649b96
4
- data.tar.gz: 54fb6b0a3365a1ad50c5a881e9ba062d64b51f95
3
+ metadata.gz: 5236fc7f2136ea5ec063adc2ba9eb2cd7e444560
4
+ data.tar.gz: b4cf90268f8054076f04e1133ed5dca4fd2dd61f
5
5
  SHA512:
6
- metadata.gz: 11a3b8a1c7949e820df26bc03c056762b3f0debc99ca0914868883393e55fd6a61253cf4a97b16205b69f043817b85812e488bbf9d194245ba0e0a91d781f225
7
- data.tar.gz: 80f4368b469dc9455d3a3670f5d7994f3d1cf111e776083502e91122b1330cfc7dab9e892b95a3e5304646e6b4806c769745f6ebeae6d779cf386ebd985e0522
6
+ metadata.gz: 4bb0e436342195eb663d819eed4951e55a8473c3553805d17b8561b9e1b644fc68f4e7994f6897fb1e789c72b247e9c284a4e6ec1cf4d0a791eebbeb5ab1739e
7
+ data.tar.gz: 6938ad84956935e0b54325bdd9133dc0dbf98ac2c008cdcd713fd98066f3f450cf3062051433f4f22c3b0b4b0cba5c1be9bedece394d7c323f29c0cd74ef036c
@@ -1,6 +1,7 @@
1
1
  require 'mechanize'
2
2
  require 'logger'
3
3
  require 'json'
4
+ require 'uri'
4
5
 
5
6
  # The Mech Driver, interacting with a Magento shop page.
6
7
  # Note that the Mech does not keep too much state, you have to
@@ -53,8 +54,9 @@ class MagentoMech
53
54
  fail "Empty obligatory parameter"
54
55
  end
55
56
 
56
- url = "#{@base_uri}/checkout/cart/add?product=#{product_id}&qty=#{qty}"
57
- result_page = @mech.post "#{@base_uri}/checkout/cart/add/uenc/#{form_token}/product/#{product_id}/?isajaxcart=true&groupmessage=1&minicart=1&ajaxlinks=1",
57
+ url = URI.join @base_uri, "checkout/cart/add/uenc/#{form_token}/"\
58
+ "product/#{product_id}/?isajaxcart=true&groupmessage=1&minicart=1&ajaxlinks=1"
59
+ result_page = @mech.post url,
58
60
  {product: product_id,
59
61
  qty: qty}
60
62
 
@@ -73,7 +75,7 @@ class MagentoMech
73
75
  if !form_token.nil?
74
76
  return ajax_add_to_cart(product_id, qty, form_token)
75
77
  end
76
- url = "#{@base_uri}/checkout/cart/add?product=#{product_id}&qty=#{qty}"
78
+ url = URI.join @base_uri, "checkout/cart/add?product=#{product_id}&qty=#{qty}"
77
79
 
78
80
  # Check the returned page name
79
81
  result_page = @mech.get url
@@ -81,6 +83,8 @@ class MagentoMech
81
83
  # There are multiple reasons of failure:
82
84
  # * product_id unknown
83
85
  # * product out of stock
86
+ # * product does not exist (unhandled response (Mechanize::ResponseCodeError)
87
+ # )
84
88
 
85
89
  # There are multiple ways to detect failure:
86
90
  # * contains a form with post action ending on product/#{product_id}/
@@ -115,16 +119,22 @@ class MagentoMech
115
119
  qty = qty.to_i - 1
116
120
  end
117
121
  end
118
- while qty.to_i > 0 && !add_to_cart(product_id, qty)
122
+ while qty.to_i > 0 && !add_to_cart(product_id, qty, form_token)
119
123
  qty = qty.to_i - 1
120
124
  end
121
125
  qty.to_i + num_ordered
122
126
  end
123
127
 
128
+ # Login and get the current carts contents
129
+ def get_cart_content!
130
+ login
131
+ get_cart_content
132
+ end
133
+
124
134
  # Get the current carts contents
125
135
  # Returns [[name, qty], [name2, qty2] ... ]
126
136
  def get_cart_content
127
- cart_page = @mech.get("#{@base_uri}/checkout/cart/")
137
+ cart_page = @mech.get(URI.join @base_uri, "checkout/cart/")
128
138
  name_links = cart_page.search('td h2 a')
129
139
  names = name_links.map &:text
130
140
  quantities_inputs = cart_page.search('.qty')
@@ -134,11 +144,11 @@ class MagentoMech
134
144
 
135
145
  # Login with given credentials
136
146
  def login_with username, password
137
- login_page = @mech.get("#{@base_uri}/customer/account/login/")
147
+ login_page = @mech.get(URI.join @base_uri, "customer/account/login/")
138
148
 
139
149
  # Probably we could just send the POST directly.
140
- form = login_page.form_with(:action => "#{@base_uri}/customer/account/loginPost/", :method => 'POST')
141
- form.action = "#{@base_uri}/customer/account/loginPost/"
150
+ form = login_page.form_with(:action => "#", :method => 'POST')
151
+ form.action = URI.join @base_uri, "customer/account/loginPost/"
142
152
  form.fields.find{|f| f.name == 'login[username]'}.value = username
143
153
  form.fields.find{|f| f.name == 'login[password]'}.value = password
144
154
  @mech.submit(form)
@@ -270,6 +280,7 @@ class MagentoMech
270
280
  # Example:
271
281
  # base uri is http://zentimental.net
272
282
  # relative_url 'index.html' # => http://zentimental.net/index.html
283
+ # # TODO use more, and use URI.join
273
284
  def relative_url path
274
285
  if @base_uri.end_with?('/') && !path.start_with?('/')
275
286
  @base_uri + '/' + path
@@ -1,3 +1,3 @@
1
1
  module MagentoRemote
2
- VERSION = "0.2.4".freeze
2
+ VERSION = "0.2.5".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: magento_remote
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Wolfsteller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-25 00:00:00.000000000 Z
11
+ date: 2016-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mechanize
@@ -145,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  version: '0'
146
146
  requirements: []
147
147
  rubyforge_project:
148
- rubygems_version: 2.4.5
148
+ rubygems_version: 2.5.1
149
149
  signing_key:
150
150
  specification_version: 4
151
151
  summary: Login to a magento shop and do stuff.