shareprogress 0.0.2 → 0.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,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