isurvey 0.0.7 → 0.0.8
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 +8 -8
- data/README.md +51 -2
- data/isurvey.gemspec +1 -0
- data/lib/isurvey/answer.rb +6 -0
- data/lib/isurvey/api.rb +66 -0
- data/lib/isurvey/base.rb +17 -0
- data/lib/isurvey/collector.rb +7 -0
- data/lib/isurvey/question.rb +6 -0
- data/lib/isurvey/soap_client.rb +28 -0
- data/lib/isurvey/version.rb +1 -1
- data/lib/isurvey.rb +9 -94
- data/spec/answer_spec.rb +21 -0
- data/spec/question_spec.rb +21 -0
- data/spec/spec_helper.rb +4 -0
- metadata +28 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MjE2NmJkYjlhNWMzMjg5ZmU0MGNmODkzNmM5ODYxOTUwOWJlNDEzMQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MjlhMjVkOTFlMTU3M2ZkNDAzZjNiMWY1Y2RiY2M5ODMwMWU0MTYzNg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZTYyNDczMWI0N2EwNzhiNzg3ZjcwOTNlNmRlZTdjOGFiN2U5NGYwZTJlN2I2
|
10
|
+
MGU5M2VjMGY1ZjJhMzAyYjExN2NiNTc5NTlmYzBlMjFjNGE1MjBmYzQ3NGQw
|
11
|
+
MTFhMTE4YWMwNWFiNzE2MTRkNTY1MGI3ZWIwOGRjY2Y0NDlkZjc=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YmNjYTU3OTBjYzZmYTVkZGQwZDZjNTI3ZTAxZjBmOTQ2MzU5ZGRlZTc2ZDc0
|
14
|
+
YTJmZTI1MzNiYWFkZGM3Mjk2YTUxZTUyYzk0NTljNTExMzY2YzEwYjAyY2M2
|
15
|
+
OThlY2ZlYTU3NDRjYmQ4ZWEyM2YwOWUzNTJhMGFjYTEzMTI2ZjM=
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Isurvey
|
2
2
|
|
3
|
-
|
3
|
+
Gem for interacting with iSurvey's SOAP api.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -16,9 +16,58 @@ Or install it yourself as:
|
|
16
16
|
|
17
17
|
$ gem install isurvey
|
18
18
|
|
19
|
+
You must set up your company identifier and survey password. Perhaps in config/initiaizers/isurvey.rb if you are using Rails.
|
20
|
+
|
21
|
+
Isurvey::Credentials.company_identifier = [cp]
|
22
|
+
Isurvey::Credentials.survey_password = [sp]
|
23
|
+
|
19
24
|
## Usage
|
20
25
|
|
21
|
-
|
26
|
+
There are questions and answers. Questions are available through Isurvey::Question and answers are available through Isurvey::Answer.
|
27
|
+
|
28
|
+
To get a list of all questions:
|
29
|
+
|
30
|
+
Isurvey::Question.all
|
31
|
+
|
32
|
+
To get a list of all answers:
|
33
|
+
|
34
|
+
Isurvey::Answer.all
|
35
|
+
|
36
|
+
All of the properties available through the iSurvye API are also available through the gem. You obtain a property value by calling for it on the appropriate class; for example, Isurvey::Answer.all.first.screen_id would give you the screen_id of the first Answer.
|
37
|
+
|
38
|
+
For questions, the available properties are:
|
39
|
+
|
40
|
+
:screen_id, :question_number, :screen_id_next, :show_labels, :selectable_images, :screen_text, :screen_instructions, :theme_class_id, :screen_options, :answers, :questions
|
41
|
+
|
42
|
+
For answers, the available properties are:
|
43
|
+
|
44
|
+
:screen_id, :question_id, :answer_id, :result_answer, :response_date
|
45
|
+
|
46
|
+
You can also get direct access to the API. I do not recommend relying on any of these methods since they are being phased out.
|
47
|
+
|
48
|
+
Get a list of the questions:
|
49
|
+
|
50
|
+
Isurvey::API.questions
|
51
|
+
|
52
|
+
Get a list of the result ids:
|
53
|
+
|
54
|
+
Isurvey::API.result_ids
|
55
|
+
|
56
|
+
Get a list of the questions by screen id:
|
57
|
+
|
58
|
+
Isurvey::API.question_by_screen_id(screen_id)
|
59
|
+
|
60
|
+
Get a list of the answers by screen id:
|
61
|
+
|
62
|
+
Isurvey::API.answers_by_screen_id(screen_id)
|
63
|
+
|
64
|
+
Get a list of the answers by result id:
|
65
|
+
|
66
|
+
Isurvey::API.answers_by_result_id(result)
|
67
|
+
|
68
|
+
Get a list of the answers by result id and screen id:
|
69
|
+
|
70
|
+
Isurvey::API.answer_by_screen_and_result_id(result_id: id, screen_id: id)
|
22
71
|
|
23
72
|
## Contributing
|
24
73
|
|
data/isurvey.gemspec
CHANGED
data/lib/isurvey/api.rb
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
module Isurvey
|
2
|
+
class API
|
3
|
+
def self.questions
|
4
|
+
unless @questions
|
5
|
+
@questions = []
|
6
|
+
self.screens.each do |question|
|
7
|
+
@questions << Question.new(hash: question)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
@questions
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.result_ids
|
14
|
+
unless @result_ids
|
15
|
+
@result_ids = []
|
16
|
+
survey_results.each do |result|
|
17
|
+
@result_ids << result[:result_id]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
@result_ids
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
def self.question_by_screen_id(id)
|
25
|
+
self.screens.each do |question|
|
26
|
+
if question[:screen_id] == id
|
27
|
+
return question[:screen_text]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.answer_by_screen_and_result_id(options)
|
33
|
+
answers_by_result_id(options[:result_id]) & answers_by_screen_id(options[:screen_id])
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.answers_by_result_id(id)
|
37
|
+
survey_results.each do |result|
|
38
|
+
if result[:result_id] == id
|
39
|
+
return result[:screen_results][:result]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.answers_by_screen_id(id)
|
45
|
+
@answers = []
|
46
|
+
survey_results.each do |result|
|
47
|
+
result[:screen_results][:result].each do |question|
|
48
|
+
@answers << question if question[:screen_id] == id
|
49
|
+
end
|
50
|
+
end
|
51
|
+
@answers
|
52
|
+
|
53
|
+
private
|
54
|
+
def self.survey
|
55
|
+
SOAPClient.export_survey.body[:export_survey_response][:export_survey_result]
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.survey_results
|
59
|
+
SOAPClient.export_survey_results.body[:export_survey_results_response][:export_survey_results_result][:survey_result]
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.screens
|
63
|
+
survey[:screens][:screen]
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/lib/isurvey/base.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Isurvey
|
2
|
+
class SOAPClient
|
3
|
+
def self.savon_client
|
4
|
+
@savon_client ||= Savon.client(
|
5
|
+
wsdl: "https://isurveysoft.com/servicesv3/exportservice.asmx?WSDL"
|
6
|
+
)
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.savon_call(operation)
|
10
|
+
self.savon_client.call(
|
11
|
+
operation,
|
12
|
+
message:
|
13
|
+
{
|
14
|
+
cp: Credentials.company_identifier,
|
15
|
+
sp: Credentials.survey_password
|
16
|
+
}
|
17
|
+
)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.export_survey
|
21
|
+
@export_survey ||= self.savon_call(:export_survey)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.export_survey_results
|
25
|
+
@export_survey_results ||= self.savon_call(:export_survey_results)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/isurvey/version.rb
CHANGED
data/lib/isurvey.rb
CHANGED
@@ -1,101 +1,16 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'isurvey/version'
|
2
|
+
require 'savon'
|
3
|
+
require 'isurvey/base'
|
4
|
+
require 'isurvey/collector'
|
5
|
+
require 'isurvey/soap_client'
|
6
|
+
require 'isurvey/api'
|
7
|
+
require 'isurvey/question'
|
8
|
+
require 'isurvey/answer'
|
3
9
|
|
4
10
|
module Isurvey
|
5
|
-
class
|
11
|
+
class Credentials
|
6
12
|
class << self
|
7
13
|
attr_accessor :company_identifier, :survey_password
|
8
14
|
end
|
9
|
-
|
10
|
-
def self.savon_client
|
11
|
-
@savon_client ||= Savon.client(
|
12
|
-
wsdl: "https://isurveysoft.com/servicesv3/exportservice.asmx?WSDL"
|
13
|
-
)
|
14
|
-
end
|
15
|
-
|
16
|
-
def self.savon_call(operation)
|
17
|
-
self.savon_client.call(
|
18
|
-
operation,
|
19
|
-
message:
|
20
|
-
{
|
21
|
-
cp: company_identifier,
|
22
|
-
sp: survey_password
|
23
|
-
}
|
24
|
-
)
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.export_survey
|
28
|
-
@export_survey ||= self.savon_call(:export_survey)
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.export_survey_results
|
32
|
-
@export_survey_results ||= self.savon_call(:export_survey_results)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
class API
|
37
|
-
def self.questions
|
38
|
-
unless @questions
|
39
|
-
@questions = []
|
40
|
-
self.screens.each do |question|
|
41
|
-
@questions << question
|
42
|
-
end
|
43
|
-
end
|
44
|
-
@questions
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.result_ids
|
48
|
-
unless @result_ids
|
49
|
-
@result_ids = []
|
50
|
-
survey_results.each do |result|
|
51
|
-
@result_ids << result[:result_id]
|
52
|
-
end
|
53
|
-
end
|
54
|
-
@result_ids
|
55
|
-
end
|
56
|
-
|
57
|
-
|
58
|
-
def self.question_by_screen_id(id)
|
59
|
-
self.screens.each do |question|
|
60
|
-
if question[:screen_id] == id
|
61
|
-
return question[:screen_text]
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def self.answer_by_screen_and_result_id(options)
|
67
|
-
answers_by_result_id(options[:result_id]) & answers_by_screen_id(options[:screen_id])
|
68
|
-
end
|
69
|
-
|
70
|
-
def self.answers_by_result_id(id)
|
71
|
-
survey_results.each do |result|
|
72
|
-
if result[:result_id] == id
|
73
|
-
return result[:screen_results][:result]
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
def self.answers_by_screen_id(id)
|
79
|
-
@answers = []
|
80
|
-
survey_results.each do |result|
|
81
|
-
result[:screen_results][:result].each do |question|
|
82
|
-
@answers << question if question[:screen_id] == id
|
83
|
-
end
|
84
|
-
end
|
85
|
-
@answers
|
86
|
-
end
|
87
|
-
|
88
|
-
private
|
89
|
-
def self.survey
|
90
|
-
SOAPClient.export_survey.body[:export_survey_response][:export_survey_result]
|
91
|
-
end
|
92
|
-
|
93
|
-
def self.survey_results
|
94
|
-
SOAPClient.export_survey_results.body[:export_survey_results_response][:export_survey_results_result][:survey_result]
|
95
|
-
end
|
96
|
-
|
97
|
-
def self.screens
|
98
|
-
survey[:screens][:screen]
|
99
|
-
end
|
100
15
|
end
|
101
16
|
end
|
data/spec/answer_spec.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Isurvey::Answer do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@answer1 = Isurvey::Answer.new(hash: {:screen_id=>"431583", :question_id=>nil, :answer_id=>nil, :result_answer=>"9", :response_date=>"2013-06-14 19:34:58"})
|
7
|
+
@answer2 = Isurvey::Answer.new(hash: {:screen_id=>"431583", :question_id=>nil, :answer_id=>nil, :result_answer=>"9", :response_date=>"2013-06-14 19:34:58"})
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should return the correct screen_id" do
|
11
|
+
@answer1.screen_id.should == '431583'
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should return the correct result_answer" do
|
15
|
+
@answer1.result_answer.should == '9'
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return all questions for all" do
|
19
|
+
Isurvey::Answer.all.length.should == 2
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Isurvey::Question do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@question1 = Isurvey::Question.new(hash: {:screen_id=>"431424", :question_number=>"0", :screen_id_next=>"431426", :show_labels=>true, :selectable_images=>false, :screen_text=>"This is the Week in the Life Daily Survey. ", :screen_instruction=>nil, :theme_class_id=>"59786", :screen_options=>{:screen_option=>[{:screen_option_ref_code=>"DisplayImageAboveText", :screen_option_value_text=>"False"}, {:screen_option_ref_code=>"SelectableImages", :screen_option_value_text=>false}, {:screen_option_ref_code=>"ShowLabels", :screen_option_value_text=>true}]}, :answers=>nil, :questions=>nil, :@type=>"information", :@next_screen_is_linked=>"false"})
|
7
|
+
@question2 = Isurvey::Question.new(hash: {:screen_id=>"431424", :question_number=>"0", :screen_id_next=>"431426", :show_labels=>true, :selectable_images=>false, :screen_text=>"This is the Week in the Life Daily Survey. ", :screen_instruction=>nil, :theme_class_id=>"59786", :screen_options=>{:screen_option=>[{:screen_option_ref_code=>"DisplayImageAboveText", :screen_option_value_text=>"False"}, {:screen_option_ref_code=>"SelectableImages", :screen_option_value_text=>false}, {:screen_option_ref_code=>"ShowLabels", :screen_option_value_text=>true}]}, :answers=>nil, :questions=>nil, :@type=>"information", :@next_screen_is_linked=>"false"})
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should return the correct screen_id" do
|
11
|
+
@question1.screen_id.should == '431424'
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should return the correct screen_text" do
|
15
|
+
@question1.screen_text.should == 'This is the Week in the Life Daily Survey. '
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should return all questions for all" do
|
19
|
+
Isurvey::Question.all.length.should == 2
|
20
|
+
end
|
21
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: isurvey
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Nipper
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '2.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,7 +94,16 @@ files:
|
|
80
94
|
- Rakefile
|
81
95
|
- isurvey.gemspec
|
82
96
|
- lib/isurvey.rb
|
97
|
+
- lib/isurvey/answer.rb
|
98
|
+
- lib/isurvey/api.rb
|
99
|
+
- lib/isurvey/base.rb
|
100
|
+
- lib/isurvey/collector.rb
|
101
|
+
- lib/isurvey/question.rb
|
102
|
+
- lib/isurvey/soap_client.rb
|
83
103
|
- lib/isurvey/version.rb
|
104
|
+
- spec/answer_spec.rb
|
105
|
+
- spec/question_spec.rb
|
106
|
+
- spec/spec_helper.rb
|
84
107
|
homepage: http://github.com/mnipper/isurvey
|
85
108
|
licenses:
|
86
109
|
- MIT
|
@@ -105,4 +128,7 @@ rubygems_version: 2.0.3
|
|
105
128
|
signing_key:
|
106
129
|
specification_version: 4
|
107
130
|
summary: Communicate with the iSurvey SOAP api.
|
108
|
-
test_files:
|
131
|
+
test_files:
|
132
|
+
- spec/answer_spec.rb
|
133
|
+
- spec/question_spec.rb
|
134
|
+
- spec/spec_helper.rb
|