verticalresponse 0.1.3 → 0.1.6

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: 96318a9b541c169be00b68a96b084904397d385b
4
- data.tar.gz: 89871561f44271648e2ff68bf383684bcb8d9cb7
3
+ metadata.gz: ea638bd9b5bc61e712489d4cdea16315cc2899ab
4
+ data.tar.gz: 673029928047e551a3b94e96797b76c86256070c
5
5
  SHA512:
6
- metadata.gz: 2fb79d0ec033543228f4eb5d8152621c0a129cb775537342f88f05a0b2d8ca567a41543008ce864a8e3caf700dce5dc05802a8f065b0375594ee07e19a432247
7
- data.tar.gz: cac28274b484ff93c5cbca9b74d153b3036308dfafbb1b56ef7b5b83351b6e43afccf6d13f9d18c6e031fcbf5e711a752d65a3e558f75c57d81a6f7aab9aee94
6
+ metadata.gz: 746f527074d0599a6aec04addd475079282b6ea5587165bb26f61433f75cb8fa7a1f463e86d0b9a23456021b67dd70e13637b439b4d0aaffa3da812e74744387
7
+ data.tar.gz: b0c59b01284d31c53552184cc4b7ddba9a489339ede35e0daa6581f007a61ffc411cff5f8605957f1a32f3d1eee6528c95f6a4fc504d3c3f297c8859a45d5cc2
data/README.md CHANGED
@@ -10,22 +10,48 @@ Based on https://github.com/VerticalResponse/v1wrappers/
10
10
  New Functionality
11
11
  -----------------
12
12
 
13
- Allows instantiating oauth clients by access_token, to access the VerticalResponse API in an object-oriented fashion.
13
+ Allows instantiating oauth clients by access_token, to access the VerticalResponse API in an object-oriented fashion. The calls are object-oriented in the sense that you can instantate a client with its access_token. This is not possible with the original wrappers.
14
14
 
15
15
  ```ruby
16
- oauth_client = VerticalResponse::API::OAuth.new access_token
17
- ```
16
+ client = VerticalResponse::API::OAuth.new access_token
18
17
 
19
- This allows us to get the lists for a verticalresponse user with
20
- ```ruby
21
- oauth_client.lists
22
- ```
18
+ # Get all lists
19
+ client.lists
23
20
 
24
- or the clients with
25
- ```ruby
26
- oauth_client.clients
21
+ # Get a specific list
22
+ client.find_list("<id>")
23
+
24
+ # Get contacts in a specific list
25
+ client.find_list("<id>").contacts
26
+
27
+ # Create multiple contacts in a specific list
28
+ client.find_list("<id>").create_contacts([{
29
+ email: "some@email.com",
30
+ first_name: "some first name",
31
+ last_name: "some last name",
32
+ custom: {
33
+ field: "some custom field"
34
+ }
35
+ },
36
+ {
37
+ email: "another@email.com",
38
+ first_name: "another first name",
39
+ last_name: "another last name",
40
+ custom: {
41
+ field: "another custom field"
42
+ }
43
+ }
44
+ ])
45
+
46
+ # Get all contacts
47
+ client.contacts
48
+
49
+ # Get all custom fields
50
+ client.custom_fields
27
51
  ```
28
52
 
53
+ And a few other calls as well. Not all wrapper methods are supported, but you're more than welcome to implement them yourself and submit pull requests.
54
+
29
55
  Requirements
30
56
  ----------
31
57
  Ruby 1.9+ (compatible with Ruby 2.1.1)
