optimizely 1.1.0 → 1.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: ab34ef7520c79ccfce8f1df5f5547f44cece9866
4
- data.tar.gz: 6fa648252e54eb29fdbe58fda3cbfef64d8e3d65
3
+ metadata.gz: 25fe019e21c9088598a3a9cc36b1d3618d29706a
4
+ data.tar.gz: ee6fd98c0d6b9313f6845f35763050ebad09b320
5
5
  SHA512:
6
- metadata.gz: b48ab34f7bdc479b9d2ea5105dc3d29a92da7b1ec2def893c44e68ff563941c2b86c9ca3be2ad1b451de55e07580bc320a4b7069c51abfaf65f016b2dabf811b
7
- data.tar.gz: b5a027217a0bd5ea375b18e229a460ced92443d23d590de10192ec66f433f93e52f2f3e55adbff89c4454f3bdbd629474fe24b320df0564b12383f124d7a8866
6
+ metadata.gz: 75e1beb277260bf1dde76c43a93c501ba30318a15032ae21aff410a99a3284992f40263d390d2314d8bd6c15b73f921713c6a031f5c1addaeaea8e8237036eff
7
+ data.tar.gz: 59dc6604a0aa66a855be43bf7d300e547ae0fa896ef6340d29da008d4e0d3dfff3ce7f302c89280a28b1c2ea068051878a05f2df93086c83b3a82b8bb0f932e5
data/README.md CHANGED
@@ -60,6 +60,9 @@ Don't forget to bundle install:
60
60
 
61
61
  ### Changelog
62
62
 
63
+ #### 1.1.1
64
+ * Return a hash object for the data you've just requested.
65
+
63
66
  #### 1.1
64
67
  * Fix some typos in the errors for having no variable in a function and added extra documentation.
65
68
  * Add support for reading specific projects, experiments, variations and audiences.
@@ -1,5 +1,14 @@
1
1
  module Optimizely
2
2
  class Audience
3
3
 
4
+ attr_reader :id, :name, :project_id, :description
5
+
6
+ def initialize(json)
7
+ @id = json['id']
8
+ @name = json['name']
9
+ @project_id = json['project_id']
10
+ @description = json['description']
11
+ end
12
+
4
13
  end
5
14
  end
@@ -28,7 +28,10 @@ module Optimizely
28
28
  # projects = optimizely.projects # Look up all projects.
29
29
  #
30
30
  def projects
31
- @projects = self.get("projects") if @projects.nil?
31
+ if @projects.nil?
32
+ response = self.get("projects")
33
+ @projects = response.collect { |project_json| Project.new(project_json) }
34
+ end
32
35
  @projects
33
36
  end
34
37
 
@@ -40,7 +43,11 @@ module Optimizely
40
43
  #
41
44
  def project(id)
42
45
  raise OptimizelyError::NoProjectID, "A Project ID is required to retrieve the project." if id.nil?
43
- @project = self.get("projects/#{id}")
46
+
47
+ if @project.nil?
48
+ response = self.get("projects/#{id}")
49
+ @project = Project.new(response)
50
+ end
44
51
  @project
45
52
  end
46
53
 
@@ -52,7 +59,11 @@ module Optimizely
52
59
  #
53
60
  def experiments(project_id)
54
61
  raise OptimizelyError::NoProjectID, "A Project ID is required to retrieve experiments." if project_id.nil?
55
- @experiments = self.get("projects/#{project_id}/experiments") if @experiments.nil?
62
+
63
+ if @experiments.nil?
64
+ response = self.get("projects/#{project_id}/experiments")
65
+ @experiments = response.collect { |response_json| Experiment.new(response_json) }
66
+ end
56
67
  @experiments
57
68
  end
58
69
 
@@ -64,7 +75,11 @@ module Optimizely
64
75
  #
65
76
  def experiment(id)
66
77
  raise OptimizelyError::NoExperimentID, "An Experiment ID is required to retrieve the experiment." if id.nil?
67
- @experiment = self.get("experiments/#{id}")
78
+
79
+ if @experiment.nil?
80
+ response = self.get("experiments/#{id}")
81
+ @experiment = Experiment.new(response)
82
+ end
68
83
  @experiment
69
84
  end
70
85
 
@@ -76,8 +91,12 @@ module Optimizely
76
91
  #
77
92
  def variations(experiment_id)
78
93
  raise OptimizelyError::NoExperimentID, "An Experiment ID is required to retrieve variations." if experiment_id.nil?
