hubspot-api-ruby 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/Gemfile +3 -0
  4. data/Guardfile +9 -0
  5. data/LICENSE.txt +18 -0
  6. data/README.md +295 -0
  7. data/RELEASING.md +6 -0
  8. data/Rakefile +32 -0
  9. data/hubspot-api-ruby.gemspec +42 -0
  10. data/lib/hubspot-api-ruby.rb +39 -0
  11. data/lib/hubspot/blog.rb +98 -0
  12. data/lib/hubspot/collection.rb +41 -0
  13. data/lib/hubspot/company.rb +160 -0
  14. data/lib/hubspot/company_properties.rb +59 -0
  15. data/lib/hubspot/config.rb +63 -0
  16. data/lib/hubspot/connection.rb +152 -0
  17. data/lib/hubspot/contact.rb +110 -0
  18. data/lib/hubspot/contact_list.rb +129 -0
  19. data/lib/hubspot/contact_properties.rb +59 -0
  20. data/lib/hubspot/deal.rb +173 -0
  21. data/lib/hubspot/deal_pipeline.rb +58 -0
  22. data/lib/hubspot/deal_properties.rb +59 -0
  23. data/lib/hubspot/deprecator.rb +7 -0
  24. data/lib/hubspot/engagement.rb +222 -0
  25. data/lib/hubspot/event.rb +21 -0
  26. data/lib/hubspot/exceptions.rb +18 -0
  27. data/lib/hubspot/file.rb +38 -0
  28. data/lib/hubspot/form.rb +95 -0
  29. data/lib/hubspot/oauth.rb +50 -0
  30. data/lib/hubspot/owner.rb +57 -0
  31. data/lib/hubspot/paged_collection.rb +35 -0
  32. data/lib/hubspot/properties.rb +123 -0
  33. data/lib/hubspot/railtie.rb +10 -0
  34. data/lib/hubspot/resource.rb +270 -0
  35. data/lib/hubspot/subscription.rb +37 -0
  36. data/lib/hubspot/topic.rb +37 -0
  37. data/lib/hubspot/utils.rb +127 -0
  38. data/lib/tasks/hubspot.rake +53 -0
  39. data/spec/factories/companies.rb +9 -0
  40. data/spec/factories/contacts.rb +10 -0
  41. data/spec/lib/hubspot-ruby_spec.rb +12 -0
  42. data/spec/lib/hubspot/blog_spec.rb +150 -0
  43. data/spec/lib/hubspot/company_properties_spec.rb +410 -0
  44. data/spec/lib/hubspot/company_spec.rb +340 -0
  45. data/spec/lib/hubspot/config_spec.rb +87 -0
  46. data/spec/lib/hubspot/connection_spec.rb +214 -0
  47. data/spec/lib/hubspot/contact_list_spec.rb +301 -0
  48. data/spec/lib/hubspot/contact_properties_spec.rb +245 -0
  49. data/spec/lib/hubspot/contact_spec.rb +223 -0
  50. data/spec/lib/hubspot/deal_pipeline_spec.rb +85 -0
  51. data/spec/lib/hubspot/deal_properties_spec.rb +262 -0
  52. data/spec/lib/hubspot/deal_spec.rb +185 -0
  53. data/spec/lib/hubspot/deprecator_spec.rb +15 -0
  54. data/spec/lib/hubspot/engagement_spec.rb +177 -0
  55. data/spec/lib/hubspot/event_spec.rb +33 -0
  56. data/spec/lib/hubspot/file_spec.rb +38 -0
  57. data/spec/lib/hubspot/form_spec.rb +189 -0
  58. data/spec/lib/hubspot/owner_spec.rb +56 -0
  59. data/spec/lib/hubspot/properties_spec.rb +45 -0
  60. data/spec/lib/hubspot/resource_spec.rb +54 -0
  61. data/spec/lib/hubspot/topic_spec.rb +23 -0
  62. data/spec/lib/hubspot/utils_spec.rb +164 -0
  63. data/spec/lib/tasks/hubspot_spec.rb +119 -0
  64. data/spec/shared_examples/saveable_resource.rb +45 -0
  65. data/spec/shared_examples/updateable_resource.rb +87 -0
  66. data/spec/spec_helper.rb +44 -0
  67. data/spec/support/capture_output.rb +21 -0
  68. data/spec/support/cassette_helper.rb +19 -0
  69. data/spec/support/hubspot_api_helpers.rb +13 -0
  70. data/spec/support/rake.rb +46 -0
  71. data/spec/support/tests_helper.rb +17 -0
  72. data/spec/support/vcr.rb +16 -0
  73. metadata +369 -0
