sixpack-client 1.0.0 → 1.1.0

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZTJlYzVkNmZlMDI0ZjNiMmIwMTA5NmQ1OTY0ZThhN2ZlOTg2ZmI5Nw==
4
+ Njk3MGE1YTljNWIyZjA1MTNiYzY4ZjM0YjY2ODQ3NDU3NzVmNjhkMg==
5
5
  data.tar.gz: !binary |-
6
- YmFmMDIxOTU2ZWE3ZDBlYmE0OWRmOWM5NTA5OTE3YzczZTVmMzc0Mg==
6
+ ZmM2ZDcxZmY2MmNjOWEzNjZkZjVhMDU0YzFhNjM1Y2YzZTNjNGRlMA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YmM0ZDdhYWY5NTAwZTA3ZmM4MGU4Y2ZmZDg3MzMwYWQ0M2JhOWEwNzkyMWEz
10
- OTYzZDFhNTZlMGM4MWUyZDg4ZmZhZWVmYTczYmE3ZmQ0NzNmODJlM2MxN2E4
11
- MzA5NzlmOGU3YWRlODY2Y2I4Njc0NjYwOTBlMmI4M2U2M2Y5M2M=
9
+ ZWVjNjJjODkzN2UyMjQ4M2I2ODg5Y2M1MzBmN2M5MzExZDAzODIzODhmOGFj
10
+ ZTBlOTViNjFkNGFhMzU4OTFlM2EzMTNlNDU2OTgyYmU5ZDQyYmM1M2FhN2Rh
11
+ ZTE5M2ZmMWE5MGJhMDQ0NDQ3Y2NjZTM5MjU2YTM2ZTRlYzk1NDM=
12
12
  data.tar.gz: !binary |-
13
- NTJhMGE1YjNhYmY1YzFhZWJjNjA3MjMxMDAyZGNiZDU4ZjY1YjlkODE0NmI1
14
- NjVmZTIzMDc4ZDAyYzdlYjNlZWYyOWJmMjJiMjY4NzlmODM5ZDMxZWY0MTZj
15
- ZTUzOTM4YWE4YWYzZDA3YjExYzBjOGQ2NGM0M2U4MDRmODM5MzI=
13
+ YTg0YWEwYzEwNmM3NmE5YjZlZDE3M2I2NmE2YjlhYWJkMmEzMmZkNGY4YWY3
14
+ YmQyNGRhOGM3MjQzMDdlNzM2NTQ3MjdmNDFiYWJkZGIxOTRiYTJiNmFkMWNj
15
+ ZWQxNWI4ODE2YjQ3OWJmMDQyNjExNDVmYzU3Y2RmY2RkZGI4ZGI=
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Sixpack
2
2
 
3
- Ruby client library for SeatGeak's Sixpack ab testing framework.
3
+ Ruby client library for SeatGeek's Sixpack ab testing framework.
4
4
 
5
5
  ## Installation
6
6
 
@@ -26,7 +26,10 @@ require 'sixpack'
26
26
  session = Sixpack::Session.new
27
27
 
28
28
  # Participate in a test (creates the test if necessary)
29
- session.participate("new-test", ["alternative-1", "alternative-2"])
29
+ resp = session.participate("new-test", ["alternative-1", "alternative-2"])
30
+ if resp["alternative"]["name"] == "alternative-1"
31
+ css_style = "blue"
32
+ end
30
33
 
31
34
  # Convert
32
35
  session.convert("new-test")
@@ -48,12 +51,17 @@ session = Sixpack::Session.new client_id
48
51
  session.convert("new-test")
49
52
  ```
50
53
 
51
- Sessions can take an optional `options` dictionary that takes `host` and `timeout` as keys. This allows you to customize Sixpack's location.
54
+ Sessions can take an optional `options` hash that takes `:base_url`, and a params hash that takes `:ip_address`, and `:user_agent` a keys. If you would like to instantiate a session with a known client id, you can do that here. IP address and user agent can be passed to assist in bot detection.
52
55
 
53
- options = {'host': 'http://mysixpacklocation.com'}
54
- session = Session(client_id="123", options=options)
56
+ options = {
57
+ :host => 'http://mysixpacklocation.com',
58
+ }
59
+ params = {
60
+ :ip_address => '1.2.3.4'
61
+ }
62
+ session = Session(client_id="123", options=options, params=params)
55
63
 
56
- If Sixpack is unreachable or other errors occur, sixpack-py will provide the control alternative.
64
+ If Sixpack is unreachable or other errors occur, sixpack-rb will provide the control alternative object.
57
65
 
58
66
 
59
67
  ## Contributing
@@ -1,3 +1,3 @@
1
1
  module Sixpack
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
data/lib/sixpack.rb CHANGED
@@ -39,7 +39,7 @@ module Sixpack
39
39
  end
40
40
  end
41
41
 
42
- def participate(experiment_name, alternatives, force=nil)
42
+ def participate(experiment_name, alternatives, force=nil, traffic_fraction=1)
43
43
  if !(experiment_name =~ /^[a-z0-9][a-z0-9\-_ ]*$/)
44
44
  raise ArgumentError, "Bad experiment_name"
45
45
  end
@@ -48,6 +48,10 @@ module Sixpack
48
48
  raise ArgumentError, "Must specify at least 2 alternatives"
49
49
  end
50
50
 
51
+ if traffic_fraction.to_f < 0 || traffic_fraction > 1
52
+ raise ArgumentError, "Invalid Traffic Fraction"
53
+ end
54
+
51
55
  alternatives.each { |alt|
52
56
  if !(alt =~ /^[a-z0-9][a-z0-9\-_ ]*$/)
53
57
  raise ArgumentError, "Bad alternative name: #{alt}"
@@ -57,8 +61,10 @@ module Sixpack
57
61
  params = {
58
62
  :client_id => @client_id,
59
63
  :experiment => experiment_name,
60
- :alternatives => alternatives
64
+ :alternatives => alternatives,
65
+ :traffic_fraction => traffic_fraction
61
66
  }
67
+
62
68
  if !force.nil? && alternatives.include?(force)
63
69
  return {"status" => "ok", "alternative" => {"name" => force}, "experiment" => {"version" => 0, "name" => experiment_name}, "client_id" => @client_id}
64
70
  end
@@ -67,6 +67,13 @@ describe Sixpack do
67
67
  }.to raise_error
68
68
  end
69
69
 
70
+ it "should not allow bad traffic tractions" do
71
+ expect {
72
+ sess = Sixpack::Session.new
73
+ sess.participate('testing', ['trolled', 'not-trolled'], nil, 2)
74
+ }.to raise_error
75
+ end
76
+
70
77
  it "should not allow bad alternatives names" do
71
78
  expect {
72
79
  sess = Sixpack::Session.new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sixpack-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SeatGeek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-19 00:00:00.000000000 Z
11
+ date: 2014-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake