bronto 0.1.0 → 0.1.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.
- data/bronto.gemspec +1 -1
- data/lib/bronto/base.rb +26 -2
- data/lib/bronto/contact.rb +1 -2
- data/lib/bronto/version.rb +1 -1
- metadata +85 -73
data/bronto.gemspec
CHANGED
data/lib/bronto/base.rb
CHANGED
@@ -1,4 +1,11 @@
|
|
1
1
|
module Bronto
|
2
|
+
|
3
|
+
# According to Bronto's API documentation, the session credential returned by the
|
4
|
+
# login() API call remains active for 20 minutes. In addition, the expiration time
|
5
|
+
# is reset after each successful use. We will trigger a refresh before 20 minutes
|
6
|
+
# to be on the safe side
|
7
|
+
SESSION_REUSE_SECONDS = 120
|
8
|
+
|
2
9
|
class Base
|
3
10
|
attr_accessor :id, :api_key, :errors
|
4
11
|
|
@@ -35,6 +42,8 @@ module Bronto
|
|
35
42
|
evaluate(&_block) if _block # See Savon::Client#evaluate; necessary to preserve scope.
|
36
43
|
end
|
37
44
|
|
45
|
+
@last_used = Time.now
|
46
|
+
|
38
47
|
resp.body["#{method}_response".to_sym]
|
39
48
|
end
|
40
49
|
|
@@ -46,20 +55,35 @@ module Bronto
|
|
46
55
|
wsdl.endpoint = "https://api.bronto.com/v4"
|
47
56
|
wsdl.namespace = "http://api.bronto.com/v4"
|
48
57
|
end
|
58
|
+
|
59
|
+
# Give Bronto up to 10 minutes to reply
|
60
|
+
@api.http.read_timeout = 600
|
61
|
+
|
62
|
+
@api
|
49
63
|
end
|
50
64
|
|
51
65
|
# Helper method to retrieve the session ID and return a SOAP header.
|
52
|
-
# Will return a header with the same initial session ID unless the `refresh`
|
66
|
+
# Will return a header with the same initial session ID unless the `refresh`
|
67
|
+
# argument is `true`.
|
53
68
|
def self.soap_header(api_key, refresh = false)
|
54
|
-
return @soap_header if !refresh and @soap_header.present?
|
69
|
+
return @soap_header if !refresh and @soap_header.present? and !session_expired
|
55
70
|
|
56
71
|
resp = api.request(:v4, :login) do
|
57
72
|
soap.body = { api_token: api_key }
|
58
73
|
end
|
59
74
|
|
75
|
+
@last_used = Time.now
|
60
76
|
@soap_header = { "v4:sessionHeader" => { session_id: resp.body[:login_response][:return] } }
|
61
77
|
end
|
62
78
|
|
79
|
+
# returns true if a cached session identifier is missing or is too old
|
80
|
+
def self.session_expired
|
81
|
+
return true if (@last_used == nil)
|
82
|
+
return true if (Time.now.tv_sec - @last_used.tv_sec > SESSION_REUSE_SECONDS)
|
83
|
+
|
84
|
+
false
|
85
|
+
end
|
86
|
+
|
63
87
|
# Saves a collection of Bronto::Base objects.
|
64
88
|
# Objects without IDs are considered new and are `create`d; objects with IDs are considered existing and are `update`d.
|
65
89
|
def self.save(*objs)
|
data/lib/bronto/contact.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module Bronto
|
2
2
|
class Contact < Base
|
3
|
-
attr_accessor :email, :fields, :list_ids
|
4
|
-
|
3
|
+
attr_accessor :email, :fields, :list_ids, :created, :modified, :status, :num_opens, :num_clicks, :num_sends
|
5
4
|
# Finds contacts based on the `filter` (Bronto::Filter object).
|
6
5
|
# * `page_number` is the page of contacts to request. Bronto doesn't specify how many contacts are returned per page,
|
7
6
|
# only that you should keep increasing the number until no more contacts are returned.
|
data/lib/bronto/version.rb
CHANGED
metadata
CHANGED
@@ -1,87 +1,90 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: bronto
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Martin Gordon
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2014-01-18 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: savon
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
22
|
-
type: :runtime
|
23
22
|
prerelease: false
|
24
|
-
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
24
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
|
25
|
+
requirements:
|
26
|
+
- - "="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 31
|
29
|
+
segments:
|
30
|
+
- 1
|
31
|
+
- 2
|
32
|
+
- 0
|
33
|
+
version: 1.2.0
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
31
37
|
name: debugger
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ! '>='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
38
|
-
type: :development
|
39
38
|
prerelease: false
|
40
|
-
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: turn
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
49
40
|
none: false
|
50
|
-
requirements:
|
51
|
-
- -
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
version: "0"
|
54
48
|
type: :development
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: turn
|
55
52
|
prerelease: false
|
56
|
-
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: shoulda
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
65
54
|
none: false
|
66
|
-
requirements:
|
67
|
-
- -
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
70
62
|
type: :development
|
63
|
+
version_requirements: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: shoulda
|
71
66
|
prerelease: false
|
72
|
-
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
73
68
|
none: false
|
74
|
-
requirements:
|
75
|
-
- -
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 3
|
73
|
+
segments:
|
74
|
+
- 0
|
75
|
+
version: "0"
|
76
|
+
type: :development
|
77
|
+
version_requirements: *id004
|
78
78
|
description: A Ruby wrapper for the Bronto SOAP API
|
79
|
-
email:
|
79
|
+
email:
|
80
80
|
- martingordon@gmail.com
|
81
81
|
executables: []
|
82
|
+
|
82
83
|
extensions: []
|
84
|
+
|
83
85
|
extra_rdoc_files: []
|
84
|
-
|
86
|
+
|
87
|
+
files:
|
85
88
|
- .gitignore
|
86
89
|
- Gemfile
|
87
90
|
- LICENSE
|
@@ -106,31 +109,40 @@ files:
|
|
106
109
|
- test/list_test.rb
|
107
110
|
- test/message_test.rb
|
108
111
|
- test/test_helper.rb
|
109
|
-
homepage:
|
112
|
+
homepage: ""
|
110
113
|
licenses: []
|
114
|
+
|
111
115
|
post_install_message:
|
112
116
|
rdoc_options: []
|
113
|
-
|
117
|
+
|
118
|
+
require_paths:
|
114
119
|
- lib
|
115
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
120
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
121
|
none: false
|
117
|
-
requirements:
|
118
|
-
- -
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
|
121
|
-
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
hash: 3
|
126
|
+
segments:
|
127
|
+
- 0
|
128
|
+
version: "0"
|
129
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
130
|
none: false
|
123
|
-
requirements:
|
124
|
-
- -
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
hash: 3
|
135
|
+
segments:
|
136
|
+
- 0
|
137
|
+
version: "0"
|
127
138
|
requirements: []
|
139
|
+
|
128
140
|
rubyforge_project:
|
129
141
|
rubygems_version: 1.8.24
|
130
142
|
signing_key:
|
131
143
|
specification_version: 3
|
132
144
|
summary: A Ruby wrapper for the Bronto SOAP API
|
133
|
-
test_files:
|
145
|
+
test_files:
|
134
146
|
- test/contact_test.rb
|
135
147
|
- test/delivery_test.rb
|
136
148
|
- test/field_test.rb
|