@@ -36,4 +62,4 @@ Note: I only tested these requirements as much as I needed to (not for all funct
36
62
 
37
63
  Contribute
38
64
  ----------
39
- I only built this for what I needed, and I know it's pretty limited. Contributions are more than welcome
65
+ The features of this gem were built as needed, and it is pretty limited. Contributions are more than welcome!
@@ -1,21 +1,26 @@
1
1
  require 'httparty'
2
2
 
3
- require_relative 'client.rb'
4
- require_relative 'contact.rb'
5
- require_relative 'custom_field.rb'
6
- require_relative 'email.rb'
7
- require_relative 'error.rb'
8
- require_relative 'list.rb'
9
- require_relative 'message.rb'
10
- require_relative 'oauth.rb'
11
- require_relative 'resource.rb'
12
- require_relative 'response.rb'
13
- require_relative 'social_post.rb'
3
+ require_relative 'verticalresponse/api/oauth.rb'
4
+
5
+ require_relative 'verticalresponse/api/client.rb'
6
+ require_relative 'verticalresponse/api/contact.rb'
7
+ require_relative 'verticalresponse/api/custom_field.rb'
8
+ require_relative 'verticalresponse/api/email.rb'
9
+ require_relative 'verticalresponse/api/error.rb'
10
+ require_relative 'verticalresponse/api/list.rb'
11
+ require_relative 'verticalresponse/api/message.rb'
12
+ require_relative 'verticalresponse/api/resource.rb'
13
+ require_relative 'verticalresponse/api/response.rb'
14
+ require_relative 'verticalresponse/api/social_post.rb'
14
15
 
15
16
  module VerticalResponse
17
+ API_VERSION = "v1"
18
+
16
19
  CONFIG = {
17
20
  host: 'vrapi.verticalresponse.com',
18
21
  port: "",
19
22
  protocol: 'https'
20
23
  }
21
- end
24
+ end
25
+
26
+ $LOAD_PATH << File.dirname(__FILE__) unless $LOAD_PATH.include?(File.dirname(__FILE__))
@@ -8,6 +8,8 @@ require_relative 'response'
8
8
  module VerticalResponse
9
9
  module API
10
10
  class Client
11
+ attr_reader :access_token
12
+
11
13
  include HTTParty
12
14
 
13
15
  format :json
@@ -20,7 +22,7 @@ module VerticalResponse
20
22
  # Assign the headers required by our partner Mashery
21
23
  def assign_headers(headers_info = {})
22
24
  access_token = headers_info[:access_token]
23
- add_default_query_param(:access_token, access_token)
25
+ add_default_query_param(:access_token, access_token) unless access_token.nil?
24
26
  end
25
27
 
26
28
  def embed_resource(resource, resource_id = nil)
@@ -32,7 +34,7 @@ module VerticalResponse
32
34
  # It builds the URI based on the values from the API configuration file.
33
35
  # 'host' must be defined (unless host_uri is specified as an input param)
34
36
  # otherwise the method will raise an exception.
35
- def base_uri(host_uri = nil)
37
+ def base_service_uri(host_uri = nil)
36
38
  uri = host_uri
37
39
  unless uri
38
40
  unless VerticalResponse::CONFIG[:host]
@@ -58,6 +60,23 @@ module VerticalResponse
58
60
  URI.join(uri, File.join(*paths))
59
61
  end
60
62
 
63
+ def base_uri(host_uri = nil)
64
+ @base_uri ||= File.join(base_service_uri(host_uri).to_s, *resource_uri_suffix)
65
+ end
66
+
67
+ # Allow getting contacts from a list, creating contacts inside a list, etc.
68
+ # This works better than embed_resource, since it avoids conflicts between
69
+ # multiple actors. In a multithreaded environment this is obvious, but
70
+ # in a multi-process environment conflicts can still happen, so we want
71
+ # to set the prefix of a uri on instances, not at the class level.
72
+ def base_uri_with_prefix(*prefix)
73
+ File.join(base_service_uri.to_s, *prefix, *resource_uri_suffix)
74
+ end
75
+
76
+ def resource_uri_suffix
77
+ []
78
+ end
79
+
61
80
  def build_params(params, query_params = {})
62
81
  request_params = {}
63
82
  request_params[:body] = params if params
@@ -97,6 +116,27 @@ module VerticalResponse
97
116
  end
98
117
  uri
99
118
  end
119
+
120
+ def resource_uri_with_prefix(prefix, *additional_paths)
121
+ uri = base_uri_with_prefix(prefix)
122
+ if additional_paths.any?
123
+ # Convert all additional paths to string
124
+ additional_paths = additional_paths.map do |path|
125
+ # We need to escape each path in case it contains caracters that
126
+ # are not appropriate to use as part of an URL.
127
+ # Unescape and then escape again in case the path is already escaped
128
+ URI::escape(URI::unescape(path.to_s))
129
+ end
130
+ uri = File.join(uri, *additional_paths)
131
+ end
132
+ uri
133
+ end
134
+
135
+ # Used when posting
136
+ # The access_token at this time seems to only work as GET parameter
137
+ def resource_uri_with_token(access_token, *additional_paths)
138
+ resource_uri(*additional_paths) + "?access_token=#{access_token}"
139
+ end
100
140
  end
101
141
 
102
142
  # Set default headers for OAuth authentication
@@ -104,7 +144,8 @@ module VerticalResponse
104
144
 
105
145
  attr_accessor :response
106
146
 
107
- def initialize(response)
147
+ def initialize(response, access_token = nil)
148
+ @access_token = access_token
108
149
  self.response = response
109
150
  end
110
151
  end
@@ -13,13 +13,19 @@ module VerticalResponse
13
13
  module API
14
14
  class Contact < Resource
15
15
  class << self
16
- # Base URI for the Contact resource
17
- def base_uri(*args)
18
- @base_uri ||= File.join(super.to_s, 'contacts')
16
+ def resource_uri_suffix
17
+ ['contacts']
19
18
  end
20
19
 
21
20
  def fields(options = {})
22
- Response.new get(resource_uri('fields'), build_query_params(options))
21
+ Response.new get(resource_uri('fields'), build_query_params(options), options[:access_token])
22
+ end
23
+
24
+ def find_by_email(options = {})
25
+ validate_supported_method!(:find)
26
+ response = Response.new(get(resource_uri,build_query_params(options)), options[:access_token])
27
+
28
+ object_collection(response, options[:access_token])
23
29
  end
24
30
  end
25
31
 
@@ -31,13 +37,16 @@ module VerticalResponse
31
37
 
32
38
  # Returns all the lists this contact belongs to
33
39
  def lists(options = {})
40
+ options.merge!(access_token: @access_token)
34
41
  @list_class.all(options)
35
42
  end
36
43
 
37
44
  # Returns all the messages targetted to the current contact
38
45
  def messages(options = {})
46
+ options.merge!(access_token: @access_token)
39
47
  @message_class.all(options)
40
48
  end
41
49
  end
50
+
42
51
  end
43
52
  end
@@ -12,9 +12,8 @@ module VerticalResponse
12
12
  module API
13
13
  class CustomField < Resource
14
14
  class << self
15
- # Base URI for the Message resource
16
- def base_uri(*args)
17
- @base_uri ||= File.join(super.to_s, 'custom_fields')
15
+ def resource_uri_suffix
16
+ ['custom_fields']
18
17
  end
19
18
 
20
19
  def id_regexp
@@ -13,9 +13,8 @@ module VerticalResponse
13
13
  module API
14
14
  class Email < Resource
15
15
  class << self
16
- # Base URI for the Email resource
17
- def base_uri(*args)
18
- @base_uri ||= File.join(super.to_s, 'messages', 'emails')
16
+ def resource_uri_suffix
17
+ ['messages', 'emails']
19
18
  end
20
19
 
21
20
  # Overwrite from parent class since it's a special type of
@@ -12,9 +12,8 @@ module VerticalResponse
12
12
  module API
13
13
  class List < Resource
14
14
  class << self
15
- # Base URI for the List resource
16
- def base_uri(*args)
17
- @base_uri ||= File.join(super.to_s, 'lists')
15
+ def resource_uri_suffix
16
+ ['lists']
18
17
  end
19
18
  end
20
19
 
@@ -26,27 +25,37 @@ module VerticalResponse
26
25
 
27
26
  # Returns all the messages targetted to the current list
28
27
  def messages(options = {})
29
- @message_class.all(options)
28
+ @access_token ||= options[:access_token]
29
+ @message_class.all(options.merge(access_token: @access_token))
30
30
  end
31
31
 
32
32
  # Returns all the contacts that belong to the list
33
33
  def contacts(options = {})
34
- @contact_class.all(options)
34
+ @access_token ||= options[:access_token]
35
+ @contact_class.all(options.merge(access_token: @access_token))
35
36
  end
36
37
 
37
38
  def find_contact(contact_id, options = {})
38
- @contact_class.find(contact_id, options)
39
+ @access_token ||= options[:access_token]
40
+ @contact_class.find(contact_id, options.merge(access_token: @access_token))
41
+ end
42
+
43
+ def find_contact_by_email(email, options = {})
44
+ @access_token ||= options[:access_token]
45
+ @contact_class.find_by_email(options.merge(access_token: @access_token, email_address: email))
39
46
  end
40
47
 
41
48
  # Creates a contact for the list with the parameters provided
42
49
  def create_contact(params)
43
- @contact_class.create(params)
50
+ @access_token ||= params[:access_token]
51
+ @contact_class.create(params.merge(access_token: @access_token))
44
52
  end
45
53
 
46
54
  # Creates contacts in batch for the list with the parameters provided
47
55
  def create_contacts(params)
56
+ @access_token ||= params[:access_token]
48
57
  params = { :contacts => params } if params.is_a?(Array)
49
- @contact_class.create(params)
58
+ @contact_class.create(params.merge(access_token: @access_token))
50
59
  end
51
60
 
52
61
  # Deletes a contact from the list
@@ -57,7 +66,7 @@ module VerticalResponse
57
66
  contact_to_delete.delete
58
67
  end
59
68
 
60
- # Deletes contacts in batch from the list
69
+ # Deletes contacts in batch from the lists
61
70
  def delete_contacts(contact_emails)
62
71
  Response.new @contact_class.delete(
63
72
  @contact_class.resource_uri,
@@ -14,8 +14,8 @@ module VerticalResponse
14
14
  class Message < Resource
15
15
  class << self
16
16
  # Base URI for the Message resource
17
- def base_uri(*args)
18
- @base_uri ||= File.join(super.to_s, 'messages')
17
+ def resource_uri_suffix
18
+ ['messages']
19
19
  end
20
20
 
21
21
  # Overwritting this method from the parent class since we want to
@@ -31,7 +31,7 @@ module VerticalResponse
31
31
  message_class = SocialPost
32
32
  end
33
33
  end
34
- message_class.new(response_item)
34
+ message_class.new(response_item, access_token)
35
35
  end
36
36
  end
37
37
  end
@@ -0,0 +1,113 @@
1
+ # This class provides users the ability to generate oAuth tokens for the
2
+ # VerticalResponse API.
3
+ #
4
+ # Check the examples/sample code to know how to use this class.
5
+
6
+ require_relative 'client'
7
+
8
+ module VerticalResponse
9
+ module API
10
+ class OAuth < Client
11
+ # We expect HTML format as the API might redirect to a signin page or
12
+ # return errors in HTML format
13
+ format :html
14
+
15
+ def initialize(access_token)
16
+ @access_token = access_token
17
+ end
18
+
19
+ class << self
20
+ # Overwrite this method as we don't need to setup headers for
21
+ # OAuth calls
22
+ def assign_headers(*args)
23
+ end
24
+
25
+ def resource_uri_suffix
26
+ ['oauth']
27
+ end
28
+
29
+ # client_id is the application key
30
+ def authorize(client_id = "", redirect_uri = "")
31
+ get(
32
+ resource_uri('authorize'),
33
+ build_query_params({ :client_id => client_id, :redirect_uri => redirect_uri })
34
+ )
35
+ end
36
+
37
+ def access_token(auth_code,
38
+ redirect_uri = "",
39
+ client_id = "",
40
+ client_secret = "")
41
+ get(
42
+ resource_uri('access_token'),
43
+ build_query_params({
44
+ :client_id => client_id,
45
+ :client_secret => client_secret,
46
+ :code => auth_code,
47
+ :redirect_uri => redirect_uri
48
+ })
49
+ )
50
+ end
51
+ end
52
+
53
+ # ============================================================
54
+ # We want to access instances of OAuth with OOP, so we'll include
55
+ # some wrappers that let us use do the following:
56
+ # client = OAuth.new(access_token)
57
+ # client.lists
58
+ # client.contacts
59
+ #
60
+ # Please note, using static libraries isn't "object-oriented".
61
+ # Using instances is. The client in the example above is an
62
+ # example of an instance. This whole gem uses libraries
63
+ # instead of instances which is kindof bad.
64
+ #
65
+ # TODO: this whole gem should be more object-oriented, but for
66
+ # now this should work
67
+ # ============================================================
68
+ def lists(params = {})
69
+ params.merge!({access_token: @access_token})
70
+ VerticalResponse::API::List.all(params)
71
+ end
72
+
73
+ # Afterwards, can use 'create_contact', etc.
74
+ def find_list(list_id, params = {})
75
+ params.merge!({access_token: @access_token})
76
+ VerticalResponse::API::List.find(list_id, params)
77
+ end
78
+
79
+ def contacts(params = {}, *path_prefix)
80
+ params.merge!({access_token: @access_token})
81
+ VerticalResponse::API::Contact.all(params, path_prefix)
82
+ end
83
+
84
+ def find_contact(contact_id, params = {})
85
+ params.merge!({access_token: @access_token})
86
+ VerticalResponse::API::Contact.find(contact_id, params)
87
+ end
88
+
89
+ def find_contact_by_email(email, params = {})
90
+ params.merge!({access_token: @access_token})
91
+ params.merge!({email_address: email})
92
+ VerticalResponse::API::Contact.find_by_email(params)
93
+ end
94
+
95
+ # One or more contacts; if creating more => custom fields aren't created remotely
96
+ # Attempt to create custom fields remotely => error
97
+ #
98
+ # For multiple, use contacts: [{...},{...}]
99
+ def create_contacts(contact_details, *path_prefix)
100
+ contact_details = { contacts: contact_details } if contact_details.is_a?(Array)
101
+ VerticalResponse::API::Contact.create(
102
+ contact_details.merge(access_token: @access_token),
103
+ path_prefix
104
+ )
105
+ end
106
+
107
+ def custom_fields(params = {})
108
+ params.merge!({access_token: @access_token})
109
+ VerticalResponse::API::CustomField.all(params)
110
+ end
111
+ end
112
+ end
113
+ end
@@ -55,46 +55,56 @@ module VerticalResponse
55
55
  url.match(/#{ resource_name }\/(#{ id_regexp })/)[1]
56
56
  end
57
57
 
58
- ##################################
59
- # Common object oriented methods #
60
- ##################################
58
+ ##################
59
+ # Common methods #
60
+ ##################
61
61
 
62
62
  # Returns a collection of current class objects.
63
63
  # Useful for when we need to have an object oriented way to
64
64
  # handle a list of items from an API response
65
- def object_collection(response)
65
+ def object_collection(response, access_token = nil)
66
66
  response.handle_collection do |response_item|
67
- self.new(response_item)
67
+ self.new(response_item, access_token)
68
68
  end
69
69
  end
70
70
 
71
71
  # Returns all the objects of the current class
72
- def all(options = {})
72
+ # The prefix is more or less a hack, to allow viewing contacts inside lists
73
+ # with one call
74
+ def all(options = {}, path_prefix = [])
73
75
  validate_supported_method!(:all)
74
76
 
75
- response = Response.new get(resource_uri, build_query_params(options))
77
+ uri = resource_uri_with_prefix(path_prefix)
78
+ response = Response.new(get(uri, build_query_params(options)), options[:access_token])
76
79
 
77
- object_collection(response)
80
+ object_collection(response, options[:access_token])
78
81
  end
79
82
 
80
83
  # Find and return an object of the current class based on its ID
81
84
  def find(id, options = {})
82
85
  validate_supported_method!(:find)
86
+ response = Response.new(get(resource_uri(id),build_query_params(options)))
83
87
 
84
- response = Response.new get(resource_uri(id), build_query_params(options))
85
-
86
- self.new(response)
88
+ self.new(response, options[:access_token])
87
89
  end
88
90
 
89
91
  # Creates a new object of the current class with the parameters provided
90
- def create(params)
92
+ def create(params, path_prefix = [])
93
+ access_token = params[:access_token]
94
+ params.delete :access_token
95
+
91
96
  validate_supported_method!(:create)
92
97
 
93
- response = Response.new post(
94
- resource_uri,
95
- build_params(params)
98
+ uri = resource_uri_with_prefix(path_prefix)
99
+
100
+ # VerticalResponse doesn't like it when we pass the access_token via POST
101
+ uri += (uri.include? "?") ? "&" : "?"
102
+ uri += "access_token=#{access_token}"
103
+
104
+ response = Response.new(
105
+ post(uri, build_params(params))
96
106
  )
97
- self.new(response)
107
+ self.new(response, access_token)
98
108
  end
99
109
  end
100
110
 
@@ -117,21 +127,29 @@ module VerticalResponse
117
127
  end
118
128
 
119
129
  def update(params)
130
+ @access_token = params[:access_token]
131
+ params.delete :access_token
120
132
  self.class.validate_supported_method!(:update)
121
133
 
122
- response = Response.new self.class.put(
123
- self.class.resource_uri(id),
124
- self.class.build_params(params)
134
+ response = Response.new(
135
+ self.class.put(
136
+ self.class.resource_uri_with_token(@access_token, id),
137
+ self.class.build_params(params)
138
+ )
125
139
  )
126
- self.class.new(response)
140
+ self.class.new(response, @access_token)
127
141
  end
128
142
 
129
143
  def delete(params = {})
144
+ @access_token = params[:access_token]
145
+ params.delete :access_token
130
146
  self.class.validate_supported_method!(:delete)
131
147
 
132
- Response.new self.class.delete(
133
- self.class.resource_uri(id),
134
- self.class.build_params(params)
148
+ Response.new(
149
+ self.class.delete(
150
+ self.class.resource_uri_with_token(@access_token, id),
151
+ self.class.build_params(params)
152
+ )
135
153
  )
136
154
  end
137
155
 
@@ -145,7 +163,9 @@ module VerticalResponse
145
163
  uri = self.class.resource_uri(id, 'stats')
146
164
  end
147
165
 
148
- Response.new self.class.get(uri, self.class.build_query_params(options))
166
+ Response.new(
167
+ self.class.get(uri, self.class.build_query_params(options))
168
+ )
149
169
  end
150
170
  end
151
171
  end
@@ -6,9 +6,10 @@ require_relative 'error'
6
6
  module VerticalResponse
7
7
  module API
8
8
  class Response
9
- attr_reader :url, :items, :attributes, :links, :success, :error, :raw_response
9
+ attr_reader :url, :items, :attributes, :links, :success, :error,
10
+ :raw_response, :access_token
10
11
 
11
- def initialize(response)
12
+ def initialize(response, access_token = nil)
12
13
  @url = response['url']
13
14
  @items = response['items']
14
15
  @attributes = response['attributes']
@@ -17,6 +18,8 @@ module VerticalResponse
17
18
  @error = response['error']
18
19
  @raw_response = response
19
20
 
21
+ @access_token = access_token
22
+
20
23
  handle_error unless success?
21
24
  end
22
25
 
@@ -24,7 +27,7 @@ module VerticalResponse
24
27
  # for each one of them
25
28
  def handle_collection
26
29
  items.map do |item|
27
- yield(Response.new(item))
30
+ yield(Response.new(item, @access_token))
28
31
  end
29
32
  end
30
33
 
@@ -13,9 +13,8 @@ module VerticalResponse
13
13
  module API
14
14
  class SocialPost < Resource
15
15
  class << self
16
- # Base URI for the Email resource
17
- def base_uri(*args)
18
- @base_uri ||= File.join(super.to_s, 'messages', 'social_posts')
16
+ def resource_uri_suffix
17
+ ['messages', 'social_posts']
19
18
  end
20
19
 
21
20
  # Overwrite from parent class since it's a special type of
metadata CHANGED
@@ -1,42 +1,56 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: verticalresponse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
+ - Cosmin Atanasiu
7
8
  - Sridhar Devulkar
8
9
  - Esteban Munoz
9
- - Cosmin Atanasiu
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
  date: 2014-06-18 00:00:00.000000000 Z
14
- dependencies: []
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: bundler
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '1.3'
15
29
  description: 'Gem used to connect to VerticalResponse.com''s API '
16
30
  email:
31
+ - innorogue@gmail.com
17
32
  - sdevulkar@verticalresponse.com
18
33
  - emunoz@verticalresponse.com
19
- - innorogue@gmail.com
20
34
  executables: []
21
35
  extensions: []
22
36
  extra_rdoc_files:
23
37
  - LICENSE
24
38
  - README.md
25
39
  files:
40
+ - lib/verticalresponse.rb
41
+ - lib/verticalresponse/api/oauth.rb
42
+ - lib/verticalresponse/api/client.rb
43
+ - lib/verticalresponse/api/custom_field.rb
44
+ - lib/verticalresponse/api/error.rb
45
+ - lib/verticalresponse/api/message.rb
46
+ - lib/verticalresponse/api/resource.rb
47
+ - lib/verticalresponse/api/social_post.rb
48
+ - lib/verticalresponse/api/contact.rb
49
+ - lib/verticalresponse/api/email.rb
50
+ - lib/verticalresponse/api/list.rb
51
+ - lib/verticalresponse/api/response.rb
26
52
  - LICENSE
27
53
  - README.md
28
- - lib/client.rb
29
- - lib/contact.rb
30
- - lib/custom_field.rb
31
- - lib/email.rb
32
- - lib/error.rb
33
- - lib/list.rb
34
- - lib/message.rb
35
- - lib/oauth.rb
36
- - lib/resource.rb
37
- - lib/response.rb
38
- - lib/social_post.rb
39
- - lib/verticalresponse.rb
40
54
  homepage:
41
55
  licenses:
42
56
  - GPLv3
@@ -57,7 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
57
71
  version: '0'
58
72
  requirements: []
59
73
  rubyforge_project:
60
- rubygems_version: 2.3.0
74
+ rubygems_version: 2.1.11
61
75
  signing_key:
62
76
  specification_version: 4
63
77
  summary: Gem used to connect to VerticalResponse.com's API
@@ -1,67 +0,0 @@
1
- # This class provides users the ability to generate oAuth tokens for the
2
- # VerticalResponse API.
3
- #
4
- # Check the examples/sample code to know how to use this class.
5
-
6
- require_relative 'client'
7
-
8
- module VerticalResponse
9
- module API
10
- class OAuth < Client
11
- # We expect HTML format as the API might redirect to a signin page or
12
- # return errors in HTML format
13
- format :html
14
-
15
- def initialize(access_token)
16
- @access_token = access_token
17
- end
18
-
19
- def lists
20
- VerticalResponse::API::List.all({"access_token" => @access_token})
21
- end
22
-
23
- def contacts
24
- VerticalResponse::API::Contact.all({"access_token" => @access_token})
25
- end
26
-
27
- def get_list(list_id)
28
- VerticalResponse::API::List.find(list_id, {"access_token" => @access_token})
29
- end
30
-
31
- class << self
32
- # Overwrite this method as we don't need to setup headers for
33
- # OAuth calls
34
- def assign_headers(*args)
35
- end
36
-
37
- # Base URI for the OAuth calls
38
- def base_uri(*args)
39
- @base_uri ||= File.join(super.to_s, 'oauth')
40
- end
41
-
42
- # client_id is the application key
43
- def authorize(redirect_uri = "", client_id = "")
44
- get(
45
- resource_uri('authorize'),
46
- build_query_params({ :client_id => client_id, :redirect_uri => redirect_uri })
47
- )
48
- end
49
-
50
- def access_token(auth_code,
51
- redirect_uri = "",
52
- client_id = "",
53
- client_secret = "")
54
- get(
55
- resource_uri('access_token'),
56
- build_query_params({
57
- :client_id => client_id,
58
- :client_secret => client_secret,
59
- :code => auth_code,
60
- :redirect_uri => redirect_uri
61
- })
62
- )
63
- end
64
- end
65
- end
66
- end
67
- end