lurker 0.6.0 → 0.6.1

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.
@@ -0,0 +1,46 @@
1
+ module Lurker
2
+ class SchemaModifier
3
+ class << self
4
+ def merge!(schema, data)
5
+ new(schema, data).merge!
6
+ end
7
+
8
+ def append!(schema, data)
9
+ new(schema, data).append!
10
+ end
11
+ end
12
+
13
+ def initialize(schema, data)
14
+ @schema = schema
15
+ @data = data
16
+ end
17
+
18
+ def merge!
19
+ modifier_klass.new(@schema).merge!(@data)
20
+ end
21
+
22
+ def append!
23
+ schema_klass.new(@schema).append!(@data)
24
+ end
25
+
26
+ private
27
+
28
+ def schema_klass
29
+ klass_from_type(@schema)
30
+ end
31
+
32
+ def modifier_klass
33
+ klass_from_type(@data)
34
+ end
35
+
36
+ def klass_from_type(anything)
37
+ if anything.kind_of?(::Hash)
38
+ Lurker::SchemaModifier::Hash
39
+ elsif anything.kind_of?(::Array)
40
+ Lurker::SchemaModifier::Array
41
+ else
42
+ Lurker::SchemaModifier::Atom
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,28 @@
1
+ module Lurker
2
+ class SchemaModifier
3
+ class Array
4
+ def initialize(json_schema_hash)
5
+ @array = json_schema_hash
6
+ end
7
+
8
+ def merge!(data)
9
+ build_array
10
+
11
+ data.each do |value|
12
+ Lurker::SchemaModifier.merge!(@array["items"], value)
13
+ end
14
+ end
15
+
16
+ def append!(data)
17
+ @array << data
18
+ end
19
+
20
+ private
21
+
22
+ def build_array
23
+ @array["type"] ||= "array"
24
+ @array["items"] ||= {}
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,88 @@
1
+ module Lurker
2
+ class SchemaModifier
3
+ class Atom
4
+ TYPE_MAP = {
5
+ "Fixnum" => "integer",
6
+ "Float" => "number",
7
+ "Hash" => "object",
8
+ "Time" => "string",
9
+ "TrueClass" => "boolean",
10
+ "FalseClass" => "boolean",
11
+ "NilClass" => "null"
12
+ }.freeze
13
+
14
+ DATE_TIME_FORMAT = "date-time".freeze
15
+ COLOR_FORMAT = "color".freeze
16
+ URI_FORMAT = "uri".freeze
17
+
18
+ def initialize(json_schema_hash)
19
+ @atom = json_schema_hash
20
+ end
21
+
22
+ def merge!(data)
23
+ atom = build_atom(data)
24
+ combined? ? append_new(atom) : combine_with(atom)
25
+ end
26
+
27
+ private
28
+
29
+ def combine_with(atom)
30
+ return @atom.clear.merge!(atom) unless @atom.key?("type")
31
+
32
+ if @atom["type"] != atom["type"]
33
+ existing_atom = @atom.dup
34
+ @atom.clear
35
+ @atom["anyOf"] = [existing_atom, atom]
36
+ end
37
+ end
38
+
39
+ def append_new(atom)
40
+ # TODO : If example empty - fill from duplicate
41
+ return if !!@atom["anyOf"].detect { |atm| atm["type"] == atom["type"] }
42
+
43
+ @atom["anyOf"] << atom
44
+ end
45
+
46
+ def combined?
47
+ !!@atom["anyOf"]
48
+ end
49
+
50
+ def build_atom(data)
51
+ atom = {
52
+ "description" => "",
53
+ "type" => guess_type(data),
54
+ "example" => data
55
+ }
56
+
57
+ if format = guess_format(data)
58
+ atom["format"] = format
59
+ end
60
+
61
+ atom
62
+ end
63
+
64
+ def guess_type(data)
65
+ in_type = data.class.to_s
66
+ TYPE_MAP[in_type] || in_type.downcase
67
+ end
68
+
69
+ def guess_format(data)
70
+ if data.kind_of?(Time)
71
+ DATE_TIME_FORMAT
72
+ elsif data.kind_of?(String)
73
+ if data.start_with? "http://"
74
+ URI_FORMAT
75
+ elsif data.match(/\#[0-9a-fA-F]{3}(?:[0-9a-fA-F]{3})?\b/)
76
+ COLOR_FORMAT
77
+ else
78
+ begin
79
+ DATE_TIME_FORMAT if Time.iso8601(data)
80
+ rescue
81
+ nil
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end # class Atom
87
+ end
88
+ end
@@ -0,0 +1,30 @@
1
+ module Lurker
2
+ class SchemaModifier
3
+ class Hash
4
+ def initialize(json_schema_hash)
5
+ @hash = json_schema_hash
6
+ end
7
+
8
+ def merge!(data)
9
+ build_hash
10
+
11
+ data.each do |name, value|
12
+ unless @hash[name]
13
+ @hash["properties"][name] ||= {}
14
+ Lurker::SchemaModifier.merge!(@hash["properties"][name], value)
15
+ end
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def build_hash
22
+ @hash["description"] ||= ""
23
+ @hash["type"] ||= "object"
24
+ @hash["additionalProperties"] = false if @hash["additionalProperties"].nil?
25
+ @hash["required"] ||= []
26
+ @hash["properties"] ||= {}
27
+ end
28
+ end
29
+ end
30
+ end
@@ -57,13 +57,9 @@ class Lurker::Service
57
57
  endpoint_path = path_for(verb, path)
58
58
  endpoint_fname = Dir["#{endpoint_path}*"].first
59
59
 
60
- endpoint = if endpoint_fname.present?
61
- Lurker::Endpoint.new(endpoint_fname, path_params, self)
62
- else
63
- Lurker::EndpointScaffold.new(endpoint_path, path_params, self)
60
+ Lurker::Endpoint.new(endpoint_fname || endpoint_path, path_params, self).tap do |ep|
61
+ @opened_endpoints << ep
64
62
  end
65
- @opened_endpoints << endpoint
66
- endpoint
67
63
  end
68
64
 
69
65
  def endpoint_paths
data/lib/lurker/spy.rb CHANGED
@@ -72,7 +72,7 @@ module Lurker
72
72
 
73
73
  def self.on(options={}, &block)
74
74
  require 'lurker/spec_helper' unless defined? Lurker::SpecHelper
75
- (Thread.current[:lurker_spy] ||= new(options, &block)).tap do |spy|
75
+ (Thread.current[:lurker_spy] = new(options, &block)).tap do |spy|
76
76
  spy.call
77
77
  end
78
78
  end
@@ -3,6 +3,7 @@
3
3
 
4
4
  <head>
5
5
 
6
+ <meta charset="utf-8">
6
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
8
 
8
9
  <title><%= @service_presenter.title %></title>
@@ -1,3 +1,3 @@
1
1
  module Lurker
2
- VERSION = "0.6.0"
2
+ VERSION = "0.6.1"
3
3
  end
data/lurker.gemspec CHANGED
@@ -7,11 +7,13 @@ Gem::Specification.new do |spec|
7
7
  spec.name = "lurker"
8
8
  spec.version = Lurker::VERSION
9
9
  spec.authors = ["Vlad Bokov"]
10
- spec.email = ["razum2um@mail.ru"]
11
- spec.summary = %q{Lukrs into your API rquest to tell you the truth.}
12
- spec.description = %q{It hooks in rspec controller methods to check theirs schema and let people try it}
10
+ spec.email = ["bokov.vlad@gmail.com"]
11
+ spec.summary = %q{Get pretty, documented and visible API}
12
+ spec.description = %q{The new de-facto for API testing your Rails application}
13
13
  spec.homepage = "http://github.com/razum2um/lurker"
14
14
  spec.license = "MIT"
15
+ spec.cert_chain = ['certs/razum2um.pem']
16
+ spec.signing_key = File.expand_path("~/.ssh/gem-private_key.pem") if $0 =~ /gem\z/
15
17
 
16
18
  spec.files = `git ls-files`.split($/)
17
19
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
@@ -20,15 +22,10 @@ Gem::Specification.new do |spec|
20
22
 
21
23
  spec.add_dependency("json", "~> 1.7")
22
24
  spec.add_dependency("json-schema", "~> 2.2")
23
- spec.add_dependency("kramdown", "~> 1.3")
24
25
  spec.add_dependency("thor", "~> 0.19")
25
- spec.add_dependency("diffy", "~> 3.0")
26
26
  spec.add_dependency("sinatra", "~> 1.4")
27
- spec.add_dependency("execjs", "~> 2.0")
28
- spec.add_dependency("pdfkit", "~> 0.6")
29
- spec.add_dependency("wkhtmltopdf-binary", "~> 0.9")
30
- # spec.add_dependency("coderay", "~> 1.0")
31
- spec.add_dependency("hashie", "~> 2.1")
27
+ spec.add_dependency("hashie", "~> 2.0")
28
+ spec.add_dependency("activesupport", ">= 3.2", "< 4.2")
32
29
 
33
30
  # testing
34
31
  spec.add_development_dependency("psych", "~> 2.0")
@@ -46,9 +43,15 @@ Gem::Specification.new do |spec|
46
43
 
47
44
  spec.add_development_dependency("simplecov", "~> 0.7")
48
45
  spec.add_development_dependency("coveralls", "~> 0.7")
46
+ spec.add_development_dependency("rubocop", "~> 0.21")
49
47
 
50
48
  # FIXME: these gems are needed while cucumber runs
51
49
  # inner Gemfile isn"t getting used, but lib"s one
52
50
  spec.add_development_dependency("rspec-rails", "~> 2.14")
53
51
  spec.add_development_dependency("pg", "~> 0.16")
52
+ spec.add_development_dependency("kramdown", "~> 1.3")
53
+ spec.add_development_dependency("diffy", "~> 3.0")
54
+ spec.add_development_dependency("execjs", "~> 2.0")
55
+ spec.add_development_dependency("pdfkit", "~> 0.6")
56
+ spec.add_development_dependency("wkhtmltopdf-binary", "~> 0.9")
54
57
  end
@@ -53,6 +53,12 @@ route <<-ROUTE
53
53
  resources :repos
54
54
  end
55
55
  end
56
+
57
+ namespace :v2 do
58
+ resources :users do
59
+ resources :repos
60
+ end
61
+ end
56
62
  end
57
63
 
58
64
  get '/robots.txt', to: proc { |env| [
@@ -66,7 +72,7 @@ ROUTE
66
72
 
67
73
  remove_file 'public/robots.txt'
68
74
 
69
- generate 'model User name:string --no-timestamps --no-test-framework --no-migration'
75
+ generate 'model User name:string surname:string --no-timestamps --no-test-framework --no-migration'
70
76
  generate 'model Repo user:references name:string --no-timestamps --no-test-framework --no-migration'
71
77
 
72
78
  file 'config/initializers/serializer.rb', force: true do
@@ -99,6 +105,10 @@ inject_into_class 'app/models/user.rb', 'User' do
99
105
  include ExactOrderAsJson
100
106
  has_many :repos
101
107
  validates :name, presence: true
108
+
109
+ def surname
110
+ read_attribute(:surname).to_s
111
+ end
102
112
  CODE
103
113
  end
104
114
 
@@ -178,7 +188,7 @@ file 'app/controllers/api/v1/users_controller.rb', 'Api::V1::UsersController', f
178
188
  def user_params
179
189
  @user_params = params[:user]
180
190
  if @user_params.respond_to? :permit
181
- @user_params.permit(:name)
191
+ @user_params.permit(:name, :surname)
182
192
  else
183
193
  @user_params
184
194
  end
@@ -249,6 +259,18 @@ file 'app/controllers/api/v1/repos_controller.rb', 'Api::V1::ReposController', f
249
259
  CODE
250
260
  end
251
261
 
262
+ file 'app/controllers/api/v2/users_controller.rb', 'Api::V2::UsersController', force: true do
263
+ <<-CODE
264
+ class Api::V2::UsersController < Api::V1::UsersController;end
265
+ CODE
266
+ end
267
+
268
+ file 'app/controllers/api/v2/repos_controller.rb', 'Api::V2::ReposController', force: true do
269
+ <<-CODE
270
+ class Api::V2::ReposController < Api::V1::ReposController; end
271
+ CODE
272
+ end
273
+
252
274
  # FIXME: uninitialized constant User (NameError) in last creation line
253
275
  append_to_file 'config/environment.rb' do
254
276
  <<-CODE
@@ -373,8 +395,8 @@ file 'db/schema.rb', force: true do
373
395
 
374
396
  create_table "users", :force => true do |t|
375
397
  t.string "name"
398
+ t.string "surname"
376
399
  end
377
400
  end
378
401
  CODE
379
402
  end
380
-
@@ -3,6 +3,11 @@ gem 'rspec-rails'
3
3
  gem 'spring-commands-rspec'
4
4
  gem 'database_cleaner'
5
5
  gem 'simplecov', '~> 0.7.1', require: false
6
+ gem 'kramdown', '~> 1.3'
7
+ gem 'pdfkit', '~> 0.5'
8
+ gem 'wkhtmltopdf-binary', '~> 0.9'
9
+ gem 'execjs'
10
+ gem 'coderay'
6
11
 
7
12
  unless ENV['TRAVIS']
8
13
  if RUBY_VERSION > '2.0.0'
@@ -17,10 +22,20 @@ gem 'unicorn', group: :production
17
22
  gem 'therubyracer', group: :production
18
23
 
19
24
  append_to_file 'Gemfile' do
25
+ gem = if ENV['TRAVIS']
26
+ "gem 'lurker', github: 'razum2um/lurker', branch: 'master'"
27
+ else
28
+ origin = `cd ../.. && git config --get remote.origin.url`.scan(/github\.com.(.*).git/).flatten.first.strip rescue 'razum2um/lurker'
29
+ branch = `cd ../.. && git rev-parse --abbrev-ref HEAD`.strip rescue 'master'
30
+ "gem 'lurker', github: '#{origin}', branch: '#{branch}'"
31
+ end
32
+
20
33
  <<-CODE
21
34
 
22
- # new line above is important
23
- gem 'lurker', github: 'razum2um/lurker', branch: 'master'
35
+ # new line above is important, branch is also important
36
+ # please, dont commit here: "gem 'lurker', path: '../../'"
37
+ # as I deploy this app instantly with this Gemfile
38
+ #{gem}
24
39
  CODE
25
40
  end
26
41
 
metadata CHANGED
@@ -1,14 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lurker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vlad Bokov
8
8
  autorequire:
9
9
  bindir: bin
10
- cert_chain: []
11
- date: 2014-05-14 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMRMwEQYDVQQDDApib2tv
14
+ di52bGFkMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZFgNj
15
+ b20wHhcNMTQwNTIwMjAyOTAyWhcNMTUwNTIwMjAyOTAyWjBBMRMwEQYDVQQDDApi
16
+ b2tvdi52bGFkMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
17
+ FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCibrb/aiZX3kWo
18
+ Fmzo3gvGBFS9N18Q5rp9UTJRc4KxZQOay2WcgLjy1oU61r2Urjz3VDT4sg/yw3N3
19
+ YXIPqSTRl+OPIaafe45TVpF4mtMSsc1Gm/O3Sfoz6URiMd9iDtc2sTpaMgatL4pV
20
+ EExER9emjrmElRFknJD65E3gVDX7KXvrZYYAScJR33DADIGUgpuyHm29S7G/4WAy
21
+ ol6XfmPx+x5rM49QytGSNCQDYQ3SMMCo9wKkEm3Zcx0O4qhO8INevl/mvkAWLhOA
22
+ +0qldtuUx9wbBQ0D0wVR8LTafqWrIUHQjWXqrhWBqXhYeR3jj5aehBhpPFclHuKU
23
+ 5GeILZrFAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
24
+ BBSiidH2CEJmkza+NBBJNLcnzQX57TAfBgNVHREEGDAWgRRib2tvdi52bGFkQGdt
25
+ YWlsLmNvbTAfBgNVHRIEGDAWgRRib2tvdi52bGFkQGdtYWlsLmNvbTANBgkqhkiG
26
+ 9w0BAQUFAAOCAQEAVEyF63kQT9HKm3YIw1WzLvuOMvEUThzBomMMsTp9CGXWvem6
27
+ wZdMhxykwk1lga0OwsCn+wr1tWZ/cNeWqGSY00vTfLWdriK60xuRW7zT1Z5tmxbD
28
+ dq2ULdhII/qCFQlzDB/+IptO1rJLzfxTckoArmeYtkBV6LaVd7wpaRZnw0Apm93e
29
+ ph03YddPDbB34xTivvu4d6BBbKGxj/YN+1NLD9rMi6FspgcA4P1UlmKqyCluTbZj
30
+ vzKbYclpJ7gENr/xiTjGqA/Md3zJMzmsFrzUXt4RVmo5SaCyZjC6gFfhSr+PODc7
31
+ ZaSbckvH/+m4boAsg0JkGGFcS3j5fgNmdwgA1A==
32
+ -----END CERTIFICATE-----
33
+ date: 2014-05-26 00:00:00.000000000 Z
12
34
  dependencies:
13
35
  - !ruby/object:Gem::Dependency
14
36
  name: json
@@ -38,20 +60,6 @@ dependencies:
38
60
  - - "~>"
39
61
  - !ruby/object:Gem::Version
40
62
  version: '2.2'
41
- - !ruby/object:Gem::Dependency
42
- name: kramdown
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.3'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1.3'
55
63
  - !ruby/object:Gem::Dependency
56
64
  name: thor
57
65
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +74,6 @@ dependencies:
66
74
  - - "~>"
67
75
  - !ruby/object:Gem::Version
68
76
  version: '0.19'
69
- - !ruby/object:Gem::Dependency
70
- name: diffy
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '3.0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '3.0'
83
77
  - !ruby/object:Gem::Dependency
84
78
  name: sinatra
85
79
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +89,7 @@ dependencies:
95
89
  - !ruby/object:Gem::Version
96
90
  version: '1.4'
97
91
  - !ruby/object:Gem::Dependency
98
- name: execjs
92
+ name: hashie
99
93
  requirement: !ruby/object:Gem::Requirement
100
94
  requirements:
101
95
  - - "~>"
@@ -109,47 +103,25 @@ dependencies:
109
103
  - !ruby/object:Gem::Version
110
104
  version: '2.0'
111
105
  - !ruby/object:Gem::Dependency
112
- name: pdfkit
106
+ name: activesupport
113
107
  requirement: !ruby/object:Gem::Requirement
114
108
  requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '0.6'
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
109
+ - - ">="
123
110
  - !ruby/object:Gem::Version
124
- version: '0.6'
125
- - !ruby/object:Gem::Dependency
126
- name: wkhtmltopdf-binary
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
111
+ version: '3.2'
112
+ - - "<"
130
113
  - !ruby/object:Gem::Version
131
- version: '0.9'
114
+ version: '4.2'
132
115
  type: :runtime
133
116
  prerelease: false
134
117
  version_requirements: !ruby/object:Gem::Requirement
135
118
  requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '0.9'
139
- - !ruby/object:Gem::Dependency
140
- name: hashie
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
119
+ - - ">="
144
120
  - !ruby/object:Gem::Version
145
- version: '2.1'
146
- type: :runtime
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
121
+ version: '3.2'
122
+ - - "<"
151
123
  - !ruby/object:Gem::Version
152
- version: '2.1'
124
+ version: '4.2'
153
125
  - !ruby/object:Gem::Dependency
154
126
  name: psych
155
127
  requirement: !ruby/object:Gem::Requirement
@@ -352,6 +324,20 @@ dependencies:
352
324
  - - "~>"
353
325
  - !ruby/object:Gem::Version
354
326
  version: '0.7'
327
+ - !ruby/object:Gem::Dependency
328
+ name: rubocop
329
+ requirement: !ruby/object:Gem::Requirement
330
+ requirements:
331
+ - - "~>"
332
+ - !ruby/object:Gem::Version
333
+ version: '0.21'
334
+ type: :development
335
+ prerelease: false
336
+ version_requirements: !ruby/object:Gem::Requirement
337
+ requirements:
338
+ - - "~>"
339
+ - !ruby/object:Gem::Version
340
+ version: '0.21'
355
341
  - !ruby/object:Gem::Dependency
356
342
  name: rspec-rails
357
343
  requirement: !ruby/object:Gem::Requirement
@@ -380,10 +366,79 @@ dependencies:
380
366
  - - "~>"
381
367
  - !ruby/object:Gem::Version
382
368
  version: '0.16'
383
- description: It hooks in rspec controller methods to check theirs schema and let people
384
- try it
369
+ - !ruby/object:Gem::Dependency
370
+ name: kramdown
371
+ requirement: !ruby/object:Gem::Requirement
372
+ requirements:
373
+ - - "~>"
374
+ - !ruby/object:Gem::Version
375
+ version: '1.3'
376
+ type: :development
377
+ prerelease: false
378
+ version_requirements: !ruby/object:Gem::Requirement
379
+ requirements:
380
+ - - "~>"
381
+ - !ruby/object:Gem::Version
382
+ version: '1.3'
383
+ - !ruby/object:Gem::Dependency
384
+ name: diffy
385
+ requirement: !ruby/object:Gem::Requirement
386
+ requirements:
387
+ - - "~>"
388
+ - !ruby/object:Gem::Version
389
+ version: '3.0'
390
+ type: :development
391
+ prerelease: false
392
+ version_requirements: !ruby/object:Gem::Requirement
393
+ requirements:
394
+ - - "~>"
395
+ - !ruby/object:Gem::Version
396
+ version: '3.0'
397
+ - !ruby/object:Gem::Dependency
398
+ name: execjs
399
+ requirement: !ruby/object:Gem::Requirement
400
+ requirements:
401
+ - - "~>"
402
+ - !ruby/object:Gem::Version
403
+ version: '2.0'
404
+ type: :development
405
+ prerelease: false
406
+ version_requirements: !ruby/object:Gem::Requirement
407
+ requirements:
408
+ - - "~>"
409
+ - !ruby/object:Gem::Version
410
+ version: '2.0'
411
+ - !ruby/object:Gem::Dependency
412
+ name: pdfkit
413
+ requirement: !ruby/object:Gem::Requirement
414
+ requirements:
415
+ - - "~>"
416
+ - !ruby/object:Gem::Version
417
+ version: '0.6'
418
+ type: :development
419
+ prerelease: false
420
+ version_requirements: !ruby/object:Gem::Requirement
421
+ requirements:
422
+ - - "~>"
423
+ - !ruby/object:Gem::Version
424
+ version: '0.6'
425
+ - !ruby/object:Gem::Dependency
426
+ name: wkhtmltopdf-binary
427
+ requirement: !ruby/object:Gem::Requirement
428
+ requirements:
429
+ - - "~>"
430
+ - !ruby/object:Gem::Version
431
+ version: '0.9'
432
+ type: :development
433
+ prerelease: false
434
+ version_requirements: !ruby/object:Gem::Requirement
435
+ requirements:
436
+ - - "~>"
437
+ - !ruby/object:Gem::Version
438
+ version: '0.9'
439
+ description: The new de-facto for API testing your Rails application
385
440
  email:
386
- - razum2um@mail.ru
441
+ - bokov.vlad@gmail.com
387
442
  executables:
388
443
  - lurker
389
444
  extensions: []
@@ -391,24 +446,30 @@ extra_rdoc_files: []
391
446
  files:
392
447
  - ".gitignore"
393
448
  - ".gitmodules"
449
+ - ".hound.yml"
394
450
  - ".rspec"
451
+ - ".rubocop.yml"
395
452
  - ".travis.yml"
396
453
  - Gemfile
397
454
  - LICENSE.txt
398
455
  - README.md
399
456
  - Rakefile
400
457
  - bin/lurker
458
+ - certs/razum2um.pem
401
459
  - cucumber.yml
402
460
  - features/README.md
461
+ - features/atom_persistent_within_the_same_type.feature
403
462
  - features/controller_nested_schema_scaffolding.feature
404
463
  - features/controller_schema_scaffolding.feature
405
464
  - features/html_generation.feature
406
465
  - features/minitest.feature
407
466
  - features/multidomain_support.feature
467
+ - features/multitype_request_support.feature
408
468
  - features/partials.feature
409
469
  - features/request_nested_schema_scaffolding.feature
410
470
  - features/request_schema_scaffolding.feature
411
471
  - features/schema_suffixes.feature
472
+ - features/schema_updating_within_test_suite.feature
412
473
  - features/step_definitions/additional_cli_steps.rb
413
474
  - features/support/env.rb
414
475
  - features/test_endpoint.feature
@@ -420,7 +481,6 @@ files:
420
481
  - lib/lurker/capistrano.rb
421
482
  - lib/lurker/cli.rb
422
483
  - lib/lurker/endpoint.rb
423
- - lib/lurker/endpoint_scaffold.rb
424
484
  - lib/lurker/engine.rb
425
485
  - lib/lurker/erb_schema_context.rb
426
486
  - lib/lurker/form_builder.rb
@@ -437,6 +497,10 @@ files:
437
497
  - lib/lurker/response.rb
438
498
  - lib/lurker/sandbox.rb
439
499
  - lib/lurker/schema.rb
500
+ - lib/lurker/schema_modifier.rb
501
+ - lib/lurker/schema_modifier/array.rb
502
+ - lib/lurker/schema_modifier/atom.rb
503
+ - lib/lurker/schema_modifier/hash.rb
440
504
  - lib/lurker/server.rb
441
505
  - lib/lurker/service.rb
442
506
  - lib/lurker/spec_helper.rb
@@ -520,18 +584,21 @@ rubyforge_project:
520
584
  rubygems_version: 2.2.2
521
585
  signing_key:
522
586
  specification_version: 4
523
- summary: Lukrs into your API rquest to tell you the truth.
587
+ summary: Get pretty, documented and visible API
524
588
  test_files:
525
589
  - features/README.md
590
+ - features/atom_persistent_within_the_same_type.feature
526
591
  - features/controller_nested_schema_scaffolding.feature
527
592
  - features/controller_schema_scaffolding.feature
528
593
  - features/html_generation.feature
529
594
  - features/minitest.feature
530
595
  - features/multidomain_support.feature
596
+ - features/multitype_request_support.feature
531
597
  - features/partials.feature
532
598
  - features/request_nested_schema_scaffolding.feature
533
599
  - features/request_schema_scaffolding.feature
534
600
  - features/schema_suffixes.feature
601
+ - features/schema_updating_within_test_suite.feature
535
602
  - features/step_definitions/additional_cli_steps.rb
536
603
  - features/support/env.rb
537
604
  - features/test_endpoint.feature