shareprogress 0.0.2 → 0.1.0

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: 271e9682aa7a81d6fb0f52678aaab0cbef3cc5a1
4
- data.tar.gz: f3823bff697e54d4a06eb3b619823ae9a6dbe211
3
+ metadata.gz: 082477b4615f11fc7b720305663a0d83875fecee
4
+ data.tar.gz: 49f04eb0b8878236853d97afaf511431a6adb4ed
5
5
  SHA512:
6
- metadata.gz: b6497fb1519499b7fda95195d70017a626f24a009c712e33f4b5f89a4bcaf2207a15b5597b441e0f48544703986dd6035aae598db0dc27100d71f857ebb678b4
7
- data.tar.gz: 158264c71e812c69ce7f189de57eada2ce5be4406f16dc4fe8284136b1cb6f41d891b7c38bd59a99d91b235ce36cec8bb6633016843c9aa0d8703b6a9cb14f5c
6
+ metadata.gz: 92e3469f882b16bd44869b00c55523a189e9d4c4f7ac9952e02ff5f9f7a0716a8dda751174ca0f29daaaafba702b67d7f6d7c36f82b2fd321e1649d843d78ba6
7
+ data.tar.gz: 284c0b6a7dabdb83fe3506efff60d5da1b72f2c3724b83465ccf1c90b29a21c0e699fc7724947094a430473b97550d719f93ce3dee0b6d26d25242c781c51fe7
data/.gitignore CHANGED
@@ -1,3 +1,2 @@
1
1
  .DS_Store
2
2
  .gs
3
- shareprogress-0.0.1.gem
@@ -1,10 +1,11 @@
1
1
  require "scrivener"
2
2
  require "requests"
3
3
 
4
- require_relative "shareprogress/filters/new_button"
5
- require_relative "shareprogress/filters/new_email_variants"
6
- require_relative "shareprogress/filters/new_twitter_variants"
7
- require_relative "shareprogress/filters/new_facebook_variants"
4
+ require_relative "shareprogress/filters/create_button"
5
+ require_relative "shareprogress/filters/create_email_variants"
6
+ require_relative "shareprogress/filters/create_twitter_variants"
7
+ require_relative "shareprogress/filters/create_facebook_variants"
8
+ require_relative "shareprogress/filters/read_button"
8
9
 
9
10
  module ShareProgress
10
11
  module Button
@@ -12,8 +13,8 @@ module ShareProgress
12
13
  case method
13
14
  when "create"
14
15
  url = "https://run.shareprogress.org/api/v1/buttons/update"
15
- when "update"
16
- # ...
16
+ when "read"
17
+ url = "https://run.shareprogress.org/api/v1/buttons/read"
17
18
  end
18
19
 
