questionpro_rails 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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2d6e003cb1bcdd9a07661aefb22307eee6d19613
4
+ data.tar.gz: b98f9212d4f10308bbec9bca671ddaa136dc0a17
5
+ SHA512:
6
+ metadata.gz: a3bef939ee6eb6feeb43668954c936cff73235db6f407b7562476fdb11bd4a09c75e380343c9bf7f9f3d9a4e1d8ad4f59b0bac2584ef7d8bfa39807c0c482fef
7
+ data.tar.gz: 2f4a93014ce95269074001669c3867b043d475ebbc04f9a2d660f2227a59060352aff5d61e2bbd144acae238b19eac18bb56f8a4150b2767fe23dd67331ffc62
@@ -0,0 +1,38 @@
1
+ require 'httparty'
2
+ require "questionpro_rails/configuration"
3
+ require "questionpro_rails/version"
4
+ require "questionpro_rails/api_request"
5
+
6
+ module QuestionproRails
7
+
8
+ class << self
9
+ attr_accessor :configuration
10
+
11
+ def configuration
12
+ @configuration ||= Configuration.new
13
+ end
14
+
15
+ def reset
16
+ @configuration = Configuration.new
17
+ end
18
+
19
+ def configure
20
+ yield(configuration)
21
+ end
22
+
23
+ def api_key
24
+ configuration.api_key
25
+ end
26
+ end
27
+
28
+ # def self.surveys(options = {})
29
+ # url = "#{ QuestionproRails.base_path('questionpro.survey.getAllSurveys') }"
30
+ # response = get(url)
31
+ # if response.success?
32
+ # new(response)
33
+ # else
34
+ # raise response.response
35
+ # end
36
+ # end
37
+
38
+ end
@@ -0,0 +1,64 @@
1
+ require "questionpro_rails/survey"
2
+ require "questionpro_rails/survey_response_count"
3
+
4
+ module QuestionproRails
5
+ class ApiRequest
6
+ include HTTParty
7
+ format :json
8
+ base_uri 'www.questionpro.com'
9
+
10
+ attr_accessor :id, :result_mode, :start_date, :end_date, :starting_response_counter, :status
11
+
12
+ def initialize(id, result_mode = 0, start_date = nil, end_date = nil, starting_response_counter = nil)
13
+ @id = id
14
+ @result_mode = result_mode
15
+ @start_date = start_date
16
+ @end_date = end_date
17
+ @starting_response_counter = starting_response_counter
18
+ end
19
+
20
+ def self.base_path(method_url)
21
+ "/a/api/#{method_url}?apiKey=#{QuestionproRails.api_key}"
22
+ end
23
+
24
+ def options
25
+ {id: self.id, resultMode: self.result_mode, startDate: self.start_date,
26
+ endDate: self.end_date, startingResponseCounter: self.starting_response_counter}.compact.to_json
27
+ end
28
+
29
+ def list_surveys
30
+ url = ApiRequest.base_path("questionpro.survey.getAllSurveys")
31
+ result = self.class.get(url, body: self.options)
32
+
33
+ self.status = result['status']
34
+ result = result['response']['surveys']
35
+
36
+ surveys = []
37
+ result.each do |survey|
38
+ surveys.push(Survey.new(survey))
39
+ end
40
+
41
+ return surveys
42
+ end
43
+
44
+ def get_survey
45
+ url = ApiRequest.base_path("questionpro.survey.getSurvey")
46
+ result = self.class.get(url, body: self.options)
47
+
48
+ self.status = result['status']
49
+ survey = Survey.new(result['response'])
50
+
51
+ return survey
52
+ end
53
+
54
+ def get_survey_response_count
55
+ url = ApiRequest.base_path("questionpro.survey.responseCount")
56
+ result = self.class.get(url, body: self.options)
57
+
58
+ self.status = result['status']
59
+ response_count = SurveyResponseCount.new(result['response'])
60
+
61
+ return response_count
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,9 @@
1
+ module QuestionproRails
2
+ class Configuration
3
+ attr_accessor :api_key
4
+
5
+ def initialize
6
+ @api_key = nil
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ module QuestionproRails
2
+ class Survey
3
+
4
+ attr_reader :id, :name, :subtitle, :url, :thank_you_message,
5
+ :has_scoring_logic, :numeric_title, :status
6
+
7
+ def initialize (attributes)
8
+ @id = (attributes['id'] || attributes['surveyID'])
9
+ @name = (attributes['title'] || attributes['surveyName'])
10
+ @url = (attributes['surveyURL'] || attributes['connectURL'])
11
+ @subtitle = attributes['subtitle']
12
+ @thank_you_message = attributes['thankYouMessage']
13
+ @has_scoring_logic = attributes['hasScoringLogic']
14
+ @numeric_title = attributes['numericTitle']
15
+ @status = attributes['status']
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ module QuestionproRails
2
+ class SurveyResponseCount
3
+
4
+ attr_reader :id, :name, :partial_count, :overall_viewed_count, :overall_complete_count,
5
+ :overall_terminated_count, :terminated_count, :overall_started_count,
6
+ :complete_count, :started_count, :status
7
+
8
+ def initialize (attributes)
9
+ @id = attributes['id']
10
+ @name = attributes['name']
11
+ @partial_count = attributes['partialCount']
12
+ @overall_viewed_count = attributes['overallViewedCount']
13
+ @overall_complete_count = attributes['overallCompleteCount']
14
+ @overall_terminated_count = attributes['overallTerminatedCount']
15
+ @terminated_count = attributes['terminatedCount']
16
+ @overall_started_count = attributes['overallStartedCount']
17
+ @complete_count = attributes['completeCount']
18
+ @started_count = attributes['startedCount']
19
+ @status = attributes['status']
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,3 @@
1
+ module QuestionproRails
2
+ VERSION = "0.0.3"
3
+ end
metadata ADDED
@@ -0,0 +1,106 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: questionpro_rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Assem Deghady
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-11-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: httparty
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description:
70
+ email:
71
+ - assem.deghady@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - lib/questionpro_rails.rb
77
+ - lib/questionpro_rails/api_request.rb
78
+ - lib/questionpro_rails/configuration.rb
79
+ - lib/questionpro_rails/survey.rb
80
+ - lib/questionpro_rails/survey_response_count.rb
81
+ - lib/questionpro_rails/version.rb
82
+ homepage: https://github.com/AssemDeghady/questionpro_rails
83
+ licenses:
84
+ - MIT
85
+ metadata: {}
86
+ post_install_message:
87
+ rdoc_options: []
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ requirements: []
101
+ rubyforge_project:
102
+ rubygems_version: 2.6.13
103
+ signing_key:
104
+ specification_version: 4
105
+ summary: An Api Wrapper for QuestionPro's Surveys Services.
106
+ test_files: []