tramway-api 1.6.0.1 → 1.6.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0f21707e10ef82a1c378250e9c82339400ee41739d7a6009001ecd1c8a17c4e0
4
- data.tar.gz: 22732d5ad75036e1bf59831171f4d82af30f95805432900df283566b2b24619c
3
+ metadata.gz: 14b227fe2c5a72ce92a967c1a1abf17b0f3a3480cee4f4e9fc5a1a53c978aca4
4
+ data.tar.gz: ffe812022a1229e947c0db0edbda374c174d7632970099107f0d8f556a7ebcd1
5
5
  SHA512:
6
- metadata.gz: 313b31746731d79afe528f6100daa910260707e03c4d68d5c0961b6a046591d485006a58e3438b9b3bf4c1dcb7b79009511834b7a58905e293834d679c47bb66
7
- data.tar.gz: 6b9a2570cd6b8e68d039de8706d9923651081c010f0a4cebce5347a06f442033b2c3833b7c07194bd4eea3b9bb3a2b7b81d629078d18380df4488f35b90ba63f
6
+ metadata.gz: 14f9d4a3aff794718f346dc0ace3ec0a92f1abe05d2123164ae8d1dc0b9b5f9ad5f2c08dee24264e691bbc798d0af758bb48fcb8079423c1833795b105ca83a0
7
+ data.tar.gz: cbbd904561dee654dccf93f2279f7a1e6dcf6069e85f705cd4efdef58175c99138647a18e14d1878b7f726535089239683966b4fbb4e01d8c8822737e5f5b58c
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  begin
2
4
  require 'bundler/setup'
3
5
  rescue LoadError
@@ -14,7 +16,7 @@ RDoc::Task.new(:rdoc) do |rdoc|
14
16
  rdoc.rdoc_files.include('lib/**/*.rb')
15
17
  end
16
18
 
17
- APP_RAKEFILE = File.expand_path("spec/dummy/Rakefile", __dir__)
19
+ APP_RAKEFILE = File.expand_path('spec/dummy/Rakefile', __dir__)
18
20
  load 'rails/tasks/engine.rake'
19
21
 
20
22
  load 'rails/tasks/statistics.rake'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tramway
2
4
  module Api
3
5
  class ApplicationController < ::Tramway::Core::ApplicationController
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tramway
2
4
  module Api
3
5
  module V1
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tramway::Api::V1
2
4
  class RecordsController < ::Tramway::Api::V1::ApplicationController
3
5
  before_action :check_available_model_class
@@ -8,18 +10,18 @@ module Tramway::Api::V1
8
10
  records = model_class.active.order(id: :desc).send params[:scope] || :all
9
11
  records = records.full_text_search params[:search] if params[:search]
10
12
  render json: records,
11
- each_serializer: serializer_class,
12
- include: '*',
13
- status: :ok
13
+ each_serializer: serializer_class,
14
+ include: '*',
15
+ status: :ok
14
16
  end
15
17
 
16
18
  def create
17
19
  record_form = form_class.new model_class.new
18
20
  if record_form.submit snake_case params[:data][:attributes]
19
21
  render json: record_form.model,
20
- serializer: serializer_class,
21
- include: '*',
22
- status: :created
22
+ serializer: serializer_class,
23
+ include: '*',
24
+ status: :created
23
25
  else
24
26
  render_errors_for record_form
25
27
  end
@@ -29,9 +31,9 @@ module Tramway::Api::V1
29
31
  record_form = form_class.new model_class.active.find params[:id]
30
32
  if record_form.submit snake_case params[:data][:attributes]
31
33
  render json: record_form.model,
32
- serializer: serializer_class,
33
- include: '*',
34
- status: :ok
34
+ serializer: serializer_class,
35
+ include: '*',
36
+ status: :ok
35
37
  else
36
38
  render_errors_for record_form
37
39
  end
@@ -40,36 +42,34 @@ module Tramway::Api::V1
40
42
  def show
41
43
  record = model_class.active.find params[:id]
42
44
  render json: record,
43
- serializer: serializer_class,
44
- include: '*',
45
- status: :ok
45
+ serializer: serializer_class,
46
+ include: '*',
47
+ status: :ok
46
48
  end
47
49
 
48
50
  def destroy
49
51
  record = model_class.active.find params[:id]
50
52
  record.remove
51
53
  render json: record,
52
- serializer: serializer_class,
53
- include: '*',
54
- status: :no_content
54
+ serializer: serializer_class,
55
+ include: '*',
56
+ status: :no_content
55
57
  end
56
58
 
57
59
  private
58
60
 
59
61
  def check_available_model_class
60
- head :unprocessable_entity and return unless model_class
62
+ head(:unprocessable_entity) && return unless model_class
61
63
  end
62
64
 
63
65
  def check_available_model_action
64
66
  open_actions = Tramway::Api.available_models[model_class.to_s][:open]&.map(&:to_s) || []
65
- closed_actions = Tramway::Api.available_models[model_class.to_s][:closed]&.map(&:to_s) || []
66
- head :unprocessable_entity and return unless action_name.in? open_actions + closed_actions
67
+ closed_actions = Tramway::Api.available_models[model_class.to_s][:closed]&.map(&:to_s) || []
68
+ head(:unprocessable_entity) && return unless action_name.in? open_actions + closed_actions
67
69
  end
