hubscreen 0.0.1 → 0.0.2
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 +4 -4
- data/README.md +2 -0
- data/hubscreen.gemspec +4 -3
- data/lib/hubscreen.rb +2 -0
- data/lib/hubscreen/api_request.rb +9 -5
- data/lib/hubscreen/config.rb +4 -1
- data/lib/hubscreen/contact.rb +33 -1
- data/lib/hubscreen/response.rb +28 -0
- data/lib/hubscreen/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3955eb4b47abd454794b7efd470987e27ef242e9
|
4
|
+
data.tar.gz: 52d2bfb0428c18ac01cecf7891ef79ff21239bc1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7db3be09776d870ff8961683438066b629e8e0a79ca3b3c02191eb95c7df07e4943e1393ec1dafde135d9a2dda87675e77ef1a2b911092740fae71265a2db08f
|
7
|
+
data.tar.gz: 7fe3da303a01cbe7e1a47e9d21f5beb2d33fadffdaee7371d034d220e5944e7362978ec9505749ae671a68ab746419012a0c1ad8f559492dea5194a82e88fc67
|
data/README.md
CHANGED
@@ -43,6 +43,8 @@ The gem is available as open source under the terms of the [MIT License](http://
|
|
43
43
|
|
44
44
|
This project and the code therein was not created by and is not supported by HubSpot, Inc or any of its affiliates.
|
45
45
|
|
46
|
+
Hubscreen is provided on an AS-IS basis. Any use of of this code in a business environment should be subjected to additional functional and integration testing prior to release.
|
47
|
+
|
46
48
|
## Copyright
|
47
49
|
|
48
50
|
Copyright (c) 2016 IMIT Advisory Limited. See LICENSE.txt for further details.
|
data/hubscreen.gemspec
CHANGED
@@ -34,13 +34,14 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.add_development_dependency "rspec", "~> 3.5"
|
35
35
|
spec.add_development_dependency "vcr", "~> 3.0"
|
36
36
|
spec.add_development_dependency "webmock", "~> 2.1"
|
37
|
-
|
38
|
-
|
37
|
+
|
39
38
|
#Interactive Testing
|
40
|
-
spec.add_development_dependency 'pry'
|
39
|
+
spec.add_development_dependency 'pry-byebug'
|
41
40
|
|
41
|
+
#Gem Dependancies
|
42
42
|
spec.add_dependency(%q<activesupport>, [">= 5.0.0"])
|
43
43
|
spec.add_dependency('faraday', '>= 0.9.2')
|
44
44
|
spec.add_dependency('multi_json', '>= 1.12.1')
|
45
|
+
spec.add_dependency('recursive-open-struct', '>= 1.0')
|
45
46
|
|
46
47
|
end
|
data/lib/hubscreen.rb
CHANGED
@@ -4,10 +4,12 @@ require 'active_support/core_ext'
|
|
4
4
|
require 'faraday'
|
5
5
|
require 'multi_json'
|
6
6
|
require 'cgi'
|
7
|
+
require 'recursive-open-struct'
|
7
8
|
|
8
9
|
#Rest API Helpers
|
9
10
|
require "hubscreen/api_request"
|
10
11
|
require "hubscreen/request"
|
12
|
+
require "hubscreen/response"
|
11
13
|
|
12
14
|
#Gem Lib Files
|
13
15
|
require "hubscreen/version"
|
@@ -6,6 +6,7 @@ module Hubscreen
|
|
6
6
|
# A new API request must pass in a Hubscreen::Request Object
|
7
7
|
def initialize(builder: nil)
|
8
8
|
@request_builder = builder
|
9
|
+
@return_encapuslated_object = Hubscreen::Config.encapsulate_response
|
9
10
|
end
|
10
11
|
|
11
12
|
def post(params: nil, headers: nil, body: nil)
|
@@ -73,7 +74,7 @@ module Hubscreen
|
|
73
74
|
end
|
74
75
|
end
|
75
76
|
|
76
|
-
|
77
|
+
protected
|
77
78
|
|
78
79
|
# Convenience accessors
|
79
80
|
|
@@ -161,17 +162,20 @@ module Hubscreen
|
|
161
162
|
raise error
|
162
163
|
end
|
163
164
|
end
|
164
|
-
|
165
|
-
|
165
|
+
if @return_encapuslated_object
|
166
|
+
return Hubscreen::Response.new(parsed_response)
|
167
|
+
else
|
168
|
+
return parsed_response
|
169
|
+
end
|
166
170
|
end
|
167
171
|
|
168
172
|
def validate_api_key
|
169
173
|
api_key = self.api_key
|
170
174
|
api_endpoint = self.api_endpoint
|
171
|
-
unless api_key
|
175
|
+
unless !api_key.blank?
|
172
176
|
raise Hubscreen::ApiError, "You must set an api_key prior to making a call"
|
173
177
|
end
|
174
|
-
unless api_endpoint
|
178
|
+
unless !api_endpoint.blank?
|
175
179
|
raise Hubscreen::ApiError, "You must set an api_endpoint prior to making a call"
|
176
180
|
end
|
177
181
|
end
|
data/lib/hubscreen/config.rb
CHANGED
@@ -5,9 +5,10 @@ require 'logger'
|
|
5
5
|
module Hubscreen
|
6
6
|
class Config
|
7
7
|
|
8
|
-
CONFIG_KEYS = [:hapikey, :base_url, :portal_id, :logger]
|
8
|
+
CONFIG_KEYS = [:hapikey, :base_url, :portal_id, :logger, :encapsulate_response]
|
9
9
|
DEFAULT_LOGGER = Logger.new(STDOUT)
|
10
10
|
DEFAULT_BASE_URL = "https://api.hubapi.com/"
|
11
|
+
DEFAULT_RESPONSE_ENCAPSULATION = true
|
11
12
|
|
12
13
|
class << self
|
13
14
|
attr_accessor *CONFIG_KEYS
|
@@ -18,6 +19,7 @@ module Hubscreen
|
|
18
19
|
@base_url = config["base_url"] || DEFAULT_BASE_URL
|
19
20
|
@portal_id = config["portal_id"] #not currenty used
|
20
21
|
@logger = config['logger'] || DEFAULT_LOGGER
|
22
|
+
@encapsulate_response = config['encapsulate_response'] || DEFAULT_RESPONSE_ENCAPSULATION
|
21
23
|
self
|
22
24
|
end
|
23
25
|
|
@@ -26,6 +28,7 @@ module Hubscreen
|
|
26
28
|
@base_url = DEFAULT_BASE_URL
|
27
29
|
@portal_id = nil
|
28
30
|
@logger = DEFAULT_LOGGER
|
31
|
+
@encapsulate_response = DEFAULT_RESPONSE_ENCAPSULATION
|
29
32
|
end
|
30
33
|
|
31
34
|
def ensure!(*params)
|
data/lib/hubscreen/contact.rb
CHANGED
@@ -1,11 +1,43 @@
|
|
1
|
+
require 'pry'
|
1
2
|
module Hubscreen
|
2
3
|
#
|
3
4
|
# HubSpot Contacts API
|
4
5
|
#
|
5
6
|
# {https://developers.hubspot.com/docs/methods/contacts/contacts-overview}
|
6
7
|
#
|
8
|
+
# This is a convenience object for single Hubspot contact returned by the API
|
7
9
|
|
8
|
-
class Contact
|
10
|
+
class Contact < Hubscreen::Response
|
11
|
+
CONTACT_KEYS = [:properties,
|
12
|
+
:vid,
|
13
|
+
:email,
|
14
|
+
:first_name,
|
15
|
+
:last_name,
|
16
|
+
:hubspot_owner_id]
|
17
|
+
|
18
|
+
attr_accessor *CONTACT_KEYS
|
19
|
+
|
20
|
+
def initialize(response)
|
21
|
+
@raw_hash = response.raw_hash
|
22
|
+
@raw_response = response.raw_response
|
23
|
+
parse_response
|
24
|
+
end
|
25
|
+
|
26
|
+
def parse_response
|
27
|
+
@properties = @raw_response.properties
|
28
|
+
@vid = @raw_hash["vid"]
|
29
|
+
@email = @raw_hash["properties"]["email"]["value"] if @raw_hash["properties"].has_key?("email")
|
30
|
+
@first_name = @raw_hash["properties"]["firstname"]["value"] if @raw_hash["properties"].has_key?("firstname")
|
31
|
+
@last_name = @raw_hash["properties"]["lastname"]["value"] if @raw_hash["properties"].has_key?("lastname")
|
32
|
+
@company = @raw_hash["properties"]["company"]["value"] if @raw_hash["properties"].has_key?("company")
|
33
|
+
@hubspot_owner_id = @raw_hash["properties"]["hubspot_owner_id"]["value"] if @raw_hash["properties"].has_key?("hubspot_owner_id")
|
34
|
+
end
|
35
|
+
|
36
|
+
def inspect
|
37
|
+
"<Hubscreen::Contact vid:#{@vid}, email:'#{@email}', first_name:'#{@first_name}', last_name:'#{@last_name}', company:'#{@company}', hubspot_owner_id:'#{@hubspot_owner_id}', properties:<Not Shown>, raw_response:<Not Shown>, raw_hash:<Not Shown>>"
|
38
|
+
end
|
39
|
+
|
9
40
|
|
10
41
|
end
|
42
|
+
|
11
43
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Hubscreen
|
2
|
+
|
3
|
+
# Hubscreen::Response
|
4
|
+
#
|
5
|
+
# Parent Class for all Hubscreen response objects. Designed for direct access to the response either through the "raw_hash" which is the hash representation of the JSON response or the "raw_response" which is the OpenStruct representation
|
6
|
+
#
|
7
|
+
# By default all APIRequests will return a Response object. To disable this, set Hubscreen.configure(encapsulate_response: false)
|
8
|
+
|
9
|
+
class Response
|
10
|
+
attr_accessor :raw_hash, :raw_response
|
11
|
+
|
12
|
+
def initialize(response_json_hash)
|
13
|
+
@raw_hash = response_json_hash
|
14
|
+
@raw_response = RecursiveOpenStruct.new(response_json_hash)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Prints out the raw response in formatted JSON.
|
18
|
+
# This method is primarily used to aid in debugging
|
19
|
+
def pretty_response
|
20
|
+
JSON.pretty_generate(@raw_hash)
|
21
|
+
end
|
22
|
+
|
23
|
+
#Type Cast Helpers
|
24
|
+
def contact
|
25
|
+
Contact.new(self)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/hubscreen/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hubscreen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryan Vaz
|
@@ -81,7 +81,7 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '2.1'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name: pry
|
84
|
+
name: pry-byebug
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: 1.12.1
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: recursive-open-struct
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '1.0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '1.0'
|
139
153
|
description: Multi-purpose Ruby wrapper for the Hubspot CRM API with access to the
|
140
154
|
raw response or Ruby objects for faster development
|
141
155
|
email:
|
@@ -163,6 +177,7 @@ files:
|
|
163
177
|
- lib/hubscreen/contact.rb
|
164
178
|
- lib/hubscreen/exceptions.rb
|
165
179
|
- lib/hubscreen/request.rb
|
180
|
+
- lib/hubscreen/response.rb
|
166
181
|
- lib/hubscreen/version.rb
|
167
182
|
homepage: https://github.com/bryanvaz/hubscreen
|
168
183
|
licenses:
|