refworks 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. checksums.yaml +15 -0
  2. data/README.md +120 -0
  3. data/lib/refworks.rb +183 -0
  4. data/lib/refworks/authentication/authentication_request.rb +17 -0
  5. data/lib/refworks/authentication/authentication_response.rb +3 -0
  6. data/lib/refworks/authentication/delsess/authentication_delsess_request.rb +20 -0
  7. data/lib/refworks/authentication/delsess/authentication_delsess_response.rb +3 -0
  8. data/lib/refworks/authentication/newsess/authentication_newsess_request.rb +37 -0
  9. data/lib/refworks/authentication/newsess/authentication_newsess_response.rb +10 -0
  10. data/lib/refworks/authentication/newtempusersess/authentication_newtempusersess_request.rb +21 -0
  11. data/lib/refworks/authentication/newtempusersess/authentication_newtempusersess_response.rb +9 -0
  12. data/lib/refworks/authentication/ping/authentication_ping_request.rb +21 -0
  13. data/lib/refworks/authentication/ping/authentication_ping_response.rb +3 -0
  14. data/lib/refworks/authentication/userexists/authentication_userexists_request.rb +37 -0
  15. data/lib/refworks/authentication/userexists/authentication_userexists_response.rb +3 -0
  16. data/lib/refworks/authors/all/authors_all_request.rb +29 -0
  17. data/lib/refworks/authors/all/authors_all_response.rb +3 -0
  18. data/lib/refworks/authors/author.rb +10 -0
  19. data/lib/refworks/authors/authors_request.rb +23 -0
  20. data/lib/refworks/authors/authors_response.rb +32 -0
  21. data/lib/refworks/authors/search/authors_search_request.rb +23 -0
  22. data/lib/refworks/authors/search/authors_search_response.rb +3 -0
  23. data/lib/refworks/descriptors/all/descriptors_all_request.rb +21 -0
  24. data/lib/refworks/descriptors/all/descriptors_all_response.rb +3 -0
  25. data/lib/refworks/descriptors/descriptor.rb +8 -0
  26. data/lib/refworks/descriptors/descriptors_request.rb +17 -0
  27. data/lib/refworks/descriptors/descriptors_response.rb +31 -0
  28. data/lib/refworks/descriptors/search/descriptors_search_request.rb +24 -0
  29. data/lib/refworks/descriptors/search/descriptors_search_response.rb +3 -0
  30. data/lib/refworks/folders/all/folders_all_request.rb +20 -0
  31. data/lib/refworks/folders/all/folders_all_response.rb +3 -0
  32. data/lib/refworks/folders/folder.rb +10 -0
  33. data/lib/refworks/folders/folders_request.rb +17 -0
  34. data/lib/refworks/folders/folders_response.rb +32 -0
  35. data/lib/refworks/folders/search/folders_search_request.rb +21 -0
  36. data/lib/refworks/folders/search/folders_search_response.rb +3 -0
  37. data/lib/refworks/importfilter/allavailable/importfilter_allavailable_request.rb +20 -0
  38. data/lib/refworks/importfilter/allavailable/importfilter_allavailable_response.rb +3 -0
  39. data/lib/refworks/importfilter/allglobal/importfilter_allglobal_request.rb +20 -0
  40. data/lib/refworks/importfilter/allglobal/importfilter_allglobal_response.rb +3 -0
  41. data/lib/refworks/importfilter/favorites/importfilter_favorites_request.rb +20 -0
  42. data/lib/refworks/importfilter/favorites/importfilter_favorites_response.rb +3 -0
  43. data/lib/refworks/importfilter/importfilter.rb +18 -0
  44. data/lib/refworks/importfilter/importfilter_request.rb +16 -0
  45. data/lib/refworks/importfilter/importfilter_response.rb +35 -0
  46. data/lib/refworks/importfilter/search/importfilter_search_request.rb +22 -0
  47. data/lib/refworks/importfilter/search/importfilter_search_response.rb +3 -0
  48. data/lib/refworks/manuscript/all/manuscript_all_request.rb +22 -0
  49. data/lib/refworks/manuscript/all/manuscript_all_response.rb +13 -0
  50. data/lib/refworks/manuscript/baseurl/manuscript_baseurl_request.rb +22 -0
  51. data/lib/refworks/manuscript/baseurl/manuscript_baseurl_response.rb +13 -0
  52. data/lib/refworks/manuscript/byid/manuscript_byid_request.rb +32 -0
  53. data/lib/refworks/manuscript/byid/manuscript_byid_response.rb +3 -0
  54. data/lib/refworks/manuscript/file/manuscript_file_request.rb +22 -0
  55. data/lib/refworks/manuscript/file/manuscript_file_response.rb +18 -0
  56. data/lib/refworks/manuscript/folder/manuscript_folder_request.rb +22 -0
  57. data/lib/refworks/manuscript/folder/manuscript_folder_response.rb +14 -0
  58. data/lib/refworks/manuscript/manuscript_request.rb +20 -0
  59. data/lib/refworks/manuscript/manuscript_response.rb +3 -0
  60. data/lib/refworks/manuscript/mylist/manuscript_mylist_request.rb +21 -0
  61. data/lib/refworks/manuscript/mylist/manuscript_mylist_response.rb +14 -0
  62. data/lib/refworks/periodicals/all/periodicals_all_request.rb +21 -0
  63. data/lib/refworks/periodicals/all/periodicals_all_response.rb +3 -0
  64. data/lib/refworks/periodicals/periodical.rb +9 -0
  65. data/lib/refworks/periodicals/periodicals_request.rb +17 -0
  66. data/lib/refworks/periodicals/periodicals_response.rb +31 -0
  67. data/lib/refworks/periodicals/search/periodicals_search_request.rb +22 -0
  68. data/lib/refworks/periodicals/search/periodicals_search_response.rb +3 -0
  69. data/lib/refworks/properties/encoding/encoding.rb +3 -0
  70. data/lib/refworks/properties/encoding/properties_encoding_request.rb +20 -0
  71. data/lib/refworks/properties/encoding/properties_encoding_response.rb +3 -0
  72. data/lib/refworks/properties/fieldlabels/fieldlabel.rb +13 -0
  73. data/lib/refworks/properties/fieldlabels/properties_fieldlabels_request.rb +22 -0
  74. data/lib/refworks/properties/fieldlabels/properties_fieldlabels_response.rb +20 -0
  75. data/lib/refworks/properties/fieldlabels/reftypeFieldlabels.rb +11 -0
  76. data/lib/refworks/properties/languages/language.rb +8 -0
  77. data/lib/refworks/properties/languages/properties_languages_request.rb +22 -0
  78. data/lib/refworks/properties/languages/properties_languages_response.rb +20 -0
  79. data/lib/refworks/properties/outputlanguage/outputlanguage.rb +8 -0
  80. data/lib/refworks/properties/outputlanguage/properties_outputlanguage_request.rb +22 -0
  81. data/lib/refworks/properties/outputlanguage/properties_outputlanguage_response.rb +20 -0
  82. data/lib/refworks/properties/properties_request.rb +15 -0
  83. data/lib/refworks/properties/properties_response.rb +3 -0
  84. data/lib/refworks/properties/sortlocales/properties_sortlocales_request.rb +20 -0
  85. data/lib/refworks/properties/sortlocales/properties_sortlocales_response.rb +20 -0
  86. data/lib/refworks/properties/sortlocales/sortlocale.rb +8 -0
  87. data/lib/refworks/properties/sourcetypes/properties_sourcetypes_request.rb +21 -0
  88. data/lib/refworks/properties/sourcetypes/properties_sourcetypes_response.rb +20 -0
  89. data/lib/refworks/properties/sourcetypes/sourcetype.rb +8 -0
  90. data/lib/refworks/properties/typelabels/properties_typelabels_request.rb +21 -0
  91. data/lib/refworks/properties/typelabels/properties_typelabels_response.rb +20 -0
  92. data/lib/refworks/properties/typelabels/typelabel.rb +8 -0
  93. data/lib/refworks/reference.rb +526 -0
  94. data/lib/refworks/reference/get/reference_get_request.rb +21 -0
  95. data/lib/refworks/reference/get/reference_get_response.rb +7 -0
  96. data/lib/refworks/reference/reference_request.rb +15 -0
  97. data/lib/refworks/reference/reference_response.rb +3 -0
  98. data/lib/refworks/request.rb +50 -0
  99. data/lib/refworks/response.rb +12 -0
  100. data/lib/refworks/retrieve/advancesearch/retrieve_advancesearch_request.rb +41 -0
  101. data/lib/refworks/retrieve/advancesearch/retrieve_advancesearch_response.rb +3 -0
  102. data/lib/refworks/retrieve/all/retrieve_all_request.rb +21 -0
  103. data/lib/refworks/retrieve/all/retrieve_all_response.rb +3 -0
  104. data/lib/refworks/retrieve/author/retrieve_author_request.rb +23 -0
  105. data/lib/refworks/retrieve/author/retrieve_author_response.rb +3 -0
  106. data/lib/refworks/retrieve/byid/retrieve_byid_request.rb +22 -0
  107. data/lib/refworks/retrieve/byid/retrieve_byid_response.rb +3 -0
  108. data/lib/refworks/retrieve/count/retrieve_count_request.rb +21 -0
  109. data/lib/refworks/retrieve/count/retrieve_count_response.rb +16 -0
  110. data/lib/refworks/retrieve/descriptor/retrieve_descriptor_request.rb +22 -0
  111. data/lib/refworks/retrieve/descriptor/retrieve_descriptor_response.rb +3 -0
  112. data/lib/refworks/retrieve/dup/retrieve_dup_request.rb +21 -0
  113. data/lib/refworks/retrieve/dup/retrieve_dup_response.rb +3 -0
  114. data/lib/refworks/retrieve/folder/retrieve_folder_request.rb +21 -0
  115. data/lib/refworks/retrieve/folder/retrieve_folder_response.rb +3 -0
  116. data/lib/refworks/retrieve/modsince/retrieve_modsince_request.rb +23 -0
  117. data/lib/refworks/retrieve/modsince/retrieve_modsince_response.rb +3 -0
  118. data/lib/refworks/retrieve/nofolder/retrieve_nofolder_request.rb +20 -0
  119. data/lib/refworks/retrieve/nofolder/retrieve_nofolder_response.rb +3 -0
  120. data/lib/refworks/retrieve/periodical/retrieve_periodical_request.rb +22 -0
  121. data/lib/refworks/retrieve/periodical/retrieve_periodical_response.rb +3 -0
  122. data/lib/refworks/retrieve/quick/retrieve_quick_request.rb +23 -0
  123. data/lib/refworks/retrieve/quick/retrieve_quick_response.rb +3 -0
  124. data/lib/refworks/retrieve/retrieve_request.rb +22 -0
  125. data/lib/refworks/retrieve/retrieve_response.rb +34 -0
  126. data/lib/refworks/retrieve/saved/retrieve_saved_request.rb +22 -0
  127. data/lib/refworks/retrieve/saved/retrieve_saved_response.rb +3 -0
  128. data/lib/refworks/retrieve/specialfolder/retrieve_specialfolder_request.rb +21 -0
  129. data/lib/refworks/retrieve/specialfolder/retrieve_specialfolder_response.rb +3 -0
  130. data/lib/refworks/savedsearch/all/savedsearch_all_request.rb +21 -0
  131. data/lib/refworks/savedsearch/all/savedsearch_all_response.rb +3 -0
  132. data/lib/refworks/savedsearch/get/savedsearch_get_request.rb +22 -0
  133. data/lib/refworks/savedsearch/get/savedsearch_get_response.rb +3 -0
  134. data/lib/refworks/savedsearch/savedsearch.rb +21 -0
  135. data/lib/refworks/savedsearch/savedsearch_parameter.rb +18 -0
  136. data/lib/refworks/savedsearch/savedsearch_parameter_component.rb +10 -0
  137. data/lib/refworks/savedsearch/savedsearch_request.rb +15 -0
  138. data/lib/refworks/savedsearch/savedsearch_response.rb +24 -0
  139. data/lib/refworks/version.rb +3 -0
  140. metadata +224 -0
