sixpack-client 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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