yotpo 0.1.0 → 1.0.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 +5 -13
- data/.ruby-version +1 -1
- data/.travis.yml +0 -2
- data/lib/yotpo.rb +1 -1
- data/lib/yotpo/api/account_social.rb +39 -0
- data/lib/yotpo/api/answer.rb +16 -0
- data/lib/yotpo/api/comment.rb +38 -0
- data/lib/yotpo/api/feature.rb +12 -0
- data/lib/yotpo/api/oauth.rb +13 -0
- data/lib/yotpo/api/owner_feature.rb +48 -0
- data/lib/yotpo/api/owner_feature_setting.rb +37 -0
- data/lib/yotpo/api/product.rb +13 -0
- data/lib/yotpo/api/question.rb +44 -0
- data/lib/yotpo/api/review.rb +4 -1
- data/lib/yotpo/api/user.rb +5 -0
- data/lib/yotpo/client.rb +21 -5
- data/lib/yotpo/core/response_parser.rb +5 -3
- data/lib/yotpo/version.rb +1 -1
- data/spec/api/account_social_spec.rb +59 -0
- data/spec/api/answer_spec.rb +32 -0
- data/spec/api/comment_spec.rb +74 -0
- data/spec/api/feature_spec.rb +21 -0
- data/spec/api/oauth_spec.rb +22 -0
- data/spec/api/owner_feature_setting_spec.rb +79 -0
- data/spec/api/owner_feature_spec.rb +77 -0
- data/spec/api/product_spec.rb +18 -0
- data/spec/api/purchase_spec.rb +2 -2
- data/spec/api/question_spec.rb +53 -0
- data/spec/api/review_spec.rb +17 -0
- data/spec/api/user_spec.rb +14 -0
- data/spec/cassettes/add_features.yml +51 -0
- data/spec/cassettes/add_shop_owner_answer.yml +49 -0
- data/spec/cassettes/add_vote_to_review.yml +46 -0
- data/spec/cassettes/anonymous_user_confirmation.yml +49 -0
- data/spec/cassettes/create_account_social.yml +51 -0
- data/spec/cassettes/create_comment.yml +53 -0
- data/spec/cassettes/create_new_purchase.yml +23 -28
- data/spec/cassettes/get_account_social.yml +51 -0
- data/spec/cassettes/get_feature_settings.yml +50 -0
- data/spec/cassettes/get_features.yml +191 -0
- data/spec/cassettes/get_owner_features.yml +106 -0
- data/spec/cassettes/get_product_url.yml +93 -0
- data/spec/cassettes/mass_update_feature_settings.yml +48 -0
- data/spec/cassettes/owner_feature_settings.yml +49 -0
- data/spec/cassettes/question_create_by_token.yml +49 -0
- data/spec/cassettes/question_send_confirmation.yml +74 -0
- data/spec/cassettes/remove_feature.yml +49 -0
- data/spec/cassettes/update_account_social.yml +50 -0
- data/spec/cassettes/update_comment.yml +50 -0
- data/spec/cassettes/update_comment_avatar.yml +48 -0
- data/spec/cassettes/update_feature_settings.yml +48 -0
- data/spec/cassettes/user_enable_feature.yml +49 -0
- data/spec/cassettes/validate_token.yml +48 -0
- data/yotpo.gemspec +2 -2
- metadata +99 -26
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
OTdhNmJhZTk5NzJhZGRmOWRhNzgwMTE1NWRjZDMzMzcxMjAxNGIzOQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1ba58ed0c74829ed39bfb92a5fa9ce230fd1bc3d
|
4
|
+
data.tar.gz: 76180c212971fa35fb523cf6ad1b7e1b13720cdb
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MzJkYjE2ZTllMGQyM2U3ZGY1Y2UzZTBjNTNiYjU0MTQ4MjRiODgxNDVjNjcz
|
11
|
-
YTliYmJmOGIzY2EyZTdjNTc1MDI0Yzg0ODAyMzQ3MzU1ZDJhNzA=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MTgzNDQ2NDk2NjU3MjYyN2JlMzg0YzU2NzJmYmIxYmRmMzc4OGU1YzkyYTc5
|
14
|
-
ZDI0YjBlMGU4NThmZWQ4ODI5MTY0NWU4NjY0NWVmYmZjMjA2OWFmZjFjY2Ew
|
15
|
-
NmUzMWY5MzM0NDJhOWNjZjRhNmExODdhNjE2ODM0Y2UzNWRlNjQ=
|
6
|
+
metadata.gz: d931d0b999b6da7e7eb54fd9d38889a1b0c2ca0ae4b407e00fc0aa9f80d4174ac8a4b9c4688b15bb94e6314fca2242f7b9ab3500f5ef0bcf42b004a9f966e6f0
|
7
|
+
data.tar.gz: c137689b3bea97ab1c5bbedddfac0c87b73bd6d81a4defc98c42acbf7337a7f0dcb39ac27dee2f39bd93bf4f4feb0bdfe899d37f4afeadaf26948af07890906d
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.2.
|
1
|
+
ruby-2.2.2
|
data/.travis.yml
CHANGED
data/lib/yotpo.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
module Yotpo
|
2
|
+
module AccountSocial
|
3
|
+
def create_account_social(params)
|
4
|
+
request = {
|
5
|
+
account_social: {
|
6
|
+
social_network_name: params[:social_network_name],
|
7
|
+
access_token: params[:access_token],
|
8
|
+
social_id: params[:social_id],
|
9
|
+
secret: params[:secret],
|
10
|
+
page_token: params[:page_token],
|
11
|
+
page_id: params[:page_id],
|
12
|
+
message: params[:message],
|
13
|
+
social_push_type_id: params[:social_push_type_id],
|
14
|
+
invalidated_at: params[:invalidated_at],
|
15
|
+
},
|
16
|
+
utoken: params[:utoken]
|
17
|
+
}
|
18
|
+
post("/apps/#{params[:app_key]}/account_socials", request)
|
19
|
+
end
|
20
|
+
|
21
|
+
def update_account_social(params)
|
22
|
+
request = {
|
23
|
+
utoken: params.delete(:utoken)
|
24
|
+
}
|
25
|
+
request[:account_social] = params
|
26
|
+
put("/apps/#{params.delete(:app_key)}/account_socials/#{params.delete(:id)}", request)
|
27
|
+
end
|
28
|
+
|
29
|
+
def get_account_social(params)
|
30
|
+
request = {
|
31
|
+
utoken: params[:utoken]
|
32
|
+
}
|
33
|
+
get("/apps/#{params[:app_key]}/account_socials", request)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Yotpo
|
2
|
+
module Answer
|
3
|
+
|
4
|
+
def add_shop_owner_answer(params)
|
5
|
+
request = {
|
6
|
+
comment: {
|
7
|
+
content: params[:content],
|
8
|
+
public: params[:public]
|
9
|
+
},
|
10
|
+
utoken: params[:utoken]
|
11
|
+
}
|
12
|
+
post("questions/#{params[:question_id]}/answers", request)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Yotpo
|
2
|
+
module Comment
|
3
|
+
def create_comment(params)
|
4
|
+
request = {
|
5
|
+
utoken: params[:utoken],
|
6
|
+
comment: {
|
7
|
+
content: params[:content],
|
8
|
+
public: params[:public]
|
9
|
+
}
|
10
|
+
}
|
11
|
+
post("/reviews/#{params[:review_id]}/comments", request)
|
12
|
+
end
|
13
|
+
|
14
|
+
def update_comment(params)
|
15
|
+
request = {
|
16
|
+
utoken: params[:utoken],
|
17
|
+
comment: {
|
18
|
+
content: params[:content],
|
19
|
+
public: params[:public]
|
20
|
+
}
|
21
|
+
}
|
22
|
+
put("/reviews/#{params[:review_id]}/comments/#{params[:comment_id]}", request)
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
def update_comment_avatar(params)
|
27
|
+
request = {
|
28
|
+
utoken: params[:utoken],
|
29
|
+
comments_avatar_data: params[:comments_avatar_data],
|
30
|
+
comments_display_name: params[:comments_display_name]
|
31
|
+
}
|
32
|
+
put("/apps/#{params[:app_key]}/app_comment_avatar", request)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Yotpo
|
2
|
+
module OwnerFeature
|
3
|
+
def add_feature(params)
|
4
|
+
request = {
|
5
|
+
utoken: params[:utoken],
|
6
|
+
id: params[:feature_id]
|
7
|
+
}
|
8
|
+
post("#{get_owner_basic_path(params[:owner_type])}/#{params[:owner_id]}/features", request)
|
9
|
+
end
|
10
|
+
|
11
|
+
def remove_feature(params)
|
12
|
+
request = {
|
13
|
+
utoken: params[:utoken]
|
14
|
+
}
|
15
|
+
delete("#{get_owner_basic_path(params[:owner_type])}/#{params[:owner_id]}/features/#{params[:feature_id]}", request)
|
16
|
+
end
|
17
|
+
|
18
|
+
def user_enable_feature(params)
|
19
|
+
request = {
|
20
|
+
utoken: params[:utoken],
|
21
|
+
feature: {
|
22
|
+
user_enabled: params[:user_enabled]
|
23
|
+
}
|
24
|
+
}
|
25
|
+
put("apps/#{params[:app_key]}/features/#{params[:feature_id]}", request)
|
26
|
+
end
|
27
|
+
|
28
|
+
def get_owner_features(params)
|
29
|
+
request = {
|
30
|
+
utoken: params[:utoken]
|
31
|
+
}
|
32
|
+
get("apps/#{params[:app_key]}/features", request)
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
def get_owner_basic_path(owner_type)
|
37
|
+
if owner_type == :user
|
38
|
+
'/users'
|
39
|
+
elsif owner_type == :account
|
40
|
+
'/apps'
|
41
|
+
else
|
42
|
+
raise 'Wrong owner type!'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Yotpo
|
2
|
+
module OwnerFeatureSetting
|
3
|
+
def get_feature_settings(params)
|
4
|
+
request = {
|
5
|
+
utoken: params[:utoken],
|
6
|
+
owner_ids: params[:owner_ids]
|
7
|
+
}
|
8
|
+
get("features/#{params[:feature_id]}/get_multiple_owners_settings", request)
|
9
|
+
end
|
10
|
+
|
11
|
+
def mass_update_feature_settings(params)
|
12
|
+
request = {
|
13
|
+
utoken: params[:utoken],
|
14
|
+
settings: params[:settings]
|
15
|
+
}
|
16
|
+
put("features/#{params[:feature_id]}/#{params[:owner_id]}/admin_mass_update", request)
|
17
|
+
end
|
18
|
+
|
19
|
+
def owner_feature_settings(params)
|
20
|
+
request = {
|
21
|
+
utoken: params[:utoken],
|
22
|
+
}
|
23
|
+
get("apps/#{params[:app_key]}/features/#{params[:feature_id]}/feature_settings", request)
|
24
|
+
end
|
25
|
+
|
26
|
+
def update_feature_settings(params)
|
27
|
+
request = {
|
28
|
+
utoken: params[:utoken],
|
29
|
+
value: params[:value],
|
30
|
+
key: params[:key]
|
31
|
+
}
|
32
|
+
put("apps/#{params[:app_key]}/features/#{params[:feature_id]}/feature_settings/#{params[:feature_settings_id]}", request)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
|
data/lib/yotpo/api/product.rb
CHANGED
@@ -21,5 +21,18 @@ module Yotpo
|
|
21
21
|
sku = params[:product_id]
|
22
22
|
get("/products/#{app_key}/#{sku}/bottomline")
|
23
23
|
end
|
24
|
+
|
25
|
+
def get_product_url(params)
|
26
|
+
app_key = params[:app_key]
|
27
|
+
product_id = params[:product_id]
|
28
|
+
request = {
|
29
|
+
utoken: params[:utoken],
|
30
|
+
reference: params[:reference],
|
31
|
+
source: params[:source],
|
32
|
+
sub_reference: params[:sub_reference]
|
33
|
+
}
|
34
|
+
request[:product_id] = product_id if product_id
|
35
|
+
get("/products/#{app_key}/product_url", request)
|
36
|
+
end
|
24
37
|
end
|
25
38
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Yotpo
|
2
|
+
module Question
|
3
|
+
|
4
|
+
def question_send_confirmation(params)
|
5
|
+
request = {
|
6
|
+
appkey: params[:app_key],
|
7
|
+
sku: params[:product_id],
|
8
|
+
product_title: params[:product_title],
|
9
|
+
product_url: params[:product_url],
|
10
|
+
display_name: params[:user_display_name],
|
11
|
+
email: params[:user_email],
|
12
|
+
review_content: params[:review_body],
|
13
|
+
review_source: params[:review_source],
|
14
|
+
product_description: params[:product_description],
|
15
|
+
product_image_url: params[:product_image_url],
|
16
|
+
demo: params[:demo],
|
17
|
+
signature: params[:signature],
|
18
|
+
reviewer_type: params[:reviewer_type],
|
19
|
+
}
|
20
|
+
request.delete_if {|element, value| value.nil? }
|
21
|
+
post('questions/send_confirmation_mail', request)
|
22
|
+
end
|
23
|
+
|
24
|
+
def question_create_by_token(params)
|
25
|
+
request = {
|
26
|
+
content: params[:content],
|
27
|
+
domain: params[:domain],
|
28
|
+
product_tags: params[:product_tags],
|
29
|
+
product_description: params[:product_description],
|
30
|
+
product_image_url: params[:product_image_url],
|
31
|
+
product_title: params[:product_name],
|
32
|
+
product_url: params[:product_url],
|
33
|
+
sku: params[:product_id],
|
34
|
+
token: params[:token],
|
35
|
+
utm_campaign: params[:utm_campaign],
|
36
|
+
utm_medium: params[:utm_medium],
|
37
|
+
utm_source: params[:utm_source]
|
38
|
+
}
|
39
|
+
request.delete_if {|element, value| value.nil? }
|
40
|
+
get('questions/create_by_token', request)
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
data/lib/yotpo/api/review.rb
CHANGED
@@ -38,7 +38,6 @@ module Yotpo
|
|
38
38
|
get('/reviews/dynamic_create', request)
|
39
39
|
end
|
40
40
|
|
41
|
-
|
42
41
|
#
|
43
42
|
# Gets reviews of a specific product
|
44
43
|
#
|
@@ -63,5 +62,9 @@ module Yotpo
|
|
63
62
|
request.delete_if{|key,val| val.nil? }
|
64
63
|
get("/products/#{app_key}/#{sku}/reviews", request)
|
65
64
|
end
|
65
|
+
|
66
|
+
def add_vote_to_review(params)
|
67
|
+
get("reviews/#{params[:review_id]}/vote/#{params[:vote_value]}")
|
68
|
+
end
|
66
69
|
end
|
67
70
|
end
|
data/lib/yotpo/api/user.rb
CHANGED
data/lib/yotpo/client.rb
CHANGED
@@ -7,6 +7,14 @@ require 'yotpo/core/response_parser'
|
|
7
7
|
require 'yotpo/version'
|
8
8
|
require 'yotpo/api/account'
|
9
9
|
require 'yotpo/api/account_platform'
|
10
|
+
require 'yotpo/api/account_social'
|
11
|
+
require 'yotpo/api/comment'
|
12
|
+
require 'yotpo/api/question'
|
13
|
+
require 'yotpo/api/answer'
|
14
|
+
require 'yotpo/api/feature'
|
15
|
+
require 'yotpo/api/oauth'
|
16
|
+
require 'yotpo/api/owner_feature'
|
17
|
+
require 'yotpo/api/owner_feature_setting'
|
10
18
|
require 'yotpo/api/product'
|
11
19
|
require 'yotpo/api/purchase'
|
12
20
|
require 'yotpo/api/reminder'
|
@@ -17,11 +25,18 @@ module Yotpo
|
|
17
25
|
class Client
|
18
26
|
include Yotpo::Account
|
19
27
|
include Yotpo::AccountPlatform
|
28
|
+
include Yotpo::AccountSocial
|
29
|
+
include Yotpo::Comment
|
30
|
+
include Yotpo::Feature
|
31
|
+
include Yotpo::Oauth
|
32
|
+
include Yotpo::OwnerFeature
|
33
|
+
include Yotpo::OwnerFeatureSetting
|
20
34
|
include Yotpo::Product
|
21
35
|
include Yotpo::Reminder
|
22
36
|
include Yotpo::Review
|
23
37
|
include Yotpo::User
|
24
|
-
|
38
|
+
include Yotpo::Question
|
39
|
+
include Yotpo::Answer
|
25
40
|
include Yotpo::Purchase
|
26
41
|
|
27
42
|
|
@@ -75,9 +90,10 @@ module Yotpo
|
|
75
90
|
# Does a DELETE request to the url with the params
|
76
91
|
#
|
77
92
|
# @param url [String] the relative path in the Yotpo API
|
78
|
-
def delete(url)
|
79
|
-
|
80
|
-
|
93
|
+
def delete(url, params)
|
94
|
+
params = convert_hash_keys(params)
|
95
|
+
preform(url, :delete, params: params) do
|
96
|
+
return connection.delete(url, params)
|
81
97
|
end
|
82
98
|
end
|
83
99
|
|
@@ -125,7 +141,7 @@ module Yotpo
|
|
125
141
|
|
126
142
|
# Setting request and response to use JSON/XML
|
127
143
|
conn.request :oj
|
128
|
-
conn.response :oj
|
144
|
+
conn.response :oj, :content_type => /\bjson$/
|
129
145
|
|
130
146
|
# Set to use instrumentals to get time logs
|
131
147
|
conn.use :instrumentation
|
@@ -4,8 +4,10 @@ require 'faraday_middleware/response_middleware'
|
|
4
4
|
module Yotpo
|
5
5
|
class ResponseParser < Faraday::Response::Middleware
|
6
6
|
def parse(body)
|
7
|
-
|
8
|
-
body.response || body.status
|
7
|
+
if body.respond_to?(:response) || body.respond_to?(:status)
|
8
|
+
body.response || body.status
|
9
|
+
else
|
10
|
+
body
|
9
11
|
end
|
10
12
|
end
|
11
13
|
end
|
@@ -19,7 +21,7 @@ module Yotpo
|
|
19
21
|
end
|
20
22
|
|
21
23
|
define_parser do |body|
|
22
|
-
::Oj.load(body, mode: :compat) unless body.strip.empty?
|
24
|
+
::Oj.load(body, mode: :compat) unless body.to_s.strip.empty?
|
23
25
|
end
|
24
26
|
end
|
25
27
|
|
data/lib/yotpo/version.rb
CHANGED
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Yotpo::AccountSocial do
|
4
|
+
describe '#create social account' do
|
5
|
+
before(:all) do
|
6
|
+
account_social_params = {
|
7
|
+
utoken: @utoken,
|
8
|
+
app_key: @app_key,
|
9
|
+
social_network_name: 'INSTAGRAM',
|
10
|
+
access_token: 78910,
|
11
|
+
social_id: 111213141516,
|
12
|
+
}
|
13
|
+
VCR.use_cassette('create_account_social') do
|
14
|
+
@response = Yotpo.create_account_social(account_social_params)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
subject { @response.body.account_social }
|
19
|
+
it { should be_a ::Hashie::Mash }
|
20
|
+
it { should respond_to :access_token }
|
21
|
+
it { should respond_to :social_id }
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#update social account' do
|
25
|
+
before(:all) do
|
26
|
+
account_social_params = {
|
27
|
+
utoken: @utoken,
|
28
|
+
app_key: @app_key,
|
29
|
+
access_token: 123,
|
30
|
+
secret: 123,
|
31
|
+
id: 17
|
32
|
+
}
|
33
|
+
VCR.use_cassette('update_account_social') do
|
34
|
+
@response = Yotpo.update_account_social(account_social_params)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
subject { @response.body }
|
39
|
+
it { should be_a ::Hashie::Mash }
|
40
|
+
it { should respond_to :account_social }
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '#get social account' do
|
44
|
+
before(:all) do
|
45
|
+
account_social_params = {
|
46
|
+
utoken: @utoken,
|
47
|
+
app_key: @app_key
|
48
|
+
}
|
49
|
+
VCR.use_cassette('get_account_social') do
|
50
|
+
@response = Yotpo.get_account_social(account_social_params)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
subject { @response.body.account_socials[0] }
|
55
|
+
it { should be_a ::Hashie::Mash }
|
56
|
+
it { should respond_to :access_token }
|
57
|
+
it { should respond_to :social_id }
|
58
|
+
end
|
59
|
+
end
|