refworks 0.0.2
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 +15 -0
- data/README.md +120 -0
- data/lib/refworks.rb +183 -0
- data/lib/refworks/authentication/authentication_request.rb +17 -0
- data/lib/refworks/authentication/authentication_response.rb +3 -0
- data/lib/refworks/authentication/delsess/authentication_delsess_request.rb +20 -0
- data/lib/refworks/authentication/delsess/authentication_delsess_response.rb +3 -0
- data/lib/refworks/authentication/newsess/authentication_newsess_request.rb +37 -0
- data/lib/refworks/authentication/newsess/authentication_newsess_response.rb +10 -0
- data/lib/refworks/authentication/newtempusersess/authentication_newtempusersess_request.rb +21 -0
- data/lib/refworks/authentication/newtempusersess/authentication_newtempusersess_response.rb +9 -0
- data/lib/refworks/authentication/ping/authentication_ping_request.rb +21 -0
- data/lib/refworks/authentication/ping/authentication_ping_response.rb +3 -0
- data/lib/refworks/authentication/userexists/authentication_userexists_request.rb +37 -0
- data/lib/refworks/authentication/userexists/authentication_userexists_response.rb +3 -0
- data/lib/refworks/authors/all/authors_all_request.rb +29 -0
- data/lib/refworks/authors/all/authors_all_response.rb +3 -0
- data/lib/refworks/authors/author.rb +10 -0
- data/lib/refworks/authors/authors_request.rb +23 -0
- data/lib/refworks/authors/authors_response.rb +32 -0
- data/lib/refworks/authors/search/authors_search_request.rb +23 -0
- data/lib/refworks/authors/search/authors_search_response.rb +3 -0
- data/lib/refworks/descriptors/all/descriptors_all_request.rb +21 -0
- data/lib/refworks/descriptors/all/descriptors_all_response.rb +3 -0
- data/lib/refworks/descriptors/descriptor.rb +8 -0
- data/lib/refworks/descriptors/descriptors_request.rb +17 -0
- data/lib/refworks/descriptors/descriptors_response.rb +31 -0
- data/lib/refworks/descriptors/search/descriptors_search_request.rb +24 -0
- data/lib/refworks/descriptors/search/descriptors_search_response.rb +3 -0
- data/lib/refworks/folders/all/folders_all_request.rb +20 -0
- data/lib/refworks/folders/all/folders_all_response.rb +3 -0
- data/lib/refworks/folders/folder.rb +10 -0
- data/lib/refworks/folders/folders_request.rb +17 -0
- data/lib/refworks/folders/folders_response.rb +32 -0
- data/lib/refworks/folders/search/folders_search_request.rb +21 -0
- data/lib/refworks/folders/search/folders_search_response.rb +3 -0
- data/lib/refworks/importfilter/allavailable/importfilter_allavailable_request.rb +20 -0
- data/lib/refworks/importfilter/allavailable/importfilter_allavailable_response.rb +3 -0
- data/lib/refworks/importfilter/allglobal/importfilter_allglobal_request.rb +20 -0
- data/lib/refworks/importfilter/allglobal/importfilter_allglobal_response.rb +3 -0
- data/lib/refworks/importfilter/favorites/importfilter_favorites_request.rb +20 -0
- data/lib/refworks/importfilter/favorites/importfilter_favorites_response.rb +3 -0
- data/lib/refworks/importfilter/importfilter.rb +18 -0
- data/lib/refworks/importfilter/importfilter_request.rb +16 -0
- data/lib/refworks/importfilter/importfilter_response.rb +35 -0
- data/lib/refworks/importfilter/search/importfilter_search_request.rb +22 -0
- data/lib/refworks/importfilter/search/importfilter_search_response.rb +3 -0
- data/lib/refworks/manuscript/all/manuscript_all_request.rb +22 -0
- data/lib/refworks/manuscript/all/manuscript_all_response.rb +13 -0
- data/lib/refworks/manuscript/baseurl/manuscript_baseurl_request.rb +22 -0
- data/lib/refworks/manuscript/baseurl/manuscript_baseurl_response.rb +13 -0
- data/lib/refworks/manuscript/byid/manuscript_byid_request.rb +32 -0
- data/lib/refworks/manuscript/byid/manuscript_byid_response.rb +3 -0
- data/lib/refworks/manuscript/file/manuscript_file_request.rb +22 -0
- data/lib/refworks/manuscript/file/manuscript_file_response.rb +18 -0
- data/lib/refworks/manuscript/folder/manuscript_folder_request.rb +22 -0
- data/lib/refworks/manuscript/folder/manuscript_folder_response.rb +14 -0
- data/lib/refworks/manuscript/manuscript_request.rb +20 -0
- data/lib/refworks/manuscript/manuscript_response.rb +3 -0
- data/lib/refworks/manuscript/mylist/manuscript_mylist_request.rb +21 -0
- data/lib/refworks/manuscript/mylist/manuscript_mylist_response.rb +14 -0
- data/lib/refworks/periodicals/all/periodicals_all_request.rb +21 -0
- data/lib/refworks/periodicals/all/periodicals_all_response.rb +3 -0
- data/lib/refworks/periodicals/periodical.rb +9 -0
- data/lib/refworks/periodicals/periodicals_request.rb +17 -0
- data/lib/refworks/periodicals/periodicals_response.rb +31 -0
- data/lib/refworks/periodicals/search/periodicals_search_request.rb +22 -0
- data/lib/refworks/periodicals/search/periodicals_search_response.rb +3 -0
- data/lib/refworks/properties/encoding/encoding.rb +3 -0
- data/lib/refworks/properties/encoding/properties_encoding_request.rb +20 -0
- data/lib/refworks/properties/encoding/properties_encoding_response.rb +3 -0
- data/lib/refworks/properties/fieldlabels/fieldlabel.rb +13 -0
- data/lib/refworks/properties/fieldlabels/properties_fieldlabels_request.rb +22 -0
- data/lib/refworks/properties/fieldlabels/properties_fieldlabels_response.rb +20 -0
- data/lib/refworks/properties/fieldlabels/reftypeFieldlabels.rb +11 -0
- data/lib/refworks/properties/languages/language.rb +8 -0
- data/lib/refworks/properties/languages/properties_languages_request.rb +22 -0
- data/lib/refworks/properties/languages/properties_languages_response.rb +20 -0
- data/lib/refworks/properties/outputlanguage/outputlanguage.rb +8 -0
- data/lib/refworks/properties/outputlanguage/properties_outputlanguage_request.rb +22 -0
- data/lib/refworks/properties/outputlanguage/properties_outputlanguage_response.rb +20 -0
- data/lib/refworks/properties/properties_request.rb +15 -0
- data/lib/refworks/properties/properties_response.rb +3 -0
- data/lib/refworks/properties/sortlocales/properties_sortlocales_request.rb +20 -0
- data/lib/refworks/properties/sortlocales/properties_sortlocales_response.rb +20 -0
- data/lib/refworks/properties/sortlocales/sortlocale.rb +8 -0
- data/lib/refworks/properties/sourcetypes/properties_sourcetypes_request.rb +21 -0
- data/lib/refworks/properties/sourcetypes/properties_sourcetypes_response.rb +20 -0
- data/lib/refworks/properties/sourcetypes/sourcetype.rb +8 -0
- data/lib/refworks/properties/typelabels/properties_typelabels_request.rb +21 -0
- data/lib/refworks/properties/typelabels/properties_typelabels_response.rb +20 -0
- data/lib/refworks/properties/typelabels/typelabel.rb +8 -0
- data/lib/refworks/reference.rb +526 -0
- data/lib/refworks/reference/get/reference_get_request.rb +21 -0
- data/lib/refworks/reference/get/reference_get_response.rb +7 -0
- data/lib/refworks/reference/reference_request.rb +15 -0
- data/lib/refworks/reference/reference_response.rb +3 -0
- data/lib/refworks/request.rb +50 -0
- data/lib/refworks/response.rb +12 -0
- data/lib/refworks/retrieve/advancesearch/retrieve_advancesearch_request.rb +41 -0
- data/lib/refworks/retrieve/advancesearch/retrieve_advancesearch_response.rb +3 -0
- data/lib/refworks/retrieve/all/retrieve_all_request.rb +21 -0
- data/lib/refworks/retrieve/all/retrieve_all_response.rb +3 -0
- data/lib/refworks/retrieve/author/retrieve_author_request.rb +23 -0
- data/lib/refworks/retrieve/author/retrieve_author_response.rb +3 -0
- data/lib/refworks/retrieve/byid/retrieve_byid_request.rb +22 -0
- data/lib/refworks/retrieve/byid/retrieve_byid_response.rb +3 -0
- data/lib/refworks/retrieve/count/retrieve_count_request.rb +21 -0
- data/lib/refworks/retrieve/count/retrieve_count_response.rb +16 -0
- data/lib/refworks/retrieve/descriptor/retrieve_descriptor_request.rb +22 -0
- data/lib/refworks/retrieve/descriptor/retrieve_descriptor_response.rb +3 -0
- data/lib/refworks/retrieve/dup/retrieve_dup_request.rb +21 -0
- data/lib/refworks/retrieve/dup/retrieve_dup_response.rb +3 -0
- data/lib/refworks/retrieve/folder/retrieve_folder_request.rb +21 -0
- data/lib/refworks/retrieve/folder/retrieve_folder_response.rb +3 -0
- data/lib/refworks/retrieve/modsince/retrieve_modsince_request.rb +23 -0
- data/lib/refworks/retrieve/modsince/retrieve_modsince_response.rb +3 -0
- data/lib/refworks/retrieve/nofolder/retrieve_nofolder_request.rb +20 -0
- data/lib/refworks/retrieve/nofolder/retrieve_nofolder_response.rb +3 -0
- data/lib/refworks/retrieve/periodical/retrieve_periodical_request.rb +22 -0
- data/lib/refworks/retrieve/periodical/retrieve_periodical_response.rb +3 -0
- data/lib/refworks/retrieve/quick/retrieve_quick_request.rb +23 -0
- data/lib/refworks/retrieve/quick/retrieve_quick_response.rb +3 -0
- data/lib/refworks/retrieve/retrieve_request.rb +22 -0
- data/lib/refworks/retrieve/retrieve_response.rb +34 -0
- data/lib/refworks/retrieve/saved/retrieve_saved_request.rb +22 -0
- data/lib/refworks/retrieve/saved/retrieve_saved_response.rb +3 -0
- data/lib/refworks/retrieve/specialfolder/retrieve_specialfolder_request.rb +21 -0
- data/lib/refworks/retrieve/specialfolder/retrieve_specialfolder_response.rb +3 -0
- data/lib/refworks/savedsearch/all/savedsearch_all_request.rb +21 -0
- data/lib/refworks/savedsearch/all/savedsearch_all_response.rb +3 -0
- data/lib/refworks/savedsearch/get/savedsearch_get_request.rb +22 -0
- data/lib/refworks/savedsearch/get/savedsearch_get_response.rb +3 -0
- data/lib/refworks/savedsearch/savedsearch.rb +21 -0
- data/lib/refworks/savedsearch/savedsearch_parameter.rb +18 -0
- data/lib/refworks/savedsearch/savedsearch_parameter_component.rb +10 -0
- data/lib/refworks/savedsearch/savedsearch_request.rb +15 -0
- data/lib/refworks/savedsearch/savedsearch_response.rb +24 -0
- data/lib/refworks/version.rb +3 -0
- 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,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,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,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,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,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,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,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
|