19
20
  response = Requests.request("POST", url,
@@ -111,7 +112,7 @@ module ShareProgress
111
112
  # "id"=>"id",
112
113
  # "passed"=>"referrer_id"}}
113
114
  # }
114
- button = NewButton.new(data)
115
+ button = CreateButton.new(data)
115
116
 
116
117
  unless button.valid?
117
118
  return button.errors
@@ -120,11 +121,11 @@ module ShareProgress
120
121
  button_variants = button.variants.merge(button_template: button.button_template)
121
122
 
122
123
  if button.variants["email"]
123
- variants = NewEmailVariants.new(button_variants)
124
+ variants = CreateEmailVariants.new(button_variants)
124
125
  elsif button.variants["twitter"]
125
- variants = NewTwitterVariants.new(button_variants)
126
+ variants = CreateTwitterVariants.new(button_variants)
126
127
  elsif button.variants["facebook"]
127
- variants = NewFacebookVariants.new(button_variants)
128
+ variants = CreateFacebookVariants.new(button_variants)
128
129
  end
129
130
 
130
131
  unless variants.valid?
@@ -139,5 +140,21 @@ module ShareProgress
139
140
  return JSON.parse(e.response.body)["message"]
140
141
  end
141
142
  end
143
+
144
+ def self.read(data)
145
+ button = ReadButton.new(data)
146
+
147
+ unless button.valid?
148
+ return button.errors
149
+ end
150
+
151
+ # send request to ShareProgress to read the info about a button
152
+ begin
153
+ request = request("read", button.attributes)
154
+ return request["response"][0]
155
+ rescue Requests::Error => e
156
+ return JSON.parse(e.response.body)["message"]
157
+ end
158
+ end
142
159
  end
143
160
  end
@@ -1,4 +1,4 @@
1
- class NewButton < Scrivener
1
+ class CreateButton < Scrivener
2
2
  attr_accessor :key, :page_url, :button_template, :page_title
3
3
  attr_accessor :auto_fill, :advanced_options, :variants
4
4
 
@@ -1,4 +1,4 @@
1
- class NewEmailVariants < Scrivener
1
+ class CreateEmailVariants < Scrivener
2
2
  attr_accessor :email, :button_template
3
3
 
4
4
  def validate
@@ -1,4 +1,4 @@
1
- class NewFacebookVariants < Scrivener
1
+ class CreateFacebookVariants < Scrivener
2
2
  attr_accessor :facebook, :button_template
3
3
 
4
4
  def validate
@@ -1,4 +1,4 @@
1
- class NewTwitterVariants < Scrivener
1
+ class CreateTwitterVariants < Scrivener
2
2
  attr_accessor :twitter, :button_template
3
3
 
4
4
  def validate
@@ -0,0 +1,8 @@
1
+ class ReadButton < Scrivener
2
+ attr_accessor :key, :id
3
+
4
+ def validate
5
+ assert_present :key
6
+ assert_present :id
7
+ end
8
+ end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "shareprogress"
3
- s.version = "0.0.2"
3
+ s.version = "0.1.0"
4
4
  s.summary = "Ruby gem to communicate with ShareProgress API"
5
5
  s.description = s.summary
6
6
  s.authors = ["Cecilia Rivero"]
@@ -178,7 +178,6 @@ scope do
178
178
  assert result == expected_result
179
179
  end
180
180
 
181
- # page_url
182
181
  test "create button with empty page_url" do |data|
183
182
  data["page_url"] = ""
184
183
 
@@ -200,7 +199,6 @@ scope do
200
199
  assert result == expected_result
201
200
  end
202
201
 
203
- # page_title
204
202
  test "create button with empty page_title" do |data|
205
203
  data["page_title"] = ""
206
204
 
@@ -0,0 +1,138 @@
1
+ require "cutest"
2
+ require_relative "../lib/shareprogress"
3
+
4
+ # Monkeypath the communication with ShareProgress
5
+ module ShareProgress
6
+ module Button
7
+ def self.request(method, payload)
8
+ return {
9
+ "success"=>true,
10
+ "response"=>[{
11
+ "id"=>12196,
12
+ "page_url"=>"https://www.sumofus.org/petition/my_petition_slug",
13
+ "page_title"=>"my_petition_slug-email_button",
14
+ "button_template"=>"sp_em_small",
15
+ "share_button_html"=>"<div class='sp_12196 sp_em_small' ></div>",
16
+ "found_snippet"=>true,
17
+ "is_active"=>true,
18
+ "variants"=>{
19
+ "facebook"=>[{
20
+ "id"=>48883,
21
+ "facebook_title"=>nil,
22
+ "facebook_description"=>nil,
23
+ "facebook_thumbnail"=>nil}],
24
+ "email"=>[{
25
+ "id"=>48881,
26
+ "email_subject"=>"My Subject 1",
27
+ "email_body"=>"My Body 1{LINK}"}, {
28
+ "id"=>48882,
29
+ "email_subject"=>"My Subject 2",
30
+ "email_body"=>"My Body 2{LINK}"}],
31
+ "twitter"=>[{
32
+ "id"=>48884,
33
+ "twitter_message"=>nil}]},
34
+ "advanced_options"=>{
35
+ "automatic_traffic_routing"=>"true",
36
+ "buttons_optimize_actions"=>nil,
37
+ "customize_params"=>nil,
38
+ "id_pass"=>{
39
+ "id"=>"id",
40
+ "passed"=>"referrer_id"}
41
+ }
42
+ }],
43
+ "message"=>nil}
44
+ end
45
+ end
46
+ end
47
+
48
+ setup do
49
+ {
50
+ "key" => "ZAkVqgDTSq63_FE6FWeU3g",
51
+ "id" => "12196"
52
+ }
53
+ end
54
+
55
+ scope do
56
+ # all
57
+ test "read button successfully" do |data|
58
+ result = ShareProgress::Button.read(data)
59
+
60
+ expected_result = {
61
+ "id"=>12196,
62
+ "page_url"=>"https://www.sumofus.org/petition/my_petition_slug",
63
+ "page_title"=>"my_petition_slug-email_button",
64
+ "button_template"=>"sp_em_small",
65
+ "share_button_html"=>"<div class='sp_12196 sp_em_small' ></div>",
66
+ "found_snippet"=>true,
67
+ "is_active"=>true,
68
+ "variants"=>{
69
+ "facebook"=>[{
70
+ "id"=>48883,
71
+ "facebook_title"=>nil,
72
+ "facebook_description"=>nil,
73
+ "facebook_thumbnail"=>nil}],
74
+ "email"=>[{
75
+ "id"=>48881,
76
+ "email_subject"=>"My Subject 1",
77
+ "email_body"=>"My Body 1{LINK}"}, {
78
+ "id"=>48882,
79
+ "email_subject"=>"My Subject 2",
80
+ "email_body"=>"My Body 2{LINK}"}],
81
+ "twitter"=>[{
82
+ "id"=>48884,
83
+ "twitter_message"=>nil}]},
84
+ "advanced_options"=>{
85
+ "automatic_traffic_routing"=>"true",
86
+ "buttons_optimize_actions"=>nil,
87
+ "customize_params"=>nil,
88
+ "id_pass"=>{
89
+ "id"=>"id",
90
+ "passed"=>"referrer_id"}
91
+ }
92
+ }
93
+
94
+ assert result == expected_result
95
+ end
96
+
97
+ # key
98
+ test "read button with nil key" do |data|
99
+ data["key"] = nil
100
+
101
+ result = ShareProgress::Button.read(data)
102
+
103
+ expected_result = {:key=>[:not_present]}
104
+
105
+ assert result == expected_result
106
+ end
107
+
108
+ test "read button with empty key" do |data|
109
+ data["key"] = ""
110
+
111
+ result = ShareProgress::Button.read(data)
112
+
113
+ expected_result = {:key=>[:not_present]}
114
+
115
+ assert result == expected_result
116
+ end
117
+
118
+ # id
119
+ test "read button with nil id" do |data|
120
+ data["id"] = nil
121
+
122
+ result = ShareProgress::Button.read(data)
123
+
124
+ expected_result = {:id=>[:not_present]}
125
+
126
+ assert result == expected_result
127
+ end
128
+
129
+ test "read button with empty id" do |data|
130
+ data["id"] = ""
131
+
132
+ result = ShareProgress::Button.read(data)
133
+
134
+ expected_result = {:id=>[:not_present]}
135
+
136
+ assert result == expected_result
137
+ end
138
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shareprogress
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cecilia Rivero
@@ -65,15 +65,17 @@ files:
65
65
  - README.md
66
66
  - Rakefile
67
67
  - lib/shareprogress.rb
68
- - lib/shareprogress/filters/new_button.rb
69
- - lib/shareprogress/filters/new_email_variants.rb
70
- - lib/shareprogress/filters/new_facebook_variants.rb
71
- - lib/shareprogress/filters/new_twitter_variants.rb
68
+ - lib/shareprogress/filters/create_button.rb
69
+ - lib/shareprogress/filters/create_email_variants.rb
70
+ - lib/shareprogress/filters/create_facebook_variants.rb
71
+ - lib/shareprogress/filters/create_twitter_variants.rb
72
+ - lib/shareprogress/filters/read_button.rb
72
73
  - shareprogress.gemspec
73
74
  - test/create_button_test.rb
74
75
  - test/create_email_button_test.rb
75
76
  - test/create_facebook_button_test.rb
76
77
  - test/create_twitter_button_test.rb
78
+ - test/read_button_test.rb
77
79
  homepage: https://github.com/ceciliarivero/shareprogress-rb
78
80
  licenses:
79
81
  - MIT