yext-api 0.1.1 → 0.1.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 +4 -4
- data/Gemfile +3 -1
- data/Gemfile.lock +16 -8
- data/PULL_REQUEST_TEMPLATE.md +11 -0
- data/README.md +25 -7
- data/app/controllers/yext/api/agreements/add_request_controller.rb +78 -0
- data/app/controllers/yext/api/application_controller.rb +1 -3
- data/config/initializers/memoist.rb +3 -0
- data/config/routes.rb +3 -0
- data/lib/config/api.yml +95 -230
- data/lib/yext/api/administrative_api/account.rb +37 -27
- data/lib/yext/api/administrative_api/add_request.rb +87 -3
- data/lib/yext/api/administrative_api/service.rb +26 -4
- data/lib/yext/api/concerns/account_child.rb +37 -8
- data/lib/yext/api/concerns/account_relations.rb +16 -1
- data/lib/yext/api/concerns/default_scopes.rb +8 -2
- data/lib/yext/api/concerns/faraday_connection.rb +21 -7
- data/lib/yext/api/concerns/rate_limits.rb +8 -1
- data/lib/yext/api/enumerations/add_request_status.rb +19 -0
- data/lib/yext/api/enumerations/location_type.rb +18 -0
- data/lib/yext/api/knowledge_api/account_settings/account.rb +0 -2
- data/lib/yext/api/knowledge_api/account_settings/role.rb +24 -0
- data/lib/yext/api/knowledge_api/account_settings/user.rb +81 -0
- data/lib/yext/api/knowledge_api/health_check/health.rb +0 -1
- data/lib/yext/api/knowledge_api/knowledge_manager/category.rb +0 -1
- data/lib/yext/api/knowledge_api/knowledge_manager/location.rb +18 -6
- data/lib/yext/api/live_api/location.rb +0 -4
- data/lib/yext/api/utils/api_base.rb +8 -0
- data/lib/yext/api/utils/api_finder.rb +100 -0
- data/lib/yext/api/utils/configuration.rb +93 -0
- data/lib/yext/api/utils/middleware/api_rate_limits.rb +35 -0
- data/lib/yext/api/utils/middleware/default_parameters.rb +138 -0
- data/lib/yext/api/utils/middleware/response_parser.rb +111 -0
- data/lib/yext/api/utils/middleware/uri_cleanup.rb +48 -0
- data/lib/yext/api/utils/params.rb +69 -0
- data/lib/yext/api/version.rb +1 -1
- data/yext-api.gemspec +6 -7
- metadata +56 -31
- data/.travis.yml +0 -5
- data/app/assets/config/yext_api_manifest.js +0 -2
- data/app/assets/images/yext/api/.keep +0 -0
- data/app/assets/javascripts/yext/api/application.js +0 -13
- data/app/assets/stylesheets/yext/api/application.css +0 -15
- data/app/docs/notes.txt +0 -45
- data/app/helpers/yext/api/application_helper.rb +0 -11
- data/app/jobs/yext/api/application_job.rb +0 -8
- data/app/mailers/yext/api/application_mailer.rb +0 -11
- data/app/models/yext/api/application_record.rb +0 -10
- data/app/views/layouts/yext/api/application.html.erb +0 -14
- data/lib/tasks/yext/api_tasks.rake +0 -6
- data/lib/yext/api/concerns/api_finder.rb +0 -61
- data/lib/yext/api/utils/api_rate_limits.rb +0 -36
- data/lib/yext/api/utils/default_parameters.rb +0 -57
- data/lib/yext/api/utils/response_parser.rb +0 -84
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Yext
|
4
|
+
module Api
|
5
|
+
module Utils
|
6
|
+
module Middleware
|
7
|
+
# Faraday Middleware for extracting API limits from call responses.
|
8
|
+
class ApiRateLimits < Faraday::Response::Middleware
|
9
|
+
def call(env)
|
10
|
+
@app.call(env).on_complete do |environment|
|
11
|
+
save_rates(environment, Yext::Api::Utils::ApiFinder.new(env[:url], env[:method]).find_api)
|
12
|
+
|
13
|
+
env.response
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def save_rates(environment, api_module)
|
20
|
+
return if api_module.blank?
|
21
|
+
|
22
|
+
response_headers = environment[:response_headers]
|
23
|
+
|
24
|
+
return unless response_headers.key?("rate-limit-remaining")
|
25
|
+
|
26
|
+
api_module.send(:update_rates,
|
27
|
+
remaining: response_headers["rate-limit-remaining"].to_i,
|
28
|
+
limit: response_headers["rate-limit-limit"].to_i,
|
29
|
+
reset_at: Time.at(response_headers["rate-limit-reset"].to_i))
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,138 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Yext
|
4
|
+
module Api
|
5
|
+
module Utils
|
6
|
+
module Middleware
|
7
|
+
# Faraday Middleware for adding Configuration default values to API calls as needed.
|
8
|
+
#
|
9
|
+
# Most options can be set via scopes and the soped values will be kept if they are used.
|
10
|
+
# i.e. the existing query string values will be kept if they exist.
|
11
|
+
#
|
12
|
+
# Because Spyke puts `where` options into the body OR the query depending on the type of
|
13
|
+
# request being made, we have to move the Yext query options out of the body into the query
|
14
|
+
# if there is a body.
|
15
|
+
#
|
16
|
+
# The following configuration options are defaulted:
|
17
|
+
# validation_level: Added to query parameters if not already there and is not nil
|
18
|
+
# api_key: Added to query parameters if not already there
|
19
|
+
# api_version: Added to qeury parameters if not already there
|
20
|
+
# account_id: Inserted into the path if the path includes the Account default URI and no
|
21
|
+
# account_id was specified.
|
22
|
+
#
|
23
|
+
# The following values will be moved out of the body into the query string if they are found:
|
24
|
+
# account_id * Not used if in body. If set it will already be in the path.
|
25
|
+
# v
|
26
|
+
# api_key
|
27
|
+
# validation
|
28
|
+
# yext_username
|
29
|
+
# yext_user_id
|
30
|
+
class DefaultParameters < Faraday::Response::Middleware
|
31
|
+
extend Memoist
|
32
|
+
|
33
|
+
attr_reader :configuration,
|
34
|
+
:url,
|
35
|
+
:params,
|
36
|
+
:body_json,
|
37
|
+
:request_env
|
38
|
+
|
39
|
+
def call(call_env)
|
40
|
+
get_attribute_values(call_env)
|
41
|
+
|
42
|
+
body_json.delete(:account_id)
|
43
|
+
add_username_headers
|
44
|
+
add_default_query_params
|
45
|
+
save_query_params
|
46
|
+
save_body
|
47
|
+
|
48
|
+
@app.call(request_env)
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def get_attribute_values(call_env)
|
54
|
+
@request_env = call_env
|
55
|
+
@configuration = Yext::Api.configuration
|
56
|
+
@url = request_env[:url]
|
57
|
+
@params = Rack::Utils.parse_nested_query(url.query).with_indifferent_access
|
58
|
+
@body_json = parse_body
|
59
|
+
end
|
60
|
+
|
61
|
+
def parse_body
|
62
|
+
if request_env.body.present?
|
63
|
+
JSON.parse(request_env.body, symbolize_names: true)
|
64
|
+
else
|
65
|
+
{}
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def add_default_query_params
|
70
|
+
params.reverse_merge!(api_key: api_key, v: version)
|
71
|
+
|
72
|
+
params[:validation] ||= validation if validation.present?
|
73
|
+
end
|
74
|
+
|
75
|
+
def validation
|
76
|
+
return body_json.delete(:validation) if body_json.key?(:validation)
|
77
|
+
|
78
|
+
configuration.validation_level if configuration.validation_level.present?
|
79
|
+
end
|
80
|
+
|
81
|
+
def version
|
82
|
+
body_json.delete(:v) || configuration.api_version || "20161012"
|
83
|
+
end
|
84
|
+
|
85
|
+
def api_key
|
86
|
+
body_json.delete(:api_key) || configuration.api_key
|
87
|
+
end
|
88
|
+
|
89
|
+
def save_query_params
|
90
|
+
url.query = params.to_query
|
91
|
+
end
|
92
|
+
|
93
|
+
def save_body
|
94
|
+
extract_rooted_body
|
95
|
+
|
96
|
+
return if request_env.body.blank?
|
97
|
+
|
98
|
+
body_json[:id] = body_json.delete(:create_id) if body_json.key?(:create_id)
|
99
|
+
|
100
|
+
request_env.body = body_json.to_json
|
101
|
+
end
|
102
|
+
|
103
|
+
def extract_rooted_body
|
104
|
+
return unless body_json.keys.length == 1
|
105
|
+
|
106
|
+
sub_json = body_json[body_json.keys.first]
|
107
|
+
@body_json = sub_json if sub_json.is_a?(Hash)
|
108
|
+
end
|
109
|
+
|
110
|
+
def add_username_headers
|
111
|
+
user_id, username = extract_header_values
|
112
|
+
|
113
|
+
return unless %w[put post patch delete].include?(request_env[:method].to_s)
|
114
|
+
|
115
|
+
request_headers = request_env[:request_headers]
|
116
|
+
request_headers["Yext-Username"] = username if username.present?
|
117
|
+
request_headers["Yext-User-Id"] = user_id if user_id.present?
|
118
|
+
end
|
119
|
+
|
120
|
+
def extract_header_values
|
121
|
+
username = extract_defaulted_value(:yext_username, configuration.yext_username)
|
122
|
+
user_id = extract_defaulted_value(:yext_user_id, configuration.yext_user_id)
|
123
|
+
|
124
|
+
[user_id, username]
|
125
|
+
end
|
126
|
+
|
127
|
+
def extract_defaulted_value(param_name, default_value)
|
128
|
+
params.delete(param_name) || body_json.delete(param_name) || default_value
|
129
|
+
end
|
130
|
+
|
131
|
+
memoize :validation,
|
132
|
+
:version,
|
133
|
+
:api_key
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Yext
|
4
|
+
module Api
|
5
|
+
module Utils
|
6
|
+
module Middleware
|
7
|
+
# The default response parser for Faraday to get the results from Yext into the structure
|
8
|
+
# that is needed by Spyke.
|
9
|
+
class ResponseParser < Faraday::Response::Middleware
|
10
|
+
def call(env)
|
11
|
+
@parse_env = env
|
12
|
+
|
13
|
+
@app.call(env).on_complete do |environment|
|
14
|
+
@response_env = environment
|
15
|
+
on_complete(environment)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def parse(body)
|
20
|
+
# Yext Response:
|
21
|
+
# http://developer.yext.com/docs/api-reference/#section/Policies-and-Conventions
|
22
|
+
#
|
23
|
+
# Example response format:
|
24
|
+
# {
|
25
|
+
# "meta": {
|
26
|
+
# "uuid": "bb0c7e19-4dc3-4891-bfa5-8593b1f124ad",
|
27
|
+
# "errors": [
|
28
|
+
# {
|
29
|
+
# "code": ...error code...,
|
30
|
+
# "type": ...error, fatal error, non fatal error, or warning...,
|
31
|
+
# "message": ...explanation of the issue...
|
32
|
+
# }
|
33
|
+
# ]
|
34
|
+
# },
|
35
|
+
# "response": {
|
36
|
+
# ...results...
|
37
|
+
# }
|
38
|
+
# }
|
39
|
+
#
|
40
|
+
# Spyke Expected Response Format:
|
41
|
+
# https://github.com/balvig/spyke#configuration
|
42
|
+
#
|
43
|
+
# { data: { id: 1, name: 'Bob' }, metadata: {}, errors: {} }
|
44
|
+
#
|
45
|
+
# Errors:
|
46
|
+
# https://github.com/balvig/spyke#api-side-validations
|
47
|
+
#
|
48
|
+
# { title: [{ error: 'blank'}, { error: 'too_short', count: 10 }]}
|
49
|
+
|
50
|
+
if body.starts_with?("<html")
|
51
|
+
save_meta_data(parse_env, {}, response_env[:status], body: body)
|
52
|
+
|
53
|
+
return {}
|
54
|
+
end
|
55
|
+
|
56
|
+
@yext_response_json = {}
|
57
|
+
|
58
|
+
data = data_value(body)
|
59
|
+
meta_data = meta_data_value
|
60
|
+
|
61
|
+
save_meta_data(parse_env, meta_data, response_env[:status], data)
|
62
|
+
|
63
|
+
{ data: data, metadata: meta_data, errors: {} }
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
def data_value(body)
|
69
|
+
return [{ response_string: body }] unless body.starts_with?("{")
|
70
|
+
|
71
|
+
@yext_response_json = JSON.parse(body, symbolize_names: true)
|
72
|
+
|
73
|
+
extract_data_value
|
74
|
+
end
|
75
|
+
|
76
|
+
def meta_data_value
|
77
|
+
yext_response_json[:meta]
|
78
|
+
end
|
79
|
+
|
80
|
+
def extract_data_value
|
81
|
+
data = yext_response_json[:response]
|
82
|
+
|
83
|
+
if data.is_a?(Hash) && (data.key?(:count) || data.length <= 2)
|
84
|
+
array_data = data[(data.keys - [:count]).first]
|
85
|
+
if array_data.is_a?(Array)
|
86
|
+
data = array_data
|
87
|
+
elsif data.blank?
|
88
|
+
data = nil
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
data
|
93
|
+
end
|
94
|
+
|
95
|
+
attr_reader :parse_env,
|
96
|
+
:yext_response_json,
|
97
|
+
:response_env
|
98
|
+
|
99
|
+
def save_meta_data(environment, metadata, status, data)
|
100
|
+
api_module = Yext::Api::Utils::ApiFinder.new(environment[:url], environment[:method]).find_api
|
101
|
+
return if api_module.blank?
|
102
|
+
|
103
|
+
api_module.send(:last_data=, data)
|
104
|
+
api_module.send(:last_status=, status)
|
105
|
+
api_module.send(:last_meta=, metadata)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Yext
|
4
|
+
module Api
|
5
|
+
module Utils
|
6
|
+
module Middleware
|
7
|
+
# Faraday Middleware for cleaning up after Spyke.
|
8
|
+
#
|
9
|
+
# I consider this a primary failing of Spyke. The use of a global "current_scope" and
|
10
|
+
# associations being stored in instance variables that are re-used in every single use
|
11
|
+
# of the association creates the potential and reality of leaks between calls because
|
12
|
+
# scopes don't represent a filter as much as they represent the class itself.
|
13
|
+
#
|
14
|
+
# Because of this and because there aren't normal hooks on the models, I had to figure out
|
15
|
+
# a way to cleanup and reset associations between calls in a reliable manner.
|
16
|
+
#
|
17
|
+
# Because we're using Faraday, I am using Faraday middleware to hook into the API call
|
18
|
+
# and after we get a response, making a call on the class associated with the call that was
|
19
|
+
# made and telling that class to clean itself up.
|
20
|
+
class UriCleanup < Faraday::Response::Middleware
|
21
|
+
def call(env)
|
22
|
+
@app.call(env).on_complete do |_environment|
|
23
|
+
reset_class_uri(env)
|
24
|
+
|
25
|
+
env.response
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def reset_class_uri(env)
|
32
|
+
klass = Yext::Api::Utils::ApiFinder.new(env[:url], env[:method]).find_class_name
|
33
|
+
|
34
|
+
return unless klass.present?
|
35
|
+
|
36
|
+
klass = klass.constantize
|
37
|
+
|
38
|
+
klass.reset_uri if klass.respond_to?(:reset_uri)
|
39
|
+
rescue StandardError => error
|
40
|
+
return unless Object.const_defined?("Rails")
|
41
|
+
|
42
|
+
Rails.logger.error error
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Yext
|
4
|
+
module Api
|
5
|
+
module Utils
|
6
|
+
# A utility class for performing normal modifications to webhooks to convert/normalize data
|
7
|
+
# before passing it along so that the receiver doesn't have to worry/thnk about it.
|
8
|
+
class Params
|
9
|
+
attr_reader :params
|
10
|
+
|
11
|
+
def initialize(params)
|
12
|
+
@params = params
|
13
|
+
end
|
14
|
+
|
15
|
+
# Converts an integer epoch date value into a Time.
|
16
|
+
#
|
17
|
+
# The param_names is a list of nodes which ends with a leaf node that is the epoch value
|
18
|
+
# to be converted to a Time.
|
19
|
+
#
|
20
|
+
# If any node along the way cannot be found, the function exits without errors or changing any values.
|
21
|
+
def convert_epoch(*param_names)
|
22
|
+
return unless param_names.present?
|
23
|
+
|
24
|
+
param_name = param_names[-1]
|
25
|
+
param_level = find_value(*param_names)
|
26
|
+
|
27
|
+
return unless param_level.present?
|
28
|
+
|
29
|
+
param_level[param_name] = Time.at(param_level[param_name].to_i / 1_000.0)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Converts time string into a Time.
|
33
|
+
#
|
34
|
+
# The param_names is a list of nodes which ends with a leaf node that is the time string
|
35
|
+
# to be converted to a Time.
|
36
|
+
#
|
37
|
+
# If any node along the way cannot be found, the function exits without errors or changing any values.
|
38
|
+
def convert_time(*param_names)
|
39
|
+
return unless param_names.present?
|
40
|
+
|
41
|
+
param_name = param_names[-1]
|
42
|
+
param_level = find_value(*param_names)
|
43
|
+
|
44
|
+
return unless param_level.present?
|
45
|
+
|
46
|
+
param_level[param_name] = param_level[param_name].to_time(:utc)
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def find_value(*param_names)
|
52
|
+
param_level = params
|
53
|
+
found_param = param_names[0..-2].each do |param_name|
|
54
|
+
break unless param_level.key?(param_name)
|
55
|
+
|
56
|
+
param_level = param_level[param_name]
|
57
|
+
end
|
58
|
+
|
59
|
+
return if found_param.nil?
|
60
|
+
|
61
|
+
param_name = param_names[-1]
|
62
|
+
return unless param_level.key?(param_name) && param_level[param_name].present?
|
63
|
+
|
64
|
+
param_level
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/yext/api/version.rb
CHANGED
data/yext-api.gemspec
CHANGED
@@ -28,19 +28,18 @@ Gem::Specification.new do |spec|
|
|
28
28
|
end
|
29
29
|
|
30
30
|
spec.bindir = "exe"
|
31
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
32
31
|
spec.require_paths = ["lib"]
|
33
32
|
|
34
|
-
spec.add_dependency "
|
33
|
+
spec.add_dependency "memoist", "~> 0"
|
34
|
+
spec.add_dependency "rails", "> 4"
|
35
35
|
spec.add_dependency "spyke", "~> 5"
|
36
36
|
|
37
|
-
spec.add_development_dependency "bundler"
|
37
|
+
spec.add_development_dependency "bundler"
|
38
|
+
spec.add_development_dependency "codecov"
|
38
39
|
spec.add_development_dependency "cornucopia"
|
39
|
-
# spec.add_development_dependency "dotenv", "~> 2.0"
|
40
|
-
# spec.add_development_dependency "dotenv-rails"
|
41
40
|
spec.add_development_dependency "hashie"
|
42
|
-
spec.add_development_dependency "rake", "~> 10
|
43
|
-
spec.add_development_dependency "rspec"
|
41
|
+
spec.add_development_dependency "rake", "~> 10"
|
42
|
+
spec.add_development_dependency "rspec"
|
44
43
|
spec.add_development_dependency "rspec-rails"
|
45
44
|
spec.add_development_dependency "simplecov"
|
46
45
|
spec.add_development_dependency "simplecov-rcov"
|
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yext-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- CardTapp
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: memoist
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rails
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: spyke
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -42,16 +56,30 @@ dependencies:
|
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- - "
|
59
|
+
- - ">="
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
61
|
+
version: '0'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- - "
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: codecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
53
74
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: cornucopia
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,28 +114,28 @@ dependencies:
|
|
86
114
|
requirements:
|
87
115
|
- - "~>"
|
88
116
|
- !ruby/object:Gem::Version
|
89
|
-
version: '10
|
117
|
+
version: '10'
|
90
118
|
type: :development
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
93
121
|
requirements:
|
94
122
|
- - "~>"
|
95
123
|
- !ruby/object:Gem::Version
|
96
|
-
version: '10
|
124
|
+
version: '10'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
126
|
name: rspec
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
100
128
|
requirements:
|
101
|
-
- - "
|
129
|
+
- - ">="
|
102
130
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
131
|
+
version: '0'
|
104
132
|
type: :development
|
105
133
|
prerelease: false
|
106
134
|
version_requirements: !ruby/object:Gem::Requirement
|
107
135
|
requirements:
|
108
|
-
- - "
|
136
|
+
- - ">="
|
109
137
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
138
|
+
version: '0'
|
111
139
|
- !ruby/object:Gem::Dependency
|
112
140
|
name: rspec-rails
|
113
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -189,31 +217,22 @@ files:
|
|
189
217
|
- ".rspec"
|
190
218
|
- ".rubocop.yml"
|
191
219
|
- ".ruby-version"
|
192
|
-
- ".travis.yml"
|
193
220
|
- CODE_OF_CONDUCT.md
|
194
221
|
- Gemfile
|
195
222
|
- Gemfile.lock
|
196
223
|
- LICENSE.txt
|
224
|
+
- PULL_REQUEST_TEMPLATE.md
|
197
225
|
- README.md
|
198
226
|
- Rakefile
|
199
|
-
- app/
|
200
|
-
- app/assets/images/yext/api/.keep
|
201
|
-
- app/assets/javascripts/yext/api/application.js
|
202
|
-
- app/assets/stylesheets/yext/api/application.css
|
227
|
+
- app/controllers/yext/api/agreements/add_request_controller.rb
|
203
228
|
- app/controllers/yext/api/application_controller.rb
|
204
|
-
- app/docs/notes.txt
|
205
|
-
- app/helpers/yext/api/application_helper.rb
|
206
|
-
- app/jobs/yext/api/application_job.rb
|
207
|
-
- app/mailers/yext/api/application_mailer.rb
|
208
|
-
- app/models/yext/api/application_record.rb
|
209
|
-
- app/views/layouts/yext/api/application.html.erb
|
210
229
|
- bin/console
|
211
230
|
- bin/rails
|
212
231
|
- bin/setup
|
232
|
+
- config/initializers/memoist.rb
|
213
233
|
- config/initializers/spyke.rb
|
214
234
|
- config/routes.rb
|
215
235
|
- lib/config/api.yml
|
216
|
-
- lib/tasks/yext/api_tasks.rake
|
217
236
|
- lib/yext/api.rb
|
218
237
|
- lib/yext/api/administrative_api.rb
|
219
238
|
- lib/yext/api/administrative_api/account.rb
|
@@ -221,25 +240,31 @@ files:
|
|
221
240
|
- lib/yext/api/administrative_api/service.rb
|
222
241
|
- lib/yext/api/concerns/account_child.rb
|
223
242
|
- lib/yext/api/concerns/account_relations.rb
|
224
|
-
- lib/yext/api/concerns/api_finder.rb
|
225
243
|
- lib/yext/api/concerns/default_scopes.rb
|
226
244
|
- lib/yext/api/concerns/enum_all.rb
|
227
245
|
- lib/yext/api/concerns/faraday_connection.rb
|
228
246
|
- lib/yext/api/concerns/rate_limits.rb
|
229
247
|
- lib/yext/api/engine.rb
|
248
|
+
- lib/yext/api/enumerations/add_request_status.rb
|
249
|
+
- lib/yext/api/enumerations/location_type.rb
|
230
250
|
- lib/yext/api/enumerations/validation.rb
|
231
251
|
- lib/yext/api/knowledge_api.rb
|
232
252
|
- lib/yext/api/knowledge_api/account_settings/account.rb
|
253
|
+
- lib/yext/api/knowledge_api/account_settings/role.rb
|
254
|
+
- lib/yext/api/knowledge_api/account_settings/user.rb
|
233
255
|
- lib/yext/api/knowledge_api/health_check/health.rb
|
234
256
|
- lib/yext/api/knowledge_api/knowledge_manager/category.rb
|
235
257
|
- lib/yext/api/knowledge_api/knowledge_manager/location.rb
|
236
258
|
- lib/yext/api/live_api.rb
|
237
259
|
- lib/yext/api/live_api/location.rb
|
238
260
|
- lib/yext/api/utils/api_base.rb
|
239
|
-
- lib/yext/api/utils/
|
261
|
+
- lib/yext/api/utils/api_finder.rb
|
240
262
|
- lib/yext/api/utils/configuration.rb
|
241
|
-
- lib/yext/api/utils/
|
242
|
-
- lib/yext/api/utils/
|
263
|
+
- lib/yext/api/utils/middleware/api_rate_limits.rb
|
264
|
+
- lib/yext/api/utils/middleware/default_parameters.rb
|
265
|
+
- lib/yext/api/utils/middleware/response_parser.rb
|
266
|
+
- lib/yext/api/utils/middleware/uri_cleanup.rb
|
267
|
+
- lib/yext/api/utils/params.rb
|
243
268
|
- lib/yext/api/version.rb
|
244
269
|
- lib/yext/include_rails.rb
|
245
270
|
- yext-api.gemspec
|