@@ -0,0 +1,21 @@
1
+ class AuthenticationPingRequest < AuthenticationRequest
2
+ def self.call_method
3
+ 'ping'
4
+ end
5
+
6
+ def self.generate_request_info(params)
7
+
8
+ # get common Authentication parameters
9
+ class_params = generate_class_params(params)
10
+
11
+ # query parameters for the ping call
12
+ method_params = { :method => call_method,
13
+ }
14
+
15
+ query_string_params = class_params.merge(method_params)
16
+
17
+ # return the request info
18
+ {:params => query_string_params}
19
+ end
20
+
21
+ end
@@ -0,0 +1,3 @@
1
+ class AuthenticationPingResponse < AuthenticationResponse
2
+
3
+ end
@@ -0,0 +1,37 @@
1
+ class AuthenticationUserexistsRequest < AuthenticationRequest
2
+ def self.call_method
3
+ 'userexists'
4
+ end
5
+
6
+ def self.http_request_verb
7
+ 'POST'
8
+ end
9
+
10
+ def self.generate_request_info(params)
11
+
12
+ # get common Authentication parameters
13
+ class_params = generate_class_params(params)
14
+
15
+ # query parameters for the ping call
16
+ method_params = { :method => call_method,
17
+ }
18
+
19
+ query_string_params = class_params.merge(method_params)
20
+
21
+ # Construct the XML payload for the userexists call.
22
+ login_name = params[:login_name]
23
+ password = params[:password]
24
+ group_code = params[:group_code]
25
+
26
+ message_body = <<-EOS
27
+ <RWRequest class="authentication" method="userexists">
28
+ <AcctInfo loginName="#{login_name}" groupCode="#{group_code}" password="#{password}"></AcctInfo>
29
+ </RWRequest>
30
+ EOS
31
+
32
+ # return the request info
33
+ {:params => query_string_params, :body => message_body, :headers => {'Content-type' => 'text/xml'}}
34
+ end
35
+
36
+
37
+ end
@@ -0,0 +1,3 @@
1
+ class AuthenticationUserexistsResponse < AuthenticationResponse
2
+
3
+ end
@@ -0,0 +1,29 @@
1
+ # The Author class all method call.
2
+ # This call has no method-specific parameters.
3
+ #
4
+ # Users will not instantiate this class directly; the Refworks.request method will do so.
5
+ # @api private
6
+ class AuthorsAllRequest < AuthorsRequest
7
+ def self.call_method
8
+ 'all'
9
+ end
10
+
11
+ # Assembles the information needed to construct the query string for this request
12
+ # @param [Hash] params This should be an empty hash. This call has no method-specific parameters.
13
+ # @return [Hash] Returns hash of request parameters for this call.
14
+ def self.generate_request_info(params)
15
+
16
+ # get common Authors parameters
17
+ class_params = generate_class_params(params)
18
+
19
+ # query parameters for the all call
20
+ method_params = { :method => call_method,
21
+ }
22
+
23
+ query_string_params = class_params.merge(method_params)
24
+
25
+ # return the request info
26
+ {:params => query_string_params}
27
+ end
28
+
29
+ end
@@ -0,0 +1,3 @@
1
+ class AuthorsAllResponse < AuthorsResponse
2
+
3
+ end
@@ -0,0 +1,10 @@
1
+ class Author
2
+
3
+ attr_reader :name, :nRefs
4
+
5
+ def initialize(rawauthor)
6
+ @name = rawauthor["__content__"]
7
+ @nRefs = rawauthor["nRefs"]
8
+ end
9
+
10
+ end
@@ -0,0 +1,23 @@
1
+ # The Author class base abstract request class.
2
+ # Parameters common to all Author class calls are captured here.
3
+ #
4
+ # @abstract
5
+ # @api private
6
+ class AuthorsRequest < Request
7
+ def self.call_class
8
+ "authors"
9
+ end
10
+
11
+ # Handle parameters common to all Author calls.
12
+ # @param [Hash] params All Author class calls should include the params :pgsize and :pgnum in their method_params.
13
+ def self.generate_class_params(params)
14
+ class_name = call_class()
15
+
16
+ # query parameters common to all Authors calls
17
+ {
18
+ :class => class_name,
19
+ :pgsize => params[:pgsize] || 50,
20
+ :pgnum => params[:pgnum] || 1,
21
+ }
22
+ end
23
+ end
@@ -0,0 +1,32 @@
1
+ class AuthorsResponse < Response
2
+
3
+ attr_reader :total, :authors
4
+
5
+ def initialize(raw_response)
6
+ super(raw_response)
7
+ if result_code != "200"
8
+ @total = "0"
9
+ return
10
+ end
11
+
12
+ # If results returned, process the authors and metadata
13
+
14
+ @total = self.parsed_response["refworks"]["RWResult"]["RWAuthor"]["total"]
15
+
16
+ author_list = self.parsed_response["refworks"]["RWResult"]["RWAuthor"]["Author"]
17
+
18
+ # here we parse out authors into an array of actual Author objects (even if only 1 ref returned)
19
+ @authors = Array.new
20
+
21
+ # The RefWorks API can return an array or a single element depending on how many authors were returned.
22
+ if author_list.class == Array
23
+ author_list.each do |rawauthor|
24
+ @authors << Author.new(rawauthor)
25
+ end
26
+ else
27
+ # here, "author_list" is just a hash representing a single author
28
+ # in other words, only one author was returned
29
+ @authors << Author.new(author_list)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,23 @@
1
+ class AuthorsSearchRequest < AuthorsRequest
2
+
3
+ def self.call_method
4
+ 'search'
5
+ end
6
+
7
+ def self.generate_request_info(params)
8
+
9
+ # get common Authors parameters
10
+ class_params = generate_class_params(params)
11
+
12
+ # query parameters for the search call
13
+ method_params = { :method => call_method,
14
+ :search => params[:search],
15
+ }
16
+
17
+ query_string_params = class_params.merge(method_params)
18
+
19
+ # return the request info
20
+ {:params => query_string_params}
21
+ end
22
+
23
+ end
@@ -0,0 +1,3 @@
1
+ class AuthorsSearchResponse < AuthorsResponse
2
+
3
+ end
@@ -0,0 +1,21 @@
1
+ class DescriptorsAllRequest < DescriptorsRequest
2
+ def self.call_method
3
+ 'all'
4
+ end
5
+
6
+ def self.generate_request_info(params)
7
+
8
+ # get common Descriptors parameters
9
+ class_params = generate_class_params(params)
10
+
11
+ # query parameters for the all call
12
+ method_params = { :method => call_method,
13
+ }
14
+
15
+ query_string_params = class_params.merge(method_params)
16
+
17
+ # return the request info
18
+ {:params => query_string_params}
19
+ end
20
+
21
+ end
@@ -0,0 +1,3 @@
1
+ class DescriptorsAllResponse < DescriptorsResponse
2
+
3
+ end
@@ -0,0 +1,8 @@
1
+ class Descriptor
2
+ attr_reader :name, :nRefs
3
+
4
+ def initialize(rawdesc)
5
+ @name = rawdesc["__content__"]
6
+ @nRefs = rawdesc["nRefs"]
7
+ end
8
+ end
@@ -0,0 +1,17 @@
1
+ class DescriptorsRequest < Request
2
+ def self.call_class
3
+ "descriptors"
4
+ end
5
+
6
+ def self.generate_class_params(params)
7
+ # handle params common to all Descriptors calls
8
+ class_name = call_class()
9
+
10
+ # query parameters common to all Descriptors calls
11
+ {
12
+ :class => class_name,
13
+ :pgsize => params[:pgsize] || 50,
14
+ :pgnum => params[:pgnum] || 1,
15
+ }
16
+ end
17
+ end
@@ -0,0 +1,31 @@
1
+ class DescriptorsResponse < Response
2
+ attr_reader :total, :descriptors
3
+
4
+ def initialize(raw_response)
5
+ super(raw_response)
6
+ if result_code != "200"
7
+ @total = "0"
8
+ return
9
+ end
10
+
11
+ # If results returned, process the descriptors and metadata
12
+
13
+ @total = self.parsed_response["refworks"]["RWResult"]["RWDescriptor"]["total"]
14
+
15
+ desc_list = self.parsed_response["refworks"]["RWResult"]["RWDescriptor"]["Descriptor"]
16
+
17
+ # here we parse out into an array of actual Descriptor objects (even if only 1 ref returned)
18
+ @descriptors = Array.new
19
+
20
+ # The RefWorks API can return an array or a single element depending on how many descriptors were returned.
21
+ if desc_list.class == Array
22
+ desc_list.each do |rawdesc|
23
+ @descriptors << Descriptor.new(rawdesc)
24
+ end
25
+ else
26
+ # here, "descriptor_list" is just a hash representing a single descriptor
27
+ # in other words, only one was returned
28
+ @descriptors << Descriptor.new(desc_list)
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,24 @@
1
+ class DescriptorsSearchRequest < DescriptorsRequest
2
+
3
+ def self.call_method
4
+ 'search'
5
+ end
6
+
7
+ def self.generate_request_info(params)
8
+
9
+ # get common Descriptors parameters
10
+ class_params = generate_class_params(params)
11
+
12
+ # query parameters for the search call
13
+ method_params = { :method => call_method,
14
+ :search => params[:search],
15
+ }
16
+
17
+ query_string_params = class_params.merge(method_params)
18
+
19
+ # return the request info
20
+ {:params => query_string_params}
21
+ end
22
+
23
+
24
+ end
@@ -0,0 +1,3 @@
1
+ class DescriptorsSearchResponse < DescriptorsResponse
2
+
3
+ end
@@ -0,0 +1,20 @@
1
+ class FoldersAllRequest < FoldersRequest
2
+ def self.call_method
3
+ 'all'
4
+ end
5
+
6
+ def self.generate_request_info(params)
7
+
8
+ # get common Folders parameters
9
+ class_params = generate_class_params(params)
10
+
11
+ # query parameters for the all call
12
+ method_params = { :method => call_method,
13
+ }
14
+
15
+ query_string_params = class_params.merge(method_params)
16
+
17
+ # return the request info
18
+ {:params => query_string_params}
19
+ end
20
+ end
@@ -0,0 +1,3 @@
1
+ class FoldersAllResponse < FoldersResponse
2
+
3
+ end
@@ -0,0 +1,10 @@
1
+ class Folder
2
+ attr_reader :name, :nRefs, :type
3
+
4
+ def initialize(rawfolder)
5
+ @name = rawfolder["__content__"]
6
+ @nRefs = rawfolder["nRefs"]
7
+ @type = rawfolder["type"]
8
+ end
9
+
10
+ end
@@ -0,0 +1,17 @@
1
+ class FoldersRequest < Request
2
+ def self.call_class
3
+ "folders"
4
+ end
5
+
6
+ def self.generate_class_params(params)
7
+ # handle params common to all Folders calls
8
+ class_name = call_class()
9
+
10
+ # query parameters common to all Folders calls
11
+ {
12
+ :class => class_name,
13
+ :pgsize => params[:pgsize] || 50,
14
+ :pgnum => params[:pgnum] || 1,
15
+ }
16
+ end
17
+ end
@@ -0,0 +1,32 @@
1
+ class FoldersResponse < Response
2
+
3
+ attr_reader :total, :folders
4
+
5
+ def initialize(raw_response)
6
+ super(raw_response)
7
+ if result_code != "200"
8
+ @total = "0"
9
+ return
10
+ end
11
+
12
+ # If results returned, process the folders and metadata
13
+
14
+ @total = self.parsed_response["refworks"]["RWResult"]["RWFolders"]["total"]
15
+
16
+ folder_list = self.parsed_response["refworks"]["RWResult"]["RWFolders"]["Folders"]
17
+
18
+ # here we parse out folders into an array of actual Author objects (even if only 1 ref returned)
19
+ @folders = Array.new
20
+
21
+ # The RefWorks API can return an array or a single element depending on how many folders were returned.
22
+ if folder_list.class == Array
23
+ folder_list.each do |rawfolder|
24
+ @folders << Folder.new(rawfolder)
25
+ end
26
+ else
27
+ # here, "folder_list" is just a hash representing a single folder
28
+ # in other words, only one folder was returned
29
+ @folders << Folder.new(folder_list)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,21 @@
1
+ class FoldersSearchRequest < FoldersRequest
2
+ def self.call_method
3
+ 'search'
4
+ end
5
+
6
+ def self.generate_request_info(params)
7
+
8
+ # get common Folders parameters
9
+ class_params = generate_class_params(params)
10
+
11
+ # query parameters for the search call
12
+ method_params = { :method => call_method,
13
+ :search => params[:search],
14
+ }
15
+
16
+ query_string_params = class_params.merge(method_params)
17
+
18
+ # return the request info
19
+ {:params => query_string_params}
20
+ end
21
+ end