68
70
 
69
71
  def authenticate_user_if_needed
70
- if action_name.in? Tramway::Api::available_models[model_class.to_s][:closed]&.map(&:to_s) || []
71
- current_user
72
- end
72
+ head :unauthorized and return if action_name.in?(Tramway::Api.available_models[model_class.to_s][:closed]&.map(&:to_s) || []) && !current_user
73
73
  end
74
74
 
75
75
  def model_class
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  class Tramway::Api::V1::UserTokensController < ::Tramway::Api::V1::ApplicationController
3
4
  def create
4
5
  if entity.present? && entity.authenticate(auth_params[:password])
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'tramway/helpers/class_name_helpers'
2
4
 
3
5
  class Tramway::Api::V1::UsersController < ::Tramway::Api::V1::ApplicationController
@@ -9,7 +11,7 @@ class Tramway::Api::V1::UsersController < ::Tramway::Api::V1::ApplicationControl
9
11
  # Implement JSON API spec here
10
12
  if user_form.submit snake_case params[user_based_model.name.underscore]
11
13
  token = ::Knock::AuthToken.new(payload: { sub: user_form.model.uid }).token
12
- # FIXME refactor this bullshit
14
+ # FIXME: refactor this bullshit
13
15
  serialized_user = OpenStruct.new(
14
16
  user_form.model.attributes.merge(
15
17
  authentication_token: token,
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Tramway::Api::AuthenticationForm < Tramway::Core::ApplicationForm
2
4
  properties :email, :password
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tramway
2
4
  module Api
3
5
  module ApplicationHelper
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tramway
2
4
  module Api
3
5
  class ApplicationJob < ActiveJob::Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tramway
2
4
  module Api
3
5
  class ApplicationMailer < ActionMailer::Base
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tramway
2
4
  module Api
3
5
  class ApplicationRecord < ActiveRecord::Base
@@ -26,21 +26,19 @@ class Tramway::Api::V1::ErrorSerializer < ActiveModel::Serializer
26
26
  end
27
27
  end
28
28
 
29
- if object.model
30
- object.model.attributes.each do |attribute_key, attribute_value|
31
- if attribute_value.is_a?(Reform::Form)
32
- error_messages.merge!(error_messages(attribute_value, path + [attribute_key]))
33
- elsif attribute_value.is_a?(Array)
34
- attribute_value.each_with_index do |array_attribute_value, array_attribute_key|
35
- next unless array_attribute_value.is_a?(Reform::Form)
36
-
37
- error_messages.merge!(
38
- error_messages(
39
- array_attribute_value,
40
- path + [attribute_key] + [array_attribute_key]
41
- )
29
+ object.model&.attributes&.each do |attribute_key, attribute_value|
30
+ if attribute_value.is_a?(Reform::Form)
31
+ error_messages.merge!(error_messages(attribute_value, path + [attribute_key]))
32
+ elsif attribute_value.is_a?(Array)
33
+ attribute_value.each_with_index do |array_attribute_value, array_attribute_key|
34
+ next unless array_attribute_value.is_a?(Reform::Form)
35
+
36
+ error_messages.merge!(
37
+ error_messages(
38
+ array_attribute_value,
39
+ path + [attribute_key] + [array_attribute_key]
42
40
  )
43
- end
41
+ )
44
42
  end
45
43
  end
46
44
  end
@@ -1,4 +1,6 @@
1
- ActionDispatch::Request.parameter_parsers[:json] = -> (raw_post) {
1
+ # frozen_string_literal: true
2
+
3
+ ActionDispatch::Request.parameter_parsers[:json] = lambda { |raw_post|
2
4
  data = ActiveSupport::JSON.decode(raw_post)
3
5
  data = { _json: data } unless data.is_a?(Hash)
4
6
 
data/config/routes.rb CHANGED
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Tramway::Api::Engine.routes.draw do
2
4
  namespace :v1 do
3
- resource :user_token, only: [ :create ]
4
- resource :user, only: [ :create, :show ]
5
+ resource :user_token, only: [:create]
6
+ resource :user, only: %i[create show]
5
7
  resources :records
6
8
  end
7
9
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # desc "Explaining what the task does"
2
4
  # task :tramway_api do
3
5
  # # Task goes here
data/lib/tramway/api.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'tramway/api/engine'
2
4
 
3
5
  module Tramway
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tramway
2
4
  module Api
3
5
  class Engine < ::Rails::Engine
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Tramway
2
4
  module Api
3
- VERSION = '1.6.0.1'
5
+ VERSION = '1.6.0.2'
4
6
  end
5
7
  end
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tramway-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0.1
4
+ version: 1.6.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Kalashnikov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-11 00:00:00.000000000 Z
11
+ date: 2019-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: knock
14
+ name: active_model_serializers
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.10.5
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: '0'
26
+ version: 0.10.5
27
27
  - !ruby/object:Gem::Dependency
28
- name: tramway-core
28
+ name: knock
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.9.2
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 1.9.2
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: active_model_serializers
42
+ name: tramway-core
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 0.10.5
47
+ version: 1.9.2
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 0.10.5
54
+ version: 1.9.2
55
55
  description: Engine for api
56
56
  email:
57
57
  - kalashnikovisme@gmail.com