@@ -0,0 +1,119 @@
1
+ require "rake"
2
+ require "stringio"
3
+ require "tempfile"
4
+
5
+ RSpec.describe "hubspot rake tasks", type: :rake do
6
+ let(:hapikey) { "demo" }
7
+
8
+ describe "hubspot:dump_properties" do
9
+ it "writes the class properties and groups to the given file" do
10
+ VCR.use_cassette("dump_contact_properties_and_groups") do
11
+ file = Tempfile.new
12
+
13
+ invoke_rake_task("hubspot:dump_properties", ["contact", file, hapikey])
14
+
15
+ result = JSON.parse(File.read(file))
16
+
17
+ expect(result.count).to be > 0
18
+ expect(result['groups'].count).to be > 0
19
+ expect(result['properties'].count).to be > 0
20
+ end
21
+ end
22
+
23
+ it "prints a deprecation warning" do
24
+ VCR.use_cassette("dump_contact_properties_and_groups") do
25
+ file = Tempfile.new ""
26
+
27
+ output = capture_stderr do
28
+ invoke_rake_task("hubspot:dump_properties", ["contact", file, hapikey])
29
+ end
30
+
31
+ expect(output).to include("hubspot:dump_properties is deprecated")
32
+ end
33
+ end
34
+
35
+ context "given an unknown class" do
36
+ it "raises an error" do
37
+ file = Tempfile.new
38
+
39
+ expected_error_msg = ':kind must be either "contact" or "deal"'
40
+
41
+ expect do
42
+ invoke_rake_task(
43
+ "hubspot:dump_properties",
44
+ ["unknown_class", file, hapikey]
45
+ )
46
+ end.to raise_error(ArgumentError, expected_error_msg)
47
+ end
48
+ end
49
+ end
50
+
51
+ describe "hubspot:restore_properties" do
52
+ context "when the class properties match the existing properties" do
53
+ it "should not need to make any changes" do
54
+ VCR.use_cassette("restore_contact_properties_and_groups") do
55
+ file = build_file_with_matching_properties("contact")
56
+
57
+ results = capture_stdout do
58
+ invoke_rake_task(
59
+ "hubspot:restore_properties",
60
+ ["contact", file, hapikey]
61
+ )
62
+ end
63
+
64
+ expect(results).not_to include("Created: ")
65
+ expect(results).not_to include("Updated: ")
66
+ end
67
+ end
68
+ end
69
+
70
+ it "prints a deprecation warning" do
71
+ VCR.use_cassette("restore_contact_properties_and_groups") do
72
+ file = build_file_with_matching_properties("contact")
73
+
74
+ output = capture_stderr do
75
+ invoke_rake_task(
76
+ "hubspot:restore_properties",
77
+ ["contact", file, hapikey]
78
+ )
79
+ end
80
+
81
+ expect(output).to include("hubspot:restore_properties is deprecated")
82
+ end
83
+ end
84
+
85
+ context "when a file is not provided" do
86
+ it "raises an error" do
87
+ missing_file = ""
88
+ expected_error_msg = ":file is a required parameter"
89
+
90
+ expect do
91
+ invoke_rake_task(
92
+ "hubspot:restore_properties",
93
+ ["contact", missing_file, hapikey]
94
+ )
95
+ end.to raise_error(ArgumentError, expected_error_msg)
96
+ end
97
+ end
98
+
99
+ context "given an unknown class" do
100
+ it "raises an error" do
101
+ file = Tempfile.new
102
+ expected_error_msg = ':kind must be either "contact" or "deal"'
103
+
104
+ expect do
105
+ invoke_rake_task(
106
+ "hubspot:restore_properties",
107
+ ["unknown_class", file, hapikey]
108
+ )
109
+ end.to raise_error(ArgumentError, expected_error_msg)
110
+ end
111
+ end
112
+ end
113
+
114
+ def build_file_with_matching_properties(klass)
115
+ file = Tempfile.new
116
+ invoke_rake_task("hubspot:dump_properties", ["contact", file, hapikey])
117
+ file
118
+ end
119
+ end
@@ -0,0 +1,45 @@
1
+ RSpec.shared_examples_for "a saveable resource" do |factory_name|
2
+ describe '#save' do
3
+ context 'with a new resource' do
4
+ cassette
5
+ let(:resource) { build factory_name }
6
+ subject { resource.save }
7
+
8
+ it 'succeeds' do
9
+ expect(subject).to be_truthy
10
+ end
11
+
12
+ it 'sets the ID' do
13
+ expect {
14
+ subject
15
+ }.to change { resource.id }.from(nil)
16
+ end
17
+
18
+ it 'clears the changes' do
19
+ expect {
20
+ subject
21
+ }.to change { resource.changed? }.from(true).to(false)
22
+ end
23
+ end
24
+
25
+ context 'with an existing resource' do
26
+ cassette
27
+ let(:resource) { create factory_name }
28
+ subject { resource.save }
29
+
30
+ before(:each) do
31
+ set_property(resource)
32
+ end
33
+
34
+ it 'succeeds' do
35
+ expect(subject).to be_truthy
36
+ end
37
+
38
+ it 'clears the changes' do
39
+ expect {
40
+ subject
41
+ }.to change { resource.changed? }.from(true).to(false)
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,87 @@
1
+ RSpec.shared_examples_for "an updateable resource" do |factory_name|
2
+ describe '.update' do
3
+ context 'with an existing resource' do
4
+ cassette
5
+ let(:resource) { create factory_name }
6
+ subject { described_class.update(resource.id, changed_properties) }
7
+
8
+ it 'succeeds' do
9
+ expect(subject).to be_truthy
10
+ end
11
+ end
12
+
13
+ context 'with an invalid resource' do
14
+ cassette
15
+ subject { described_class.update(0, changed_properties) }
16
+
17
+ it 'fails' do
18
+ expect(subject).to be_falsey
19
+ end
20
+ end
21
+ end
22
+
23
+ describe '.update!' do
24
+ context 'with an existing resource' do
25
+ cassette
26
+ let(:resource) { create factory_name }
27
+ subject { described_class.update!(resource.id, changed_properties) }
28
+
29
+ it 'succeeds' do
30
+ expect(subject).to be_truthy
31
+ end
32
+ end
33
+
34
+ context 'with an invalid resource' do
35
+ cassette
36
+ subject { described_class.update!(0, changed_properties) }
37
+
38
+ it 'fails with an error' do
39
+ expect {
40
+ subject
41
+ }.to raise_error Hubspot::RequestError
42
+ end
43
+ end
44
+ end
45
+
46
+ describe '#update' do
47
+ context 'with no changes' do
48
+ cassette
49
+ let(:resource) { create factory_name }
50
+ subject { resource.update(changed_properties) }
51
+
52
+ it 'succeeds' do
53
+ expect(subject).to be_truthy
54
+ end
55
+
56
+ it 'updates the properties' do
57
+ subject
58
+ changed_properties.each do |property, value|
59
+ expect(resource.send(property.to_sym)).to eq value
60
+ end
61
+ end
62
+ end
63
+
64
+ context 'with overlapping changes' do
65
+ cassette
66
+ let(:resource) { create factory_name}
67
+ subject { resource.update(changed_properties) }
68
+
69
+ before(:each) do
70
+ overlapping_properties.each do |property, value|
71
+ resource.send("#{property}=".to_sym, value)
72
+ end
73
+ end
74
+
75
+ it 'succeeds' do
76
+ expect(subject).to be_truthy
77
+ end
78
+
79
+ it 'merges and updates the properties' do
80
+ subject
81
+ overlapping_properties.merge(changed_properties).each do |property, value|
82
+ expect(resource.send(property.to_sym)).to eq value
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,44 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ RSPEC_ROOT = File.dirname(__FILE__)
4
+ GEM_ROOT = File.expand_path("..", RSPEC_ROOT)
5
+
6
+ require 'simplecov'
7
+ SimpleCov.root GEM_ROOT
8
+ SimpleCov.start do
9
+ add_filter "/spec/"
10
+ add_filter "/.bundle/"
11
+ end
12
+
13
+ require 'dotenv/load'
14
+ require 'rspec'
15
+ require 'rspec/its'
16
+ require 'webmock/rspec'
17
+ require 'factory_bot'
18
+ require 'faker'
19
+ require 'byebug'
20
+ require 'hubspot-api-ruby'
21
+
22
+ # Requires supporting files with custom matchers and macros, etc,
23
+ # in ./support/ and its subdirectories.
24
+ Dir["#{RSPEC_ROOT}/support/**/*.rb"].each {|f| require f}
25
+
26
+ # Require shared examples
27
+ Dir["#{RSPEC_ROOT}/shared_examples/**/*.rb"].each {|f| require f}
28
+
29
+ RSpec.configure do |config|
30
+ config.after(:each) do
31
+ Hubspot::Config.reset!
32
+ end
33
+
34
+ config.filter_run_when_matching :focus
35
+
36
+ # Setup FactoryBot
37
+ config.include FactoryBot::Syntax::Methods
38
+ config.before(:suite) do
39
+ FactoryBot.find_definitions
40
+ end
41
+
42
+ config.extend CassetteHelper
43
+ config.extend TestsHelper
44
+ end
@@ -0,0 +1,21 @@
1
+ module CaptureOutput
2
+ def capture_stderr
3
+ previous, $stderr = $stderr, StringIO.new
4
+ yield
5
+ $stderr.string
6
+ ensure
7
+ $stderr = previous
8
+ end
9
+
10
+ def capture_stdout
11
+ previous, $stdout = $stdout, StringIO.new
12
+ yield
13
+ $stdout.string
14
+ ensure
15
+ $stdout = previous
16
+ end
17
+ end
18
+
19
+ RSpec.configure do |config|
20
+ config.include CaptureOutput
21
+ end
@@ -0,0 +1,19 @@
1
+ module CassetteHelper
2
+ def self.extended(base)
3
+ base.around do |spec|
4
+ VCR.insert_cassette(_cassette, _cassette_options) if defined?(_cassette) && _cassette
5
+ spec.run
6
+ VCR.eject_cassette if defined?(_cassette) && _cassette
7
+ end
8
+ end
9
+
10
+ def cassette(*args)
11
+ options = args.extract_options!
12
+
13
+ let(:_cassette) do |example|
14
+ args.first || example.full_description
15
+ end
16
+
17
+ let(:_cassette_options) { options }
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ module HubspotApiHelpers
2
+ def hubspot_api_url(path)
3
+ URI.join(Hubspot::Config.base_url, path)
4
+ end
5
+
6
+ def assert_hubspot_api_request(method, path, options = {})
7
+ assert_requested(method, /#{hubspot_api_url(path)}/, options)
8
+ end
9
+ end
10
+
11
+ RSpec.configure do |c|
12
+ c.include HubspotApiHelpers
13
+ end
@@ -0,0 +1,46 @@
1
+ require "rake"
2
+
3
+ module RakeHelpers
4
+ def invoke_rake_task(name, args = [])
5
+ RakeTask.new(name).invoke(*args)
6
+ end
7
+ end
8
+
9
+ class RakeTask
10
+ def initialize(name)
11
+ @task_name = name
12
+ prep_environment
13
+ end
14
+
15
+ delegate :invoke, to: :task
16
+
17
+ private
18
+
19
+ attr_reader :task_name
20
+
21
+ def prep_environment
22
+ Rake.application = rake
23
+ Rake.load_rakefile(full_task_path)
24
+ Rake::Task.define_task(:environment)
25
+ end
26
+
27
+ def full_task_path
28
+ "#{root_path}/lib/tasks/#{task_name.split(':').first}.rake"
29
+ end
30
+
31
+ def root_path
32
+ File.expand_path('../..', __dir__)
33
+ end
34
+
35
+ def task
36
+ rake[task_name]
37
+ end
38
+
39
+ def rake
40
+ @_rake ||= Rake::Application.new
41
+ end
42
+ end
43
+
44
+ RSpec.configure do |config|
45
+ config.include RakeHelpers, type: :rake
46
+ end
@@ -0,0 +1,17 @@
1
+ module TestsHelper
2
+ def expect_count_and_offset(&block)
3
+ it 'returns only the number of objects specified by count' do
4
+ result = block.call(count: 2)
5
+ expect(result.size).to eql 2
6
+
7
+ result = block.call(count: 4)
8
+ expect(result.size).to eql 4
9
+ end
10
+
11
+ it 'returns objects by a specified offset' do
12
+ non_offset_objects = block.call(count: 2)
13
+ objects_with_offset = block.call(count: 2, offset: 2)
14
+ expect(non_offset_objects).to_not eql objects_with_offset
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,16 @@
1
+ require "vcr"
2
+
3
+ def vcr_record_mode
4
+ if ENV["VCR_RECORD"] == "1"
5
+ :new_episodes
6
+ else
7
+ :none
8
+ end
9
+ end
10
+
11
+ VCR.configure do |c|
12
+ c.cassette_library_dir = "#{RSPEC_ROOT}/fixtures/vcr_cassettes"
13
+ c.hook_into :webmock
14
+ c.default_cassette_options = { record: vcr_record_mode }
15
+ c.filter_sensitive_data("<HAPI_KEY>") { ENV.fetch("HUBSPOT_HAPI_KEY", "demo") }
16
+ end
metadata ADDED
@@ -0,0 +1,369 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hubspot-api-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.0
5
+ platform: ruby
6
+ authors:
7
+ - Jonathan
8
+ - Juliette
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2019-12-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: activesupport
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: 4.2.2
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: 4.2.2
28
+ - !ruby/object:Gem::Dependency
29
+ name: httparty
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0.10'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0.10'
42
+ - !ruby/object:Gem::Dependency
43
+ name: appraisal
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '2.2'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '2.2'
56
+ - !ruby/object:Gem::Dependency
57
+ name: dotenv
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: rake
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '11.0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '11.0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rspec
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '3.8'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '3.8'
98
+ - !ruby/object:Gem::Dependency
99
+ name: rspec-its
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: '1.2'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '1.2'
112
+ - !ruby/object:Gem::Dependency
113
+ name: webmock
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: vcr
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: rdoc
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: bundler
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: simplecov
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ - !ruby/object:Gem::Dependency
183
+ name: awesome_print
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ type: :development
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ - !ruby/object:Gem::Dependency
197
+ name: timecop
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ">="
201
+ - !ruby/object:Gem::Version
202
+ version: '0'
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ - !ruby/object:Gem::Dependency
211
+ name: guard-rspec
212
+ requirement: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ type: :development
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ - !ruby/object:Gem::Dependency
225
+ name: byebug
226
+ requirement: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ type: :development
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: faker
240
+ requirement: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: '0'
245
+ type: :development
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - ">="
250
+ - !ruby/object:Gem::Version
251
+ version: '0'
252
+ - !ruby/object:Gem::Dependency
253
+ name: factory_bot
254
+ requirement: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ">="
257
+ - !ruby/object:Gem::Version
258
+ version: '0'
259
+ type: :development
260
+ prerelease: false
261
+ version_requirements: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - ">="
264
+ - !ruby/object:Gem::Version
265
+ version: '0'
266
+ description: hubspot-api-ruby is a wrapper for the HubSpot REST API
267
+ email:
268
+ - jonathan@hoggo.com
269
+ - juliette@hoggo.com
270
+ executables: []
271
+ extensions: []
272
+ extra_rdoc_files: []
273
+ files:
274
+ - ".rspec"
275
+ - Gemfile
276
+ - Guardfile
277
+ - LICENSE.txt
278
+ - README.md
279
+ - RELEASING.md
280
+ - Rakefile
281
+ - hubspot-api-ruby.gemspec
282
+ - lib/hubspot-api-ruby.rb
283
+ - lib/hubspot/blog.rb
284
+ - lib/hubspot/collection.rb
285
+ - lib/hubspot/company.rb
286
+ - lib/hubspot/company_properties.rb
287
+ - lib/hubspot/config.rb
288
+ - lib/hubspot/connection.rb
289
+ - lib/hubspot/contact.rb
290
+ - lib/hubspot/contact_list.rb
291
+ - lib/hubspot/contact_properties.rb
292
+ - lib/hubspot/deal.rb
293
+ - lib/hubspot/deal_pipeline.rb
294
+ - lib/hubspot/deal_properties.rb
295
+ - lib/hubspot/deprecator.rb
296
+ - lib/hubspot/engagement.rb
297
+ - lib/hubspot/event.rb
298
+ - lib/hubspot/exceptions.rb
299
+ - lib/hubspot/file.rb
300
+ - lib/hubspot/form.rb
301
+ - lib/hubspot/oauth.rb
302
+ - lib/hubspot/owner.rb
303
+ - lib/hubspot/paged_collection.rb
304
+ - lib/hubspot/properties.rb
305
+ - lib/hubspot/railtie.rb
306
+ - lib/hubspot/resource.rb
307
+ - lib/hubspot/subscription.rb
308
+ - lib/hubspot/topic.rb
309
+ - lib/hubspot/utils.rb
310
+ - lib/tasks/hubspot.rake
311
+ - spec/factories/companies.rb
312
+ - spec/factories/contacts.rb
313
+ - spec/lib/hubspot-ruby_spec.rb
314
+ - spec/lib/hubspot/blog_spec.rb
315
+ - spec/lib/hubspot/company_properties_spec.rb
316
+ - spec/lib/hubspot/company_spec.rb
317
+ - spec/lib/hubspot/config_spec.rb
318
+ - spec/lib/hubspot/connection_spec.rb
319
+ - spec/lib/hubspot/contact_list_spec.rb
320
+ - spec/lib/hubspot/contact_properties_spec.rb
321
+ - spec/lib/hubspot/contact_spec.rb
322
+ - spec/lib/hubspot/deal_pipeline_spec.rb
323
+ - spec/lib/hubspot/deal_properties_spec.rb
324
+ - spec/lib/hubspot/deal_spec.rb
325
+ - spec/lib/hubspot/deprecator_spec.rb
326
+ - spec/lib/hubspot/engagement_spec.rb
327
+ - spec/lib/hubspot/event_spec.rb
328
+ - spec/lib/hubspot/file_spec.rb
329
+ - spec/lib/hubspot/form_spec.rb
330
+ - spec/lib/hubspot/owner_spec.rb
331
+ - spec/lib/hubspot/properties_spec.rb
332
+ - spec/lib/hubspot/resource_spec.rb
333
+ - spec/lib/hubspot/topic_spec.rb
334
+ - spec/lib/hubspot/utils_spec.rb
335
+ - spec/lib/tasks/hubspot_spec.rb
336
+ - spec/shared_examples/saveable_resource.rb
337
+ - spec/shared_examples/updateable_resource.rb
338
+ - spec/spec_helper.rb
339
+ - spec/support/capture_output.rb
340
+ - spec/support/cassette_helper.rb
341
+ - spec/support/hubspot_api_helpers.rb
342
+ - spec/support/rake.rb
343
+ - spec/support/tests_helper.rb
344
+ - spec/support/vcr.rb
345
+ homepage: http://github.com/lounna-sas/hubspot-api-ruby
346
+ licenses:
347
+ - MIT
348
+ metadata:
349
+ changelog_uri: https://github.com/lounna-sas/hubspot-api-ruby/blob/master/History.md
350
+ post_install_message:
351
+ rdoc_options: []
352
+ require_paths:
353
+ - lib
354
+ required_ruby_version: !ruby/object:Gem::Requirement
355
+ requirements:
356
+ - - ">="
357
+ - !ruby/object:Gem::Version
358
+ version: '2.3'
359
+ required_rubygems_version: !ruby/object:Gem::Requirement
360
+ requirements:
361
+ - - ">="
362
+ - !ruby/object:Gem::Version
363
+ version: '0'
364
+ requirements: []
365
+ rubygems_version: 3.0.1
366
+ signing_key:
367
+ specification_version: 4
368
+ summary: hubspot-api-ruby is a wrapper for the HubSpot REST API
369
+ test_files: []