eloqua_api 0.0.2 → 0.0.3
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/lib/eloqua/bulk_client.rb +29 -0
- data/lib/eloqua/client.rb +53 -0
- data/lib/eloqua/rest_client.rb +28 -0
- metadata +8 -5
@@ -0,0 +1,29 @@
|
|
1
|
+
module Eloqua
|
2
|
+
class BulkClient < Client
|
3
|
+
BULK_API_PATH = "/API/Bulk/1.0"
|
4
|
+
|
5
|
+
def bulk_path(path)
|
6
|
+
BULK_API_PATH + '/' + path
|
7
|
+
end
|
8
|
+
|
9
|
+
# convenience methods
|
10
|
+
def define_export(export_definition)
|
11
|
+
post(bulk_path("contact/export"), export_definition)
|
12
|
+
end
|
13
|
+
|
14
|
+
def sync(export_uri)
|
15
|
+
post(bulk_path("sync"), {"syncedInstanceUri" => export_uri}.to_json)
|
16
|
+
end
|
17
|
+
|
18
|
+
def sync_status(sync_uri)
|
19
|
+
get(bulk_path(sync_uri))
|
20
|
+
end
|
21
|
+
|
22
|
+
def retrieve_export(export_uri, options={})
|
23
|
+
options[:page] ||= 1
|
24
|
+
options[:page_size] ||= 50000
|
25
|
+
|
26
|
+
get(bulk_path("#{export_uri}/data?page=#{options[:page]}&pageSize=#{options[:page_size]}"))
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'net/https'
|
2
|
+
|
3
|
+
module Eloqua
|
4
|
+
class Client
|
5
|
+
attr_reader :site, :user
|
6
|
+
|
7
|
+
def initialize(site=nil, user=nil, password=nil)
|
8
|
+
@site = site
|
9
|
+
@user = user
|
10
|
+
@password = password
|
11
|
+
|
12
|
+
@https = Net::HTTP.new('secure.eloqua.com', 443)
|
13
|
+
@https.use_ssl = true
|
14
|
+
@https.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
15
|
+
end
|
16
|
+
|
17
|
+
METHODS = {
|
18
|
+
:get => ::Net::HTTP::Get,
|
19
|
+
:post => ::Net::HTTP::Post,
|
20
|
+
:put => ::Net::HTTP::Put,
|
21
|
+
:delete => ::Net::HTTP::Delete
|
22
|
+
}
|
23
|
+
|
24
|
+
def delete(path)
|
25
|
+
request(:delete, path)
|
26
|
+
end
|
27
|
+
|
28
|
+
def get(path)
|
29
|
+
request(:get, path)
|
30
|
+
end
|
31
|
+
|
32
|
+
def post(path, body={})
|
33
|
+
request(:post, path, body)
|
34
|
+
end
|
35
|
+
|
36
|
+
def put(path, body={})
|
37
|
+
request(:put, path, body)
|
38
|
+
end
|
39
|
+
|
40
|
+
def request(method, path, body={})
|
41
|
+
request = METHODS[method].new(path, {'Content-Type' =>'application/json'})
|
42
|
+
request.basic_auth @site + '\\' + @user, @password
|
43
|
+
|
44
|
+
case method
|
45
|
+
when :post, :put
|
46
|
+
request.body = body
|
47
|
+
end
|
48
|
+
|
49
|
+
response = @https.request(request)
|
50
|
+
return response
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Eloqua
|
2
|
+
class RESTClient < Client
|
3
|
+
REST_API_PATH = "/API/REST/1.0"
|
4
|
+
|
5
|
+
def rest_path(path)
|
6
|
+
REST_API_PATH + '/' + path
|
7
|
+
end
|
8
|
+
|
9
|
+
# convenience methods
|
10
|
+
def create_segment(segment_definition)
|
11
|
+
# debugger
|
12
|
+
post(rest_path("assets/contact/segment"), segment_definition)
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_segment(segment_id)
|
16
|
+
get(rest_path("assets/contact/segment/#{segment_id}"))
|
17
|
+
end
|
18
|
+
|
19
|
+
def contact_activity(contact_id, options={})
|
20
|
+
options["start_date"] ||= 1.year.ago.to_i
|
21
|
+
options["end_date"] ||= Time.now.to_i
|
22
|
+
options["type"] ||= "webVisit"
|
23
|
+
options["count"] ||= 1000
|
24
|
+
|
25
|
+
get(rest_path("data/activities/contact/#{contact_id}?startDate=#{options["start_date"]}&endDate=#{options["end_date"]}&type=#{options["type"]}&count=#{options["count"]}"))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eloqua_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Nader Akhnoukh
|
@@ -27,15 +27,18 @@ extensions: []
|
|
27
27
|
extra_rdoc_files: []
|
28
28
|
|
29
29
|
files:
|
30
|
+
- lib/eloqua/bulk_client.rb
|
31
|
+
- lib/eloqua/client.rb
|
32
|
+
- lib/eloqua/rest_client.rb
|
30
33
|
- lib/eloqua.rb
|
31
|
-
homepage: http://rubygems.org/gems/
|
34
|
+
homepage: http://rubygems.org/gems/eloqua_api
|
32
35
|
licenses: []
|
33
36
|
|
34
37
|
post_install_message:
|
35
38
|
rdoc_options: []
|
36
39
|
|
37
40
|
require_paths:
|
38
|
-
- lib
|
41
|
+
- - lib
|
39
42
|
required_ruby_version: !ruby/object:Gem::Requirement
|
40
43
|
none: false
|
41
44
|
requirements:
|