cb-api 0.2.9 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/cb/clients/category_api.rb +16 -11
- data/lib/cb/clients/recommendation_api.rb +1 -0
- data/lib/cb/clients/saved_search_api.rb +42 -33
- data/lib/cb/clients/talent_network_api.rb +8 -14
- data/lib/cb/clients/user_api.rb +20 -18
- data/lib/cb/models/cb_talent_network.rb +1 -4
- data/lib/cb/utils/api.rb +32 -5
- data/lib/cb/utils/validator.rb +27 -9
- data/lib/cb/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MWMzNTY1M2QxOTc2OGViODU2MDhjZGQyNjkwMDRjMWFmNTNhM2IwYg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NDk1NDlkZDY2NWQ0MThhNjJkMDU3MzQxZDVjZWUxNDNjZjIzNDlkOQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NDJjNGFiZWRkZWFiZmFmNzQ0ZDk0ODhjMjAyZTVjMTIzODg0YjI5NTMyMjA1
|
10
|
+
NTAwYzA2ZWM5YzE1YmRkYWQ4NDU1MTlkYzNiOGM2YjNiZGQ2MzQ3YWFlYWVm
|
11
|
+
ZTEwYmJiY2VjOGY3ZGE4OTc5YzI2NzVlZjg3YzljNjU0NmJlNzA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YjYzZGE4MWZmYTJiZDBmNDJlYmUzNjM2NGViZDg1YTg1MDY0NDAzZTRjOGMx
|
14
|
+
MWE4ZDQ4YjJlM2NkZGEwMzYyMTM4ZWNkMzYxMWFmMDlhYmVmNmMwMDNjZmRk
|
15
|
+
MmM1ZjQyNGI5MTljOWUxZjgyMzExZjVkMzA4ZWM2ODFlMTY4OTQ=
|
@@ -4,32 +4,37 @@ module Cb
|
|
4
4
|
class CategoryApi
|
5
5
|
def self.search
|
6
6
|
my_api = Cb::Utils::Api.new()
|
7
|
-
|
8
|
-
json_hash = JSON.parse(cb_response.response.body)
|
7
|
+
json_hash = my_api.cb_get(Cb.configuration.uri_job_category_search)
|
9
8
|
|
10
9
|
categoryList = []
|
11
|
-
json_hash[
|
12
|
-
|
10
|
+
if json_hash.has_key?('ResponseCategories') && json_hash['ResponseCategories'].has_key?('Categories')
|
11
|
+
json_hash["ResponseCategories"]["Categories"]["Category"].each do |cat|
|
12
|
+
categoryList << CbCategory.new(cat)
|
13
|
+
end
|
13
14
|
end
|
15
|
+
|
16
|
+
my_api.append_api_responses(categoryList, json_hash)
|
17
|
+
|
14
18
|
return categoryList
|
15
19
|
end
|
16
20
|
|
17
21
|
def self.search_by_host_site(host_site)
|
18
22
|
my_api = Cb::Utils::Api.new()
|
19
|
-
|
20
|
-
json_hash = JSON.parse(cb_response.response.body)
|
23
|
+
json_hash = my_api.cb_get(Cb.configuration.uri_job_category_search, :query => {:CountryCode => host_site})
|
21
24
|
|
22
25
|
categoryList = []
|
23
|
-
|
24
|
-
if json_hash[
|
25
|
-
json_hash[
|
26
|
+
if json_hash.has_key?('ResponseCategories') && json_hash['ResponseCategories'].has_key?('Categories')
|
27
|
+
if json_hash['ResponseCategories']['Categories']['Category'].is_a?(Array)
|
28
|
+
json_hash['ResponseCategories']['Categories']['Category'].each do |cat|
|
26
29
|
categoryList << CbCategory.new(cat)
|
27
30
|
end
|
28
|
-
elsif json_hash[
|
29
|
-
categoryList << CbCategory.new(json_hash[
|
31
|
+
elsif json_hash['ResponseCategories']['Categories']['Category'].is_a?(Hash) && json_hash.length < 2
|
32
|
+
categoryList << CbCategory.new(json_hash['ResponseCategories']['Categories']['Category'])
|
30
33
|
end
|
31
34
|
end
|
32
35
|
|
36
|
+
my_api.append_api_responses(categoryList, json_hash)
|
37
|
+
|
33
38
|
return categoryList
|
34
39
|
end
|
35
40
|
end
|
@@ -13,6 +13,7 @@ module Cb
|
|
13
13
|
cb_response = my_api.cb_get(Cb.configuration.uri_recommendation_for_job,
|
14
14
|
:query => {:JobDID => did, :CountLimit => countlimit, :SiteID => site_id,
|
15
15
|
:CoBrand => co_brand, :HostSite => Cb.configuration.host_site})
|
16
|
+
|
16
17
|
json_hash = JSON.parse(cb_response.response.body)
|
17
18
|
|
18
19
|
jobs = []
|
@@ -12,15 +12,16 @@ module Cb
|
|
12
12
|
def self.create *args
|
13
13
|
args = args[0] if args.is_a?(Array) && args.count == 1
|
14
14
|
my_api = Cb::Utils::Api.new
|
15
|
-
|
16
|
-
json_hash = JSON.parse cb_response.response.body
|
17
|
-
unless json_hash['SavedJobSearch']['SavedSearch'].nil?
|
18
|
-
saved_search = CbSavedSearch.new json_hash['SavedJobSearch']['SavedSearch']
|
19
|
-
else
|
20
|
-
saved_search = CbSavedSearch.new json_hash['SavedJobSearch']
|
21
|
-
end
|
15
|
+
json_hash = my_api.cb_post Cb.configuration.uri_saved_search_create, :body => CbSavedSearch.new(args).create_to_xml
|
22
16
|
|
23
|
-
|
17
|
+
if json_hash.has_key? 'SavedJobSearch'
|
18
|
+
if json_hash['SavedJobSearch'].has_key? 'SavedSearch'
|
19
|
+
saved_search = CbSavedSearch.new json_hash['SavedJobSearch']['SavedSearch']
|
20
|
+
else
|
21
|
+
saved_search = CbSavedSearch.new json_hash['SavedJobSearch']
|
22
|
+
end
|
23
|
+
my_api.append_api_responses saved_search, json_hash['SavedJobSearch']
|
24
|
+
end
|
24
25
|
|
25
26
|
return saved_search
|
26
27
|
end
|
@@ -34,10 +35,12 @@ module Cb
|
|
34
35
|
def self.update *args
|
35
36
|
args = args[0] if args.is_a?(Array) && args.count == 1
|
36
37
|
my_api = Cb::Utils::Api.new
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
json_hash = my_api.cb_post Cb.configuration.uri_saved_search_update, :body => CbSavedSearch.new(args).update_to_xml
|
39
|
+
|
40
|
+
if json_hash.has_key?('SavedJobSearch')
|
41
|
+
saved_search = CbSavedSearch.new json_hash['SavedJobSearch']
|
42
|
+
my_api.append_api_responses saved_search, json_hash['SavedJobSearch']
|
43
|
+
end
|
41
44
|
|
42
45
|
return saved_search
|
43
46
|
end
|
@@ -52,10 +55,12 @@ module Cb
|
|
52
55
|
def self.delete *args
|
53
56
|
args = args[0] if args.is_a?(Array) && args.count == 1
|
54
57
|
my_api = Cb::Utils::Api.new
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
58
|
+
json_hash = my_api.cb_post Cb.configuration.uri_saved_search_delete, :body=>CbSavedSearch.new(args).delete_to_xml
|
59
|
+
|
60
|
+
if json_hash.keys.any?
|
61
|
+
saved_search = CbSavedSearch.new json_hash
|
62
|
+
my_api.append_api_responses saved_search, json_hash
|
63
|
+
end
|
59
64
|
|
60
65
|
return saved_search
|
61
66
|
end
|
@@ -76,10 +81,12 @@ module Cb
|
|
76
81
|
#############################################################
|
77
82
|
def self.retrieve developer_key, external_user_id, external_id, host_site
|
78
83
|
my_api = Cb::Utils::Api.new
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
84
|
+
json_hash = my_api.cb_get Cb.configuration.uri_saved_search_retrieve, :query => {:developerkey=> developer_key, :externaluserid=> external_user_id, :externalid=> external_id, :hostsite=> host_site}
|
85
|
+
|
86
|
+
if json_hash.has_key?('SavedJobSearch') && json_hash['SavedJobSearch'].has_key?('SavedSearch')
|
87
|
+
saved_search = CbSavedSearch.new json_hash['SavedJobSearch']['SavedSearch']
|
88
|
+
my_api.append_api_responses saved_search, json_hash['SavedJobSearch']['SavedSearch']
|
89
|
+
end
|
83
90
|
|
84
91
|
return saved_search
|
85
92
|
end
|
@@ -92,22 +99,24 @@ module Cb
|
|
92
99
|
#############################################################
|
93
100
|
def self.list developer_key, external_user_id
|
94
101
|
my_api = Cb::Utils::Api.new
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
if saved_search_hash
|
102
|
-
saved_search_hash['SavedSearch'].
|
103
|
-
|
102
|
+
json_hash = my_api.cb_get Cb.configuration.uri_saved_search_list, :query => {:developerkey=>developer_key, :ExternalUserId=>external_user_id}
|
103
|
+
|
104
|
+
if json_hash.has_key?('SavedJobSearches') && json_hash['SavedJobSearches'].has_key?('SavedSearches')
|
105
|
+
saved_search_hash = json_hash['SavedJobSearches']['SavedSearches']
|
106
|
+
|
107
|
+
saved_searches = []
|
108
|
+
if saved_search_hash.present?
|
109
|
+
if saved_search_hash['SavedSearch'].is_a?(Array)
|
110
|
+
saved_search_hash['SavedSearch'].each do |saved_search|
|
111
|
+
saved_searches << CbSavedSearch.new(saved_search)
|
112
|
+
end
|
113
|
+
elsif saved_search_hash['SavedSearch'].is_a?(Hash) && json_hash.length < 2
|
114
|
+
saved_searches << CbSavedSearch.new(saved_search_hash['SavedSearch'])
|
104
115
|
end
|
105
|
-
elsif saved_search_hash['SavedSearch'].is_a?(Hash) && json_hash.length < 2
|
106
|
-
saved_searches << CbSavedSearch.new(saved_search_hash['SavedSearch'])
|
107
116
|
end
|
108
|
-
end
|
109
117
|
|
110
|
-
|
118
|
+
my_api.append_api_responses saved_searches, json_hash['SavedJobSearches']
|
119
|
+
end
|
111
120
|
|
112
121
|
return saved_searches
|
113
122
|
end
|
@@ -8,8 +8,7 @@ module Cb
|
|
8
8
|
def self.join_form_questions(tndid)
|
9
9
|
## Load the join form questions for a TalentNetworkDID
|
10
10
|
my_api = Cb::Utils::Api.new()
|
11
|
-
|
12
|
-
json_hash = JSON.parse(cb_response.response.body)
|
11
|
+
json_hash = my_api.cb_get_secure("#{Cb.configuration.uri_tn_join_questions}/#{tndid}/json")
|
13
12
|
|
14
13
|
tn_questions_collection = TalentNetwork.new(json_hash)
|
15
14
|
my_api.append_api_responses(tn_questions_collection, json_hash)
|
@@ -21,8 +20,7 @@ module Cb
|
|
21
20
|
## Gets branding information (stylesheets, copytext, etc...) for the join form.
|
22
21
|
my_api = Cb::Utils::Api.new
|
23
22
|
|
24
|
-
|
25
|
-
json_hash = JSON.parse(cb_response.response.body)
|
23
|
+
json_hash = my_api.cb_get_secure("#{Cb.configuration.uri_tn_join_form_branding}/#{tndid}/json")
|
26
24
|
|
27
25
|
tn_join_form_branding = TalentNetwork::JoinFormBranding.new(json_hash['Branding'])
|
28
26
|
my_api.append_api_responses(tn_join_form_branding, json_hash)
|
@@ -34,8 +32,7 @@ module Cb
|
|
34
32
|
def self.join_form_geography(tnlanguage="USEnglish")
|
35
33
|
## Gets locations needed to fill the Geography question from the Join Form Question API
|
36
34
|
my_api = Cb::Utils::Api.new
|
37
|
-
|
38
|
-
json_hash = JSON.parse(cb_response.response.body)
|
35
|
+
json_hash = my_api.cb_get_secure("#{Cb.configuration.uri_tn_join_form_geo}", :query=>{:TNLanguage=>"#{tnlanguage}"})
|
39
36
|
|
40
37
|
geo_dropdown = TalentNetwork::JoinFormGeo.new(json_hash)
|
41
38
|
my_api.append_api_responses(geo_dropdown, json_hash)
|
@@ -50,20 +47,17 @@ module Cb
|
|
50
47
|
cb_response = my_api.cb_post("#{Cb.configuration.uri_tn_member_create}/json", :body => tn_member.to_xml )
|
51
48
|
json_hash = JSON.parse(cb_response.response.body)
|
52
49
|
|
53
|
-
|
50
|
+
if json_hash['Errors'].first.nil?
|
51
|
+
return json_hash['MemberDID']
|
52
|
+
end
|
54
53
|
|
55
|
-
|
56
|
-
return cb_response["MemberDID"]
|
57
|
-
end
|
58
|
-
|
59
|
-
return cb_response['Errors'].first
|
54
|
+
return json_hash['Errors'].first
|
60
55
|
end
|
61
56
|
|
62
57
|
def self.tn_job_information(job_did, join_form_intercept="true")
|
63
58
|
my_api = Cb::Utils::Api.new
|
64
|
-
|
59
|
+
json_hash = my_api.cb_get_secure("#{Cb.configuration.uri_tn_job_info}/#{job_did}/json", :query=> {
|
65
60
|
:RequestJoinFormIntercept=>join_form_intercept})
|
66
|
-
json_hash = JSON.parse(cb_response.response.body)
|
67
61
|
|
68
62
|
tn_job_info = TalentNetwork::JobInfo.new(json_hash['Response'])
|
69
63
|
my_api.append_api_responses(tn_job_info, json_hash)
|
data/lib/cb/clients/user_api.rb
CHANGED
@@ -12,13 +12,14 @@ module Cb
|
|
12
12
|
def self.retrieve external_id, test_mode = false
|
13
13
|
my_api = Cb::Utils::Api.new
|
14
14
|
|
15
|
-
|
15
|
+
json_hash = my_api.cb_post Cb.configuration.uri_user_retrieve, :body => build_retrieve_request(external_id, test_mode)
|
16
16
|
|
17
|
-
json_hash
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
if json_hash.has_key? 'ResponseUserInfo'
|
18
|
+
if json_hash['ResponseUserInfo'].has_key? 'UserInfo'
|
19
|
+
user = CbUser.new json_hash['ResponseUserInfo']['UserInfo']
|
20
|
+
end
|
21
|
+
my_api.append_api_responses user, json_hash['ResponseUserInfo']
|
22
|
+
end
|
22
23
|
|
23
24
|
return user
|
24
25
|
end
|
@@ -33,14 +34,14 @@ module Cb
|
|
33
34
|
result = false
|
34
35
|
|
35
36
|
my_api = Cb::Utils::Api.new
|
36
|
-
|
37
|
-
json_hash = JSON.parse cb_response.response.body
|
37
|
+
json_hash = my_api.cb_post Cb.configuration.uri_user_change_password, :body => build_change_password_request(external_id, old_password, new_password, test_mode)
|
38
38
|
|
39
|
-
|
40
|
-
|
41
|
-
if result.cb_response.status.include? 'Success'
|
42
|
-
result = true
|
39
|
+
if json_hash.has_key? 'ResponseUserChangePW'
|
43
40
|
my_api.append_api_responses result, json_hash['ResponseUserChangePW']
|
41
|
+
if result.cb_response.status.include? 'Success'
|
42
|
+
result = true
|
43
|
+
my_api.append_api_responses result, json_hash['ResponseUserChangePW']
|
44
|
+
end
|
44
45
|
end
|
45
46
|
|
46
47
|
result
|
@@ -56,14 +57,15 @@ module Cb
|
|
56
57
|
result = false
|
57
58
|
|
58
59
|
my_api = Cb::Utils::Api.new
|
59
|
-
|
60
|
-
json_hash = JSON.parse cb_response.response.body
|
61
|
-
|
62
|
-
my_api.append_api_responses result, json_hash['ResponseUserDelete']
|
60
|
+
json_hash = my_api.cb_post Cb.configuration.uri_user_delete, :body => build_delete_request(external_id, password, test_mode)
|
63
61
|
|
64
|
-
if
|
65
|
-
result = true
|
62
|
+
if json_hash.has_key? 'ResponseUserDelete'
|
66
63
|
my_api.append_api_responses result, json_hash['ResponseUserDelete']
|
64
|
+
|
65
|
+
if result.cb_response.status.include? 'Success'
|
66
|
+
result = true
|
67
|
+
my_api.append_api_responses result, json_hash['ResponseUserDelete']
|
68
|
+
end
|
67
69
|
end
|
68
70
|
|
69
71
|
result
|
@@ -22,10 +22,7 @@ module Cb
|
|
22
22
|
@accept_privacy = args['AcceptPrivacy'] || true
|
23
23
|
@accept_terms = args['AcceptTerms'] || true
|
24
24
|
@resume_word_doc = args['ResumeWordDoc'] || ''
|
25
|
-
@join_values =
|
26
|
-
if args.has_key?('JoinValues')
|
27
|
-
@join_values = Hash[args['JoinValues'].each_slice(2).to_a]
|
28
|
-
end
|
25
|
+
@join_values = args['JoinValues'] || Array.new
|
29
26
|
end
|
30
27
|
|
31
28
|
def to_xml
|
data/lib/cb/utils/api.rb
CHANGED
@@ -4,6 +4,7 @@ module Cb
|
|
4
4
|
module Utils
|
5
5
|
class Api
|
6
6
|
include HTTParty
|
7
|
+
|
7
8
|
base_uri 'http://api.careerbuilder.com'
|
8
9
|
|
9
10
|
def initialize
|
@@ -16,17 +17,32 @@ module Cb
|
|
16
17
|
|
17
18
|
def cb_get(*args, &block)
|
18
19
|
self.class.base_uri Cb.configuration.base_uri
|
19
|
-
self.class.get(*args, &block)
|
20
|
+
response = self.class.get(*args, &block)
|
21
|
+
#validated_response = ResponseValidator.validate(response)
|
22
|
+
#set_api_error(validated_response)
|
23
|
+
|
24
|
+
#return validated_response
|
25
|
+
return response
|
20
26
|
end
|
21
27
|
|
22
|
-
def
|
28
|
+
def cb_post(*args, &block)
|
23
29
|
self.class.base_uri Cb.configuration.base_uri_secure
|
24
|
-
self.class.
|
30
|
+
response = self.class.post(*args, &block)
|
31
|
+
#validated_response = ResponseValidator.validate(response)
|
32
|
+
#set_api_error(validated_response)
|
33
|
+
|
34
|
+
#return validated_response
|
35
|
+
return response
|
25
36
|
end
|
26
37
|
|
27
|
-
def
|
38
|
+
def cb_get_secure(*args, &block)
|
28
39
|
self.class.base_uri Cb.configuration.base_uri_secure
|
29
|
-
self.class.
|
40
|
+
response = self.class.get(*args, &block)
|
41
|
+
#validated_response = ResponseValidator.validate(response)
|
42
|
+
#set_api_error(validated_response)
|
43
|
+
|
44
|
+
#return validated_response
|
45
|
+
return response
|
30
46
|
end
|
31
47
|
|
32
48
|
def append_api_responses(obj, resp)
|
@@ -51,6 +67,9 @@ module Cb
|
|
51
67
|
end
|
52
68
|
end
|
53
69
|
|
70
|
+
obj.class.send(:attr_reader, 'api_error')
|
71
|
+
obj.instance_variable_set(:@api_error, @api_error)
|
72
|
+
|
54
73
|
obj.class.send(:attr_reader, 'cb_response')
|
55
74
|
obj.instance_variable_set(:@cb_response, meta_class)
|
56
75
|
end
|
@@ -79,6 +98,14 @@ module Cb
|
|
79
98
|
input.gsub(/(?:_|(\/))([a-z\d]*)/) { "#{$2.capitalize}" }.gsub('/', '::')
|
80
99
|
end
|
81
100
|
|
101
|
+
def set_api_error(validated_response)
|
102
|
+
if validated_response.keys.any?
|
103
|
+
@api_error = false
|
104
|
+
else
|
105
|
+
@api_error = true
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
82
109
|
def get_meta_name_for(api_key)
|
83
110
|
key_map = {
|
84
111
|
'Errors' => 'errors',
|
data/lib/cb/utils/validator.rb
CHANGED
@@ -1,28 +1,46 @@
|
|
1
1
|
require 'json'
|
2
|
+
require 'active_support/core_ext/hash'
|
2
3
|
|
3
4
|
module Cb
|
4
5
|
module ResponseValidator
|
5
6
|
|
6
7
|
def self.validate(response)
|
7
8
|
if response.blank? || response.response.body.blank?
|
8
|
-
return
|
9
|
-
end
|
10
|
-
|
11
|
-
if response.code != 200
|
12
|
-
return false
|
9
|
+
return self.get_empty_json_hash
|
13
10
|
end
|
14
11
|
|
15
12
|
begin
|
16
13
|
json = JSON.parse(response.response.body)
|
17
|
-
if json.keys.any?
|
18
|
-
return
|
14
|
+
if json.keys.any?
|
15
|
+
return json
|
16
|
+
else
|
17
|
+
return self.get_empty_json_hash
|
19
18
|
end
|
20
19
|
rescue JSON::ParserError
|
21
|
-
return
|
20
|
+
return self.handle_parser_error(response.response.body)
|
22
21
|
end
|
22
|
+
end
|
23
23
|
|
24
|
-
|
24
|
+
def self.handle_parser_error(response)
|
25
|
+
# if it's not JSON, try XML
|
26
|
+
xml = Nokogiri::XML.parse(response).elements.to_s
|
27
|
+
if xml.blank?
|
28
|
+
# if i wasn't xml either, give up and return an empty json hash
|
29
|
+
return self.get_empty_json_hash
|
30
|
+
else
|
31
|
+
# if it was, return a hash from the xml UNLESS it was a generic
|
32
|
+
xml_hash = Hash.from_xml(xml.to_s)
|
33
|
+
if xml_hash.has_key?('Response') && xml_hash['Response'].has_key?('Errors')
|
34
|
+
return self.get_empty_json_hash
|
35
|
+
else
|
36
|
+
return xml_hash
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
25
40
|
|
41
|
+
def self.get_empty_json_hash
|
42
|
+
return JSON.parse('{}')
|
26
43
|
end
|
44
|
+
|
27
45
|
end
|
28
46
|
end
|
data/lib/cb/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cb-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jesse Retchko
|
@@ -18,7 +18,7 @@ authors:
|
|
18
18
|
autorequire:
|
19
19
|
bindir: bin
|
20
20
|
cert_chain: []
|
21
|
-
date: 2013-08-
|
21
|
+
date: 2013-08-26 00:00:00.000000000 Z
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
24
24
|
name: httparty
|