cb-api 0.2.9 → 0.3.0
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/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
|