velocify 0.1.6 → 0.1.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7dfb40bb9964cb7848245548804fbf1afa856aaa
4
- data.tar.gz: bac9230a7f0ffd5f32e76bcb53f44da4b48fa644
3
+ metadata.gz: ee1603a4f06f0f08e5d8328494e33032d7f5b5fb
4
+ data.tar.gz: 72a7393f07db8068fad64e459d6d911721276dcf
5
5
  SHA512:
6
- metadata.gz: 712b29bccf0070f6ec4c6d8515f06d21d5814ab0d5fe74940920345b79aa2887666700aef244f1b21422e7a13c2a3efc7b88697f39f36e0ea7754c033f6e9763
7
- data.tar.gz: 70d94b691523358baf9cbe4f80a5afd1a790193ee9829a351edf54026678fbefe04e03c09efae6523dfafce020f1121e131ed3f056a25366174ab9dfde1d4232
6
+ metadata.gz: 5b6bbebb0e2ae3dd963ead916315f8b2993fde6dff387852b4a27c4c9a481e323dafcd56d4c9dceb15a22520f4192641768baacda8937e9095bd27d1cc6294bb
7
+ data.tar.gz: 338374623b65744e64537aeedd1e82c3a66e463920c1324a494a5c6e71ab53262b78a0005b4a0d858b0c08d73b7a248afa1a652dde530befe1cc93c8333bc3a8
data/.gitignore CHANGED
@@ -11,4 +11,6 @@
11
11
  .env
12
12
  *.gem
13
13
  .ruby-version
14
+ .rbenv-gemsets
14
15
  *.swp
16
+ .gems
@@ -1,3 +1,14 @@
1
+ # Changes in 0.1.7
2
+
3
+ * Supports adding filter items to the template_values option when retrieving report results
4
+
5
+ ```
6
+ require 'ostruct'
7
+
8
+ item = OpenStruct.new field_title: 'Last Status Change Date', value: '4/12/2016 12:00:00'
9
+ Velocify::Report.find_results report_id: 123, template_values: [ item ]
10
+ ```
11
+
1
12
  # Changes in 0.1.6
2
13
 
3
14
  * Supports programmatic configuration of Velocify credentials:
data/Gemfile CHANGED
@@ -2,4 +2,6 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem "codeclimate-test-reporter", group: :test, require: nil
4
4
 
5
+ gem 'pry'
6
+
5
7
  gemspec
@@ -3,12 +3,5 @@
3
3
  require "bundler/setup"
4
4
  require "velocify"
5
5
 
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start
6
+ require "pry"
7
+ Pry.start
@@ -37,5 +37,4 @@ require "velocify/status"
37
37
  require "velocify/report"
38
38
 
39
39
  require "velocify/response_reader"
40
- require "velocify/message_payload"
41
- require "velocify/add_leads_payload"
40
+ require "velocify/payload"
@@ -0,0 +1,77 @@
1
+ require 'erb'
2
+
3
+ module Velocify
4
+ class MessagePayload
5
+ def initialize msg
6
+ @msg = msg || {}
7
+ end
8
+
9
+ def authenticate username:, password:
10
+ @msg.merge!({ username: username, password: password })
11
+ end
12
+
13
+ def render
14
+ { message: @msg }
15
+ end
16
+ end
17
+
18
+ class AddLeadsPayload
19
+ include ERB::Util
20
+
21
+ # Creates a new request to add leads
22
+ #
23
+ # @param leads [Array<Lead>] A list of leads to be added
24
+ def initialize leads
25
+ @leads = leads
26
+ @credentials = {}
27
+ end
28
+
29
+ # Stores credentials for making an authenticated request
30
+ #
31
+ # @param username [String]
32
+ # @param password [String]
33
+ # @return [Hash]
34
+ def authenticate username:, password:
35
+ @credentials = Hash[:username, username, :password, password]
36
+ end
37
+
38
+ # @return [String] The XML payload to send to Velocify's AddLeads operation
39
+ def render
40
+ relative_path = File.join '..', '..', 'templates', 'add_leads.xml.erb'
41
+ current_dir = File.dirname(__FILE__)
42
+ path = File.expand_path relative_path, current_dir
43
+ template = File.read(path)
44
+ xml_str = ERB.new(template).result binding
45
+ { xml: xml_str.gsub(/[\n\t]*/, '').gsub(/[ ]{2,}/, '') }
46
+ end
47
+ end
48
+
49
+ class GetReportResultsPayload
50
+ include ERB::Util
51
+
52
+ def initialize report_id, filter_items
53
+ @filter_items = filter_items
54
+ @report_id = report_id
55
+ @credentials = {}
56
+ end
57
+
58
+ # Stores credentials for making an authenticated request
59
+ #
60
+ # @param username [String]
61
+ # @param password [String]
62
+ # @return [Hash]
63
+ def authenticate username:, password:
64
+ @credentials = Hash[:username, username, :password, password]
65
+ end
66
+
67
+ # @return [String] The XML payload to send to Velocify's GetReportResults operation
68
+ def render
69
+ relative_path = File.join '..', '..', 'templates', 'get_report_results.xml.erb'
70
+ current_dir = File.dirname(__FILE__)
71
+ path = File.expand_path relative_path, current_dir
72
+ template = File.read(path)
73
+ xml_str = ERB.new(template).result binding
74
+ { xml: xml_str.gsub(/[\n\t]*/, '').gsub(/[ ]{2,}/, '') }
75
+ end
76
+ end
77
+ end
@@ -1,3 +1,5 @@
1
+ require 'ostruct'
2
+
1
3
  module Velocify