79
- @variations = self.get("projects/#{experiment_id}/variations") if @variations.nil?
80
- @experiments
94
+
95
+ if @variations.nil?
96
+ response = self.get("projects/#{experiment_id}/variations")
97
+ @variations = response.collect { |variation_json| Variation.new(variation_json) }
98
+ end
99
+ @variations
81
100
  end
82
101
 
83
102
  # Returns the details for a specific variation.
@@ -88,7 +107,11 @@ module Optimizely
88
107
  #
89
108
  def variation(id)
90
109
  raise OptimizelyError::NoVariationID, "A Variation ID is required to retrieve the variation." if id.nil?
91
- @variation = self.get("variations/#{id}")
110
+
111
+ if @variation.nil?
112
+ response = self.get("variations/#{id}")
113
+ @variation = Variation.new(response)
114
+ end
92
115
  @variation
93
116
  end
94
117
 
@@ -100,7 +123,11 @@ module Optimizely
100
123
  #
101
124
  def audiences(project_id)
102
125
  raise OptimizelyError::NoProjectID, "A Project ID is required to retrieve audiences." if project_id.nil?
103
- @audiences = self.get("projects/#{project_id}/audiences") if @audiences.nil?
126
+
127
+ if @audiences.nil?
128
+ response = self.get("projects/#{project_id}/audiences")
129
+ @audiences = response.collect { |audience_json| Audience.new(audience_json) }
130
+ end
104
131
  @audiences
105
132
  end
106
133
 
@@ -112,7 +139,11 @@ module Optimizely
112
139
  #
113
140
  def audience(id)
114
141
  raise OptimizelyError::NoAudienceID, "An Audience ID is required to retrieve the audience." if id.nil?
115
- @audience = self.get("audiences/#{id}")
142
+
143
+ if @audience.nil?
144
+ response = self.get("audiences/#{id}")
145
+ @audience = Audience.new(response)
146
+ end
116
147
  @audience
117
148
  end
118
149
 
@@ -1,5 +1,15 @@
1
1
  module Optimizely
2
2
  class Experiment
3
3
 
4
+ attr_reader :id, :project_id, :variation_ids, :edit_url, :status
5
+
6
+ def initialize(json)
7
+ @id = json['id']
8
+ @project_id = json['project_id']
9
+ @variation_ids = json['variation_ids']
10
+ @edit_url = json['edit_url']
11
+ @status = json['status']
12
+ end
13
+
4
14
  end
5
15
  end
@@ -1,5 +1,14 @@
1
1
  module Optimizely
2
2
  class Project
3
3
 
4
+ attr_reader :project_name, :project_status, :id, :account_id
5
+
6
+ def initialize(json)
7
+ @project_name = json['project_name']
8
+ @project_status = json['project_status']
9
+ @id = json['id']
10
+ @account_id = json['account_id']
11
+ end
12
+
4
13
  end
5
14
  end
@@ -1,5 +1,21 @@
1
1
  module Optimizely
2
2
  class Variation
3
3
 
4
+ attr_reader :is_paused, :description, :weight, :created, :variation_id,
5
+ :section_id, :js_component, :experiment_id, :project_id, :id
6
+
7
+ def initialize(json)
8
+ @is_paused = json['is_paused']
9
+ @description = json['description']
10
+ @weight = json['weight']
11
+ @created = json['created']
12
+ @variation_id = json['variation_id']
13
+ @section_id = json['section_id']
14
+ @js_component = json['js_component']
15
+ @experiment_id = json['experiment_id']
16
+ @project_id = json['project_id']
17
+ @id = json['id']
18
+ end
19
+
4
20
  end
5
21
  end
@@ -1,3 +1,3 @@
1
1
  module Optimizely
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  end
data/lib/optimizely.rb CHANGED
@@ -1,4 +1,4 @@
1
- $:.unshift File.dirname(__FILE__) # For testing when no gem is installed
1
+ $:.unshift File.dirname(__FILE__) # For testing when no gem is installed.
2
2
 
3
3
  require "net/http"
4
4
  require "net/https"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: optimizely
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martijn Scheijbeler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-05 00:00:00.000000000 Z
11
+ date: 2014-05-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A Ruby gem to communicate with the Optimizely Experiments API, it lets
14
14
  you create and manage Optimizely projects and the experiments inside of them.
@@ -52,7 +52,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
52
52
  version: '0'
53
53
  requirements: []
54
54
  rubyforge_project:
55
- rubygems_version: 2.0.14
55
+ rubygems_version: 2.0.3
56
56
  signing_key:
57
57
  specification_version: 4
58
58
  summary: The Optimizely Experiment API lets you create and manage Optimizely projects