infusionsoft 1.1.4 → 1.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE.md CHANGED
@@ -1,21 +1,22 @@
1
- Copyright (c) 2011 Nathan Leavitt & Infused Systems
1
+ The MIT License (MIT)
2
2
 
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
3
+ Copyright (c) 2013 Nathan Leavitt
10
4
 
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
13
11
 
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
21
22
 
data/README.md CHANGED
@@ -80,9 +80,8 @@ operating system. Ideally, a bug report should include a pull request with faili
80
80
  ## <a name="rubies">Supported Rubies</a>
81
81
  This library aims to support the following Ruby implementations:
82
82
 
83
- * Ruby 1.8.7
84
- * Ruby 1.9.1
85
- * Ruby 1.9.2
83
+ * Ruby = 1.8.7
84
+ * Ruby >= 1.9
86
85
  * [JRuby](http://www.jruby.org/)
87
86
  * [Rubinius](http://rubini.us/)
88
87
  * [Ruby Enterprise Edition](http://www.rubyenterpriseedition.com/)
@@ -106,6 +105,7 @@ time of a major release, support for that Ruby version may be dropped.
106
105
  * Need to add a history log for additional contributers
107
106
 
108
107
  ## <a name="copyright">Copyright</a>
109
- Copyright (c) 2012 Nathan Leavitt
108
+ Copyright (c) 2013 Nathan Leavitt
109
+
110
110
  See [LICENSE](https://github.com/nateleavitt/infusionsoft/blob/master/LICENSE.md) for details.
111
111
 
data/lib/infusionsoft.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'infusionsoft/api'
2
2
  require 'infusionsoft/client'
3
3
  require 'infusionsoft/configuration'
4
+ require 'infusionsoft/api_logger'
4
5
 
5
6
  module Infusionsoft
6
7
  extend Configuration
@@ -0,0 +1,19 @@
1
+ module Infusionsoft
2
+ class APILogger
3
+
4
+ def info; end
5
+ def info(msg); $stdout.print msg end
6
+
7
+ def warn; end
8
+ def warn(msg); $stdout.print msg end
9
+
10
+ def error; end
11
+ def error(msg); $stdout.print msg end
12
+
13
+ def debug; end
14
+ def debug(msg); $stdout.print msg end
15
+
16
+ def fatal; end
17
+ def fatal(msg); $stdout.print msg end
18
+ end
19
+ end
@@ -71,6 +71,20 @@ module Infusionsoft
71
71
  response = get('DataService.query', table, limit, page, data, selected_fields)
72
72
  end
73
73
 
74
+ # Queries records in a given table to find matches on certain fields.
75
+ #
76
+ # @param [String] table
77
+ # @param [Integer] limit
78
+ # @param [Integer] page
79
+ # @param [Hash] data the data you would like to query on. { :FirstName => 'first_name' }
80
+ # @param [Array] selected_fields the fields and values you want back
81
+ # @param [String] field by which to order the output results
82
+ # @param [Boolean] true ascending, false descending
83
+ # @return [Array<Hash>] the fields and associated values
84
+ def data_query_order_by(table, limit, page, data, selected_fields, by, ascending)
85
+ response = get('DataService.query', table, limit, page, data, selected_fields, by, ascending)
86
+ end
87
+
74
88
  # Adds a custom field to Infusionsoft
75
89
  #
76
90
  # @param [String] field_type options include Person, Company, Affiliate, Task/Appt/Note,
@@ -116,6 +116,17 @@ module Infusionsoft
116
116
  html_body, text_body)
117
117
  end
118
118
 
119
+ # This will send an email to a list of contacts, as well as record the email in the
120
+ # contacts' email history.
121
+ #
122
+ # @param [Array<Integer>] contact_list is an array of Contact id numbers you would like to send this email to
123
+ # @param [String] The Id of the template to send
124
+ # @return returns true if the email has been sent, an error will be sent back otherwise.
125
+ def email_send_template(contact_list, template_id)
126
+ response = get('APIEmailService.sendTemplate', contact_list, template_id)
127
+ end
128
+
129
+
119
130
  # This method is used to update an already existing email template.
120
131
  #
121
132
  # @param [Integer] id
@@ -1,9 +1,11 @@
1
1
  module Infusionsoft
2
2
 
3
3
  module Configuration
4
+ # The list of available options
4
5
  VALID_OPTION_KEYS = [
5
6
  :api_url,
6
- :api_key
7
+ :api_key,
8
+ :api_logger
7
9
  ].freeze
8
10
 
9
11
  # @private
@@ -31,6 +33,9 @@ module Infusionsoft
31
33
  #self.api_key = 'na'
32
34
  #end
33
35
 
36
+ def api_logger
37
+ @api_logger || Infusionsoft::APILogger.new
38
+ end
34
39
  end
35
40
 
36
41
  end
@@ -12,8 +12,9 @@ module Infusionsoft
12
12
  'use_ssl' => true
13
13
  })
14
14
  begin
15
+ api_logger.info "CALL: #{service_call} api_key:#{api_key} at:#{Time.now} args:#{args.inspect}"
15
16
  result = server.call("#{service_call}", api_key, *args)
16
- if result.nil?; result = [] end
17
+ if result.nil?; ok_to_retry('nil response') end
17
18
  rescue Timeout::Error => timeout
18
19
  # Retry up to 5 times on a Timeout before raising it
19
20
  ok_to_retry(timeout) ? retry : raise
@@ -22,13 +23,14 @@ module Infusionsoft
22
23
  raise InfusionAPIError.new(e.to_s, e)
23
24
  end
24
25
 
26
+ api_logger.info "RESULT:#{result.inspect}"
25
27
  return result
26
28
  end
27
29
 
28
30
  def ok_to_retry(e)
29
31
  @retry_count += 1
30
32
  if @retry_count <= 5
31
- Rails.logger.info "!!! INFUSION API ERROR: [#{e}] retrying #{@retry_count}" if Rails
33
+ api_logger.warn "WARNING: [#{e}] retrying #{@retry_count}"
32
34
  true
33
35
  else
34
36
  false
@@ -43,6 +45,7 @@ end
43
45
  class InfusionAPIError < StandardError
44
46
  attr_reader :original
45
47
  def initialize(msg, original=nil);
48
+ api_logger.error "ERROR: #{msg}"
46
49
  super(msg);
47
50
  @original = original;
48
51
  end
@@ -1,4 +1,4 @@
1
1
  module Infusionsoft
2
2
  # The version of the gem
3
- VERSION = '1.1.4'.freeze unless defined?(::Infusionsoft::VERSION)
3
+ VERSION = '1.1.5'.freeze unless defined?(::Infusionsoft::VERSION)
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: infusionsoft
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-20 00:00:00.000000000 Z
12
+ date: 2013-06-18 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A Ruby wrapper written for the Infusionsoft API
15
15
  email:
@@ -24,6 +24,7 @@ files:
24
24
  - infusionsoft.gemspec
25
25
  - lib/infusionsoft.rb
26
26
  - lib/infusionsoft/api.rb
27
+ - lib/infusionsoft/api_logger.rb
27
28
  - lib/infusionsoft/client.rb
28
29
  - lib/infusionsoft/client/affiliate.rb
29
30
  - lib/infusionsoft/client/contact.rb