2
4
  class Report
3
5
  include Model
@@ -20,17 +22,35 @@ module Velocify
20
22
  end
21
23
  end
22
24
 
23
- def find_results report_id:, template_values: nil, destruct: false, return_array: false
25
+ # Retrieves report results with or without a filter
26
+ #
27
+ # @param report_id [Number] The id of the report
28
+ #
29
+ # @param template_values [Array<#field_title, #value>] (Optional) A list of filter items
30
+ #
31
+ # @example Including a filter item for retrieving report results with a last status change date filter
32
+ # require 'ostruct'
33
+ #
34
+ # item = OpenStruct.new field_title: 'Last Status Change Date', value: '4/12/2016 12:00:00'
35
+ # Velocify::Report.find_results report_id: 123, template_values: [ item ]
36
+ #
37
+ # @note The template_values option must contain an array of filter items. Filter items are objects that must respond to #field_title and #value.
38
+ #
39
+ def find_results report_id:, template_values: [], destruct: false, return_array: false
24
40
  verify_credentials!
25
41
 
26
42
  request do
27
43
  destruct_response? destruct
28
44
  operation :get_report_results
29
45
  authenticate? true
30
- message report_id: report_id
46
+ xml GetReportResultsPayload.new(report_id, template_values)
31
47
  transform do |resp|
32
48
  if return_array
33
- arrayify resp[:report_results][:result]
49
+ if template_values.empty?
50
+ arrayify resp[:report_results][:result]
51
+ else
52
+ arrayify resp[:report_results]
53
+ end
34
54
  else
35
55
  resp
36
56
  end
@@ -1,3 +1,3 @@
1
1
  module Velocify
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
@@ -0,0 +1,18 @@
1
+ <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="https://service.leads360.com">
2
+ <env:Body>
3
+ <ser:GetReportResults>
4
+ <ser:username><%= @credentials[:username] %></ser:username>
5
+ <ser:password><%= @credentials[:password] %></ser:password>
6
+ <ser:reportId><%= @report_id %></ser:reportId>
7
+ <% unless @filter_items.empty? %>
8
+ <ser:templateValues>
9
+ <FilterItems>
10
+ <% @filter_items.each do |item| %>
11
+ <FilterItem FieldTitle="<%= item.field_title %>"><%= item.value %></FilterItem>
12
+ <% end %>
13
+ </FilterItems>
14
+ </ser:templateValues>
15
+ <% end %>
16
+ </ser:GetReportResults>
17
+ </env:Body>
18
+ </env:Envelope>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: velocify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Dyba
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-16 00:00:00.000000000 Z
11
+ date: 2016-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: savon
@@ -126,19 +126,19 @@ files:
126
126
  - bin/console
127
127
  - bin/setup
128
128
  - lib/velocify.rb
129
- - lib/velocify/add_leads_payload.rb
130
129
  - lib/velocify/agent.rb
131
130
  - lib/velocify/campaign.rb
132
131
  - lib/velocify/field.rb
133
132
  - lib/velocify/field_type.rb
134
133
  - lib/velocify/lead.rb
135
- - lib/velocify/message_payload.rb
136
134
  - lib/velocify/model.rb
135
+ - lib/velocify/payload.rb
137
136
  - lib/velocify/report.rb
138
137
  - lib/velocify/response_reader.rb
139
138
  - lib/velocify/status.rb
140
139
  - lib/velocify/version.rb
141
140
  - templates/add_leads.xml.erb
141
+ - templates/get_report_results.xml.erb
142
142
  - velocify.gemspec
143
143
  homepage: http://github.com/pennymac/velocify
144
144
  licenses:
@@ -1,34 +0,0 @@
1
- require 'erb'
2
-
3
- module Velocify
4
- class AddLeadsPayload
5
- include ERB::Util
6
-
7
- # Creates a new request to add leads
8
- #
9
- # @param leads [Array<Lead>] A list of leads to be added
10
- def initialize leads
11
- @leads = leads
12
- @credentials = {}
13
- end
14
-
15
- # Stores credentials for making an authenticated request
16
- #
17
- # @param username [String]
18
- # @param password [String]
19
- # @return [Hash]
20
- def authenticate username:, password:
21
- @credentials = Hash[:username, username, :password, password]
22
- end
23
-
24
- # @return [String] The XML payload to send to Velocify's AddLeads operation
25
- def render
26
- relative_path = File.join '..', '..', 'templates', 'add_leads.xml.erb'
27
- current_dir = File.dirname(__FILE__)
28
- path = File.expand_path relative_path, current_dir
29
- template = File.read(path)
30
- xml_str = ERB.new(template).result binding
31
- { xml: xml_str.gsub(/[\n\t]*/, '').gsub(/[ ]{2,}/, '') }
32
- end
33
- end
34
- end
@@ -1,15 +0,0 @@
1
- module Velocify
2
- class MessagePayload
3
- def initialize msg
4
- @msg = msg || {}
5
- end
6
-
7
- def authenticate username:, password:
8
- @msg.merge!({ username: username, password: password })
9
- end
10
-
11
- def render
12
- { message: @msg }
13
- end
14
- end
15
- end