rallio 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rallio/access_token.rb +19 -0
- data/lib/rallio/account.rb +27 -4
- data/lib/rallio/account_ownership.rb +9 -0
- data/lib/rallio/base.rb +4 -0
- data/lib/rallio/franchisor.rb +7 -0
- data/lib/rallio/franchisor_ownership.rb +11 -0
- data/lib/rallio/ownerships_base.rb +16 -0
- data/lib/rallio/review.rb +30 -0
- data/lib/rallio/sign_on_token.rb +11 -0
- data/lib/rallio/user.rb +35 -2
- data/lib/rallio/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e09140384dd4ab0295ebfd128a49328538a8e37
|
4
|
+
data.tar.gz: a01df9d158fd7a6985f63fb7bd8b3b1506f31edb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 295ca0a315f2adf7c0c88c8e5f16e4ba24bc01657d9ae53646735e80010baa6583f54823ecc205af7d109a777b338cc5b625ae0e6ca6013251f1cbc86f8a19b7
|
7
|
+
data.tar.gz: c191d0f8bf882bf02f5d3fec612750d567d7cb486bd7f88603936b5453c2b141529e991c90a1bcff376d25508f9f7b7e21de533c859334dec46006ab1c7ce518
|
data/lib/rallio/access_token.rb
CHANGED
@@ -1,15 +1,34 @@
|
|
1
1
|
module Rallio
|
2
|
+
# Represents an access token object as it comes from Rallio.
|
3
|
+
#
|
4
|
+
# @!attribute [rw] access_token
|
5
|
+
# Access token string
|
6
|
+
# @!attribute [rw] user_id
|
7
|
+
# @!attribute [rw] expires_at
|
8
|
+
# @return [DateTime, nil] expiration DateTime or nil if access token never expires
|
9
|
+
# @!attribute [rw] scopes
|
10
|
+
# List of oauth scopes for the access token
|
2
11
|
class AccessToken < Base
|
3
12
|
attribute :access_token, String
|
4
13
|
attribute :user_id, Integer
|
5
14
|
attribute :expires_at, DateTime
|
6
15
|
attribute :scopes, String
|
7
16
|
|
17
|
+
# Creates new access token for user_id.
|
18
|
+
#
|
19
|
+
# NOTE: These token do not expire so it is suggested (recommended) that the
|
20
|
+
# token be cached and reused whenever possible.
|
21
|
+
#
|
22
|
+
# @param user_id [Integer]
|
23
|
+
# @return [Rallio::AccessToken]
|
8
24
|
def self.create(user_id:)
|
9
25
|
response = self.post("/users/#{user_id}/access_tokens", headers: app_credentials)
|
10
26
|
new response.parsed_response
|
11
27
|
end
|
12
28
|
|
29
|
+
# Destroys access_token
|
30
|
+
#
|
31
|
+
# @return [true, nil] true if successful or nil
|
13
32
|
def destroy
|
14
33
|
headers = { 'Authorization' => "Bearer #{access_token}" }
|
15
34
|
self.class.delete('/access_token', headers: headers)
|
data/lib/rallio/account.rb
CHANGED
@@ -1,4 +1,13 @@
|
|
1
1
|
module Rallio
|
2
|
+
# Represents an account object as it comes from Rallio.
|
3
|
+
#
|
4
|
+
# @!attribute [rw] id
|
5
|
+
# @!attribute [rw] name
|
6
|
+
# @!attribute [rw] short_name
|
7
|
+
# @!attribute [rw] url
|
8
|
+
# @!attribute [rw] city
|
9
|
+
# @!attribute [rw] country_code
|
10
|
+
# @!attribute [rw] time_zone
|
2
11
|
class Account < Base
|
3
12
|
attribute :id, Integer
|
4
13
|
attribute :name, String
|
@@ -8,19 +17,33 @@ module Rallio
|
|
8
17
|
attribute :country_code, String
|
9
18
|
attribute :time_zone, String
|
10
19
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
20
|
+
# Retreives accounts.
|
21
|
+
#
|
22
|
+
# @param franchisor_id [Integer] franchisor_id to get accounts for
|
23
|
+
# @return [Array<Rallio::Account>]
|
15
24
|
def self.for(franchisor_id:)
|
16
25
|
response = self.get("/franchisors/#{franchisor_id}/accounts", headers: app_credentials)
|
17
26
|
response.parsed_response['accounts'].map { |a| new a }
|
18
27
|
end
|
19
28
|
|
29
|
+
# Creates an account.
|
30
|
+
#
|
31
|
+
# @param franchisor_id [Integer] franchisor_id to create account under
|
32
|
+
# @param payload [Hash]
|
33
|
+
# @option payload [Hash] :account data to create account with
|
34
|
+
# @return [Hash] hash of account created
|
20
35
|
def self.create(franchisor_id:, payload:)
|
21
36
|
self.post("/franchisors/#{franchisor_id}/accounts", headers: app_credentials, body: payload).parsed_response
|
22
37
|
end
|
23
38
|
|
39
|
+
# Retreives reviews for the account.
|
40
|
+
#
|
41
|
+
# @param access_token [String] user access token for API access to account
|
42
|
+
# @return [Array<Rallio::Review>]
|
43
|
+
def reviews(access_token:)
|
44
|
+
Review.all(type: type, id: id, access_token: access_token)
|
45
|
+
end
|
46
|
+
|
24
47
|
private
|
25
48
|
|
26
49
|
def type
|
@@ -1,4 +1,11 @@
|
|
1
1
|
module Rallio
|
2
|
+
# Represents an account ownership object as it comes from Rallio.
|
3
|
+
#
|
4
|
+
# @!attribute [rw] user_id
|
5
|
+
# @!attribute [rw] account_id
|
6
|
+
# @!attribute [rw] account_name
|
7
|
+
# @!attribute [rw] account_franchisor_id
|
8
|
+
# @!attribute [rw] account_franchisor_name
|
2
9
|
class AccountOwnership < OwnershipsBase
|
3
10
|
attribute :user_id, Integer
|
4
11
|
attribute :account_id, Integer
|
@@ -6,10 +13,12 @@ module Rallio
|
|
6
13
|
attribute :account_franchisor_id, Integer
|
7
14
|
attribute :account_franchisor_name, String
|
8
15
|
|
16
|
+
# (see Rallio::FranchisorOwnership#self.url_segment)
|
9
17
|
def self.url_segment
|
10
18
|
'account_ownerships'
|
11
19
|
end
|
12
20
|
|
21
|
+
# (see Rallio::FranchisorOwnership#self.response_key)
|
13
22
|
def self.response_key
|
14
23
|
'account_ownership'
|
15
24
|
end
|
data/lib/rallio/base.rb
CHANGED
@@ -5,6 +5,10 @@ module Rallio
|
|
5
5
|
|
6
6
|
base_uri 'https://app.rallio.com/api/v1'
|
7
7
|
|
8
|
+
# The credentials that can be used in the headers of any request requiring
|
9
|
+
# app level credentials
|
10
|
+
#
|
11
|
+
# @return [Hash] credentials hash
|
8
12
|
def self.app_credentials
|
9
13
|
{
|
10
14
|
'X-Application-ID' => Rallio.application_id,
|
data/lib/rallio/franchisor.rb
CHANGED
@@ -1,10 +1,17 @@
|
|
1
1
|
module Rallio
|
2
2
|
class Franchisor < Account
|
3
|
+
# Retreives all franchisors for a given application.
|
4
|
+
#
|
5
|
+
# @return [Array<Rallio::Franchisor>]
|
3
6
|
def self.all
|
4
7
|
response = self.get('/franchisors', headers: app_credentials)
|
5
8
|
response.parsed_response['franchisors'].map { |f| new(f) }
|
6
9
|
end
|
7
10
|
|
11
|
+
# Retreives all accounts for the Rallio::Franchisor
|
12
|
+
# @see Rallio::Account
|
13
|
+
#
|
14
|
+
# @return [Array<Rallio::Account>]
|
8
15
|
def accounts
|
9
16
|
Rallio::Account.for(franchisor_id: id)
|
10
17
|
end
|
@@ -1,13 +1,24 @@
|
|
1
1
|
module Rallio
|
2
|
+
# Represents a franchisor ownership as it comes from Rallio.
|
3
|
+
#
|
4
|
+
# @!attribute [rw] user_id
|
5
|
+
# @!attribute [rw] franchisor_id
|
6
|
+
# @!attribute [rw] franchisor_name
|
2
7
|
class FranchisorOwnership < OwnershipsBase
|
3
8
|
attribute :user_id, Integer
|
4
9
|
attribute :franchisor_id, Integer
|
5
10
|
attribute :franchisor_name, String
|
6
11
|
|
12
|
+
# Url segment used by base class to build correct endpoint.
|
13
|
+
#
|
14
|
+
# @return [String]
|
7
15
|
def self.url_segment
|
8
16
|
'franchisor_ownerships'
|
9
17
|
end
|
10
18
|
|
19
|
+
# Key used to extract response object from API response hash.
|
20
|
+
#
|
21
|
+
# @return [String]
|
11
22
|
def self.response_key
|
12
23
|
'franchisor_ownership'
|
13
24
|
end
|
@@ -1,16 +1,32 @@
|
|
1
1
|
module Rallio
|
2
2
|
class OwnershipsBase < Base
|
3
|
+
# Ownerships for access_token and url segment defined in class.
|
4
|
+
#
|
5
|
+
# @param access_token [String] user access token to get ownerships for
|
3
6
|
def self.for(access_token:)
|
4
7
|
headers = { 'Authorization' => "Bearer #{access_token}" }
|
5
8
|
response = self.get("/#{url_segment}", headers: headers)
|
6
9
|
response.parsed_response["#{url_segment}"].map { |a| new(a) }
|
7
10
|
end
|
8
11
|
|
12
|
+
# Create new ownership.
|
13
|
+
#
|
14
|
+
# @param user_id [Integer] user id to create ownership for
|
15
|
+
# @param payload [Hash]
|
16
|
+
# @option payload [Integer] :franchisor_id franchisor to link to user_id
|
17
|
+
# @option payload [Integer] :account_id account to link to user_id
|
18
|
+
# @return [Rallio::FranchisorOwnership, Rallio::AccountOwnership]
|
19
|
+
# object representing new ownership
|
9
20
|
def self.create(user_id:, payload:)
|
10
21
|
response = self.post("/users/#{user_id}/#{url_segment}", headers: app_credentials, body: payload)
|
11
22
|
new response.parsed_response["#{response_key}"]
|
12
23
|
end
|
13
24
|
|
25
|
+
# Destroy ownership for user.
|
26
|
+
#
|
27
|
+
# @param user_id [Integer] user id to destory ownership for
|
28
|
+
# @param object_id [Integer] can be either a franchisor_id or an account_id
|
29
|
+
# depending on what class this is called from
|
14
30
|
def self.destroy(user_id:, object_id:)
|
15
31
|
self.delete("/users/#{user_id}/#{url_segment}/#{object_id}", headers: app_credentials)
|
16
32
|
end
|
data/lib/rallio/review.rb
CHANGED
@@ -1,4 +1,23 @@
|
|
1
1
|
module Rallio
|
2
|
+
# Represents a review object as it comes from Rallio.
|
3
|
+
#
|
4
|
+
# @!attribute [rw] id
|
5
|
+
# @!attribute [rw] account_id
|
6
|
+
# @!attribute [rw] account_name
|
7
|
+
# @!attribute [rw] network
|
8
|
+
# @!attribute [rw] posted_at
|
9
|
+
# @!attribute [rw] user_name
|
10
|
+
# @!attribute [rw] user_image
|
11
|
+
# @!attribute [rw] rating
|
12
|
+
# @!attribute [rw] message
|
13
|
+
# @!attribute [rw] comments
|
14
|
+
# @!attribute [rw] liked
|
15
|
+
# @!attribute [rw] url
|
16
|
+
# @!attribute [rw] can_reply
|
17
|
+
# @!attribute [rw] location_name
|
18
|
+
# @!attribute [rw] location_image_url
|
19
|
+
# @!attribute [rw] review_reply
|
20
|
+
# @!attribute [rw] review_reply_at
|
2
21
|
class Review < Base
|
3
22
|
attribute :id, Integer
|
4
23
|
attribute :account_id, Integer
|
@@ -18,12 +37,23 @@ module Rallio
|
|
18
37
|
attribute :review_reply, String
|
19
38
|
attribute :review_reply_at, DateTime
|
20
39
|
|
40
|
+
# Retreives reviews.
|
41
|
+
#
|
42
|
+
# @param type [String] one of accounts or franchisors to get reviews for
|
43
|
+
# @param id [Integer] account or franchisor id to get reviews for
|
44
|
+
# @param access_token [String] user access token to use for authorization
|
45
|
+
# @return [Array<Rallio::Review>]
|
21
46
|
def self.all(type:, id:, access_token:)
|
22
47
|
headers = { 'Authorization' => "Bearer #{access_token}" }
|
23
48
|
response = self.get("/#{type}/#{id}/reviews", headers: headers)
|
24
49
|
response.parsed_response['reviews'].map { |r| new(r) }
|
25
50
|
end
|
26
51
|
|
52
|
+
# Replies to review.
|
53
|
+
#
|
54
|
+
# @param message [String] text used for reply
|
55
|
+
# @param access_token [String] user access token to use for authorization
|
56
|
+
# @return [Hash] reply hash that was created
|
27
57
|
def reply(message:, access_token:)
|
28
58
|
headers = { 'Authorization' => "Bearer #{access_token}" }
|
29
59
|
self.class.post("/reviews/#{id}/reply", headers: headers, body: { message: message })
|
data/lib/rallio/sign_on_token.rb
CHANGED
@@ -1,9 +1,20 @@
|
|
1
1
|
module Rallio
|
2
|
+
# Represents a sign on token object as it comes from Rallio.
|
3
|
+
#
|
4
|
+
# @!attribute [rw] token
|
5
|
+
# @!attribute [rw] expires_at
|
6
|
+
# DateTime token and url will become invalid.
|
7
|
+
# @!attribute [rw] url
|
8
|
+
# Url to redirect user to for SSO with token embedded
|
2
9
|
class SignOnToken < Base
|
3
10
|
attribute :token, String
|
4
11
|
attribute :expires_at, DateTime
|
5
12
|
attribute :url, String
|
6
13
|
|
14
|
+
# Creates new sign on token for user_id.
|
15
|
+
#
|
16
|
+
# @param user_id [Integer]
|
17
|
+
# @return [Rallio::SignOnToken]
|
7
18
|
def self.create(user_id:)
|
8
19
|
response = self.post("/users/#{user_id}/sign_on_tokens", headers: app_credentials)
|
9
20
|
new response.parsed_response['sign_on_token']
|
data/lib/rallio/user.rb
CHANGED
@@ -1,36 +1,69 @@
|
|
1
1
|
module Rallio
|
2
|
+
# Represents a user object as it comes from Rallio.
|
3
|
+
#
|
4
|
+
# @!attribute [rw] id
|
5
|
+
# @!attribute [rw] email
|
6
|
+
# @!attribute [rw] first_name
|
7
|
+
# @!attribute [rw] last_name
|
2
8
|
class User < Base
|
3
9
|
attribute :id, Integer
|
4
10
|
attribute :email, String
|
5
11
|
attribute :first_name, String
|
6
12
|
attribute :last_name, String
|
7
|
-
|
8
|
-
attribute :
|
13
|
+
# This may not be needed anymore, API still in flux
|
14
|
+
#attribute :accounts, Array[Account]
|
15
|
+
#attribute :franchisors, Array[Franchisor]
|
9
16
|
|
10
17
|
attr_writer :access_token
|
11
18
|
|
19
|
+
# Lists accessible users on Rallio's platform for application.
|
20
|
+
#
|
21
|
+
# @return [Array<Rallio::User>] array of users accessible to application
|
12
22
|
def self.accessible_users
|
13
23
|
response = self.get('/accessible_users', headers: app_credentials)
|
14
24
|
response.parsed_response['users'].map { |u| User.new(u) }
|
15
25
|
end
|
16
26
|
|
27
|
+
# Create a user on the Rallio platform.
|
28
|
+
#
|
29
|
+
# @param user [Hash] user info used to create new user
|
30
|
+
# @option user [String] :email unique email address
|
31
|
+
# @option user [String] :first_name
|
32
|
+
# @option user [String] :last_name
|
33
|
+
# @return [Rallio::User] user object that was just created
|
17
34
|
def self.create(user:)
|
18
35
|
response = self.post('/users', headers: app_credentials, body: { user: user })
|
19
36
|
new response.parsed_response['user']
|
20
37
|
end
|
21
38
|
|
39
|
+
# Creates new single signon for user to be redirected to.
|
40
|
+
# @see Rallio::SignOnToken
|
41
|
+
#
|
42
|
+
# @return [Rallio::SignOnToken]
|
22
43
|
def sign_on_token
|
23
44
|
SignOnToken.create(user_id: id)
|
24
45
|
end
|
25
46
|
|
47
|
+
# Creates or returns the API access token for user.
|
48
|
+
# @see Rallio::AccessToken
|
49
|
+
#
|
50
|
+
# @return [Rallio::AccessToken]
|
26
51
|
def access_token
|
27
52
|
@access_token ||= AccessToken.create(user_id: id)
|
28
53
|
end
|
29
54
|
|
55
|
+
# Retreives account ownerships for user.
|
56
|
+
# @see Rallio::AccountOwnership
|
57
|
+
#
|
58
|
+
# @return [Array<Rallio::AccountOwnership>] array of user's account ownerships
|
30
59
|
def account_ownerships
|
31
60
|
AccountOwnership.for(access_token: access_token.access_token)
|
32
61
|
end
|
33
62
|
|
63
|
+
# Retreives franchisor ownerships for user.
|
64
|
+
# @see Rallio::FranchisorOwnership
|
65
|
+
#
|
66
|
+
# @return [Array<Rallio::FranchisorOwnership>] array of user's franchisor ownerships
|
34
67
|
def franchisor_ownerships
|
35
68
|
FranchisorOwnership.for(access_token: access_token.access_token)
|
36
69
|
end
|
data/lib/rallio/version.rb
CHANGED