wcc-api 0.2.0 → 0.3.0

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
  SHA1:
3
- metadata.gz: 74231ceb352ccd172873342f6505b620cf239380
4
- data.tar.gz: d4ecba5f2d57c5ed15b361362e11e4dca1c17906
3
+ metadata.gz: 29f4bd81d5f646565f0656931a8078216fb9de58
4
+ data.tar.gz: ae9b9f7df6dc2955fc353f71ddb6c245905e1b3b
5
5
  SHA512:
6
- metadata.gz: 50d9e33f6592e94854cc838ae7f5de355ad90c53b961da4de8cd3d6d8c87636f0e8655404c5bb04ab7331b5ab196b1b6c51da998e11119905247eadadd694092
7
- data.tar.gz: fa178778ec21bb489148291e23dabb36c5e49b7b6d4c044e2e4584f18e93d43c9106f0f4953faf9572e6416282d34456d028823fae53029d98e006cc5f3a019c
6
+ metadata.gz: d0561533a5a86c806a60a6ebfc4d99d8689775439a3f1eed22da10fdb62fa7e94eb73617a231920a6d97356b0cd119d26c02a66da2ab864caea1542540e14e95
7
+ data.tar.gz: 02e635a8449a312b0d1d7f974f91c84beedc5bd39cf62a7ad5bd253556bd4afedba949abbc064675340cbafade4f06652621d86847a8198bf3b1624889fd48a2
@@ -0,0 +1,41 @@
1
+ version: 2
2
+ jobs:
3
+ build:
4
+ docker:
5
+ - image: circleci/ruby:2.3.3-node
6
+ steps:
7
+ - checkout
8
+ # Restore bundle cache
9
+ - restore_cache:
10
+ key: gem-{{ checksum "wcc-api.gemspec" }}
11
+
12
+ # copy env
13
+ - run: cp .env.example .env
14
+
15
+ # Bundle install dependencies
16
+ - run: bundle install --path /tmp/vendor/bundle
17
+
18
+ # Store bundle cache
19
+ - save_cache:
20
+ key: gem-{{ checksum "wcc-api.gemspec" }}
21
+ paths:
22
+ - /tmp/vendor/bundle
23
+
24
+ # run rubocop
25
+ - type: shell
26
+ command: |
27
+ bundle exec rubocop
28
+
29
+ # Run rspec in parallel
30
+ - type: shell
31
+ command: |
32
+ bundle exec rspec --profile 10 \
33
+ --format RspecJunitFormatter \
34
+ --out test_results/rspec.xml \
35
+ --format documentation \
36
+ --order rand \
37
+ $(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
38
+
39
+ # Save test results for timing analysis
40
+ - store_test_results:
41
+ path: test_results
data/.env.example ADDED
File without changes
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,190 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ AllCops:
4
+ DisplayCopNames: true
5
+ TargetRubyVersion: 2.3
6
+ Exclude:
7
+ # generated by rails/binstubs
8
+ - 'bin/**/*'
9
+
10
+ # generated by guard
11
+ - 'Guardfile'
12
+
13
+ # 3rd party
14
+ - 'vendor/**/*'
15
+ - 'lib/**/*'
16
+
17
+ Style/Documentation:
18
+ Enabled: false
19
+
20
+ Style/BlockDelimiters:
21
+ Exclude:
22
+ # we like the `let(:foo) {}` syntax in specs
23
+ - 'spec/**/*.rb'
24
+
25
+ Style/ClassAndModuleChildren:
26
+ EnforcedStyle: compact
27
+
28
+ Style/FormatStringToken:
29
+ EnforcedStyle: template
30
+
31
+ Style/RegexpLiteral:
32
+ Enabled: false
33
+
34
+ Metrics/BlockLength:
35
+ Exclude:
36
+ # spec files that might have a big describe
37
+ - 'spec/**/*.rb'
38
+
39
+ Style/BracesAroundHashParameters:
40
+ Enabled: false
41
+
42
+ Lint/AssignmentInCondition:
43
+ Enabled: false
44
+
45
+ Style/EmptyMethod:
46
+ EnforcedStyle: expanded
47
+
48
+ Style/Alias:
49
+ EnforcedStyle: prefer_alias_method
50
+
51
+ Style/NumericPredicate:
52
+ EnforcedStyle: comparison
53
+
54
+ Layout/AlignParameters:
55
+ EnforcedStyle: with_fixed_indentation
56
+
57
+ Layout/IndentHash:
58
+ EnforcedStyle: consistent
59
+
60
+ Layout/AlignHash:
61
+ # allow coder to get around alignment rules by explicitly defining the hash param
62
+ EnforcedLastArgumentHashStyle: ignore_explicit
63
+
64
+ Layout/MultilineMethodCallIndentation:
65
+ EnforcedStyle: indented
66
+
67
+ Layout/MultilineOperationIndentation:
68
+ EnforcedStyle: indented
69
+
70
+ Rails:
71
+ Enabled: true
72
+
73
+ # These are all the cops that are disabled in the default configuration.
74
+
75
+ Layout/FirstArrayElementLineBreak:
76
+ Description: >-
77
+ Checks for a line break before the first element in a
78
+ multi-line array.
79
+ Enabled: true
80
+
81
+ Layout/FirstHashElementLineBreak:
82
+ Description: >-
83
+ Checks for a line break before the first element in a
84
+ multi-line hash.
85
+ Enabled: true
86
+
87
+ Layout/FirstMethodArgumentLineBreak:
88
+ Description: >-
89
+ Checks for a line break before the first argument in a
90
+ multi-line method call.
91
+ Enabled: false
92
+
93
+ Layout/FirstMethodParameterLineBreak:
94
+ Description: >-
95
+ Checks for a line break before the first parameter in a
96
+ multi-line method parameter definition.
97
+ Enabled: true
98
+
99
+ Layout/MultilineAssignmentLayout:
100
+ Description: 'Check for a newline after the assignment operator in multi-line assignments.'
101
+ StyleGuide: '#indent-conditional-assignment'
102
+ Enabled: true
103
+
104
+ Rails/SaveBang:
105
+ Description: 'Identifies possible cases where Active Record save! or related should be used.'
106
+ StyleGuide: 'https://github.com/bbatsov/rails-style-guide#save-bang'
107
+ Enabled: false
108
+
109
+ Style/AutoResourceCleanup:
110
+ Description: 'Suggests the usage of an auto resource cleanup version of a method (if available).'
111
+ Enabled: true
112
+
113
+ Style/CollectionMethods:
114
+ Description: 'Preferred collection methods.'
115
+ StyleGuide: '#map-find-select-reduce-size'
116
+ Enabled: true
117
+
118
+ Style/Copyright:
119
+ Description: 'Include a copyright notice in each file before any code.'
120
+ Enabled: false
121
+
122
+ Style/DocumentationMethod:
123
+ Description: 'Public methods.'
124
+ Enabled: false
125
+ Exclude:
126
+ - 'spec/**/*'
127
+ - 'test/**/*'
128
+
129
+ Style/ImplicitRuntimeError:
130
+ Description: >-
131
+ Use `raise` or `fail` with an explicit exception class and
132
+ message, rather than just a message.
133
+ Enabled: true
134
+
135
+ Style/InlineComment:
136
+ Description: 'Avoid trailing inline comments.'
137
+ Enabled: true
138
+
139
+ Style/MethodCallWithArgsParentheses:
140
+ Description: 'Use parentheses for method calls with arguments.'
141
+ StyleGuide: '#method-invocation-parens'
142
+ Enabled: false
143
+
144
+ Style/MethodCalledOnDoEndBlock:
145
+ Description: 'Avoid chaining a method call on a do...end block.'
146
+ StyleGuide: '#single-line-blocks'
147
+ # TODO: enable after fixing todos
148
+ Enabled: false
149
+ Exclude:
150
+ - 'spec/**/*'
151
+
152
+ Style/MissingElse:
153
+ Description: >-
154
+ Require if/case expressions to have an else branches.
155
+ If enabled, it is recommended that
156
+ Style/UnlessElse and Style/EmptyElse be enabled.
157
+ This will conflict with Style/EmptyElse if
158
+ Style/EmptyElse is configured to style "both"
159
+ Enabled: false
160
+ EnforcedStyle: both
161
+ SupportedStyles:
162
+ # if - warn when an if expression is missing an else branch
163
+ # case - warn when a case expression is missing an else branch
164
+ # both - warn when an if or case expression is missing an else branch
165
+ - if
166
+ - case
167
+ - both
168
+
169
+ Style/OptionHash:
170
+ Description: "Don't use option hashes when you can use keyword arguments."
171
+ Enabled: true
172
+
173
+ Style/ReturnNil:
174
+ Description: 'Use return instead of return nil.'
175
+ Enabled: true
176
+
177
+ Style/Send:
178
+ Description: 'Prefer `Object#__send__` or `Object#public_send` to `send`, as `send` may overlap with existing methods.'
179
+ StyleGuide: '#prefer-public-send'
180
+ Enabled: true
181
+ Exclude:
182
+ - 'spec/**/*'
183
+
184
+ Style/StringMethods:
185
+ Description: 'Checks if configured preferred methods are used over non-preferred.'
186
+ Enabled: false
187
+
188
+ Style/SingleLineBlockParams:
189
+ Description: 'Enforces the names of some block params.'
190
+ Enabled: false
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,63 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2019-02-11 12:22:05 -0600 using RuboCop version 0.64.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 2
10
+ Metrics/AbcSize:
11
+ Max: 56
12
+
13
+ # Offense count: 1
14
+ # Configuration parameters: CountComments, ExcludedMethods.
15
+ # ExcludedMethods: refine
16
+ Metrics/BlockLength:
17
+ Max: 31
18
+
19
+ # Offense count: 4
20
+ # Configuration parameters: CountComments, ExcludedMethods.
21
+ Metrics/MethodLength:
22
+ Max: 25
23
+
24
+ # Offense count: 2
25
+ # Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist, MethodDefinitionMacros.
26
+ # NamePrefix: is_, has_, have_
27
+ # NamePrefixBlacklist: is_, has_, have_
28
+ # NameWhitelist: is_a?
29
+ # MethodDefinitionMacros: define_method, define_singleton_method
30
+ Naming/PredicateName:
31
+ Exclude:
32
+ - 'spec/**/*'
33
+ - 'lib/wcc/api/json/pagination.rb'
34
+
35
+ # Offense count: 5
36
+ # Cop supports --auto-correct.
37
+ # Configuration parameters: AutoCorrect, EnforcedStyle.
38
+ # SupportedStyles: nested, compact
39
+ Style/ClassAndModuleChildren:
40
+ Exclude:
41
+ - 'lib/wcc/api/railtie.rb'
42
+ - 'lib/wcc/api/rest_client/http_adapter.rb'
43
+ - 'lib/wcc/api/rest_client/typhoeus_adapter.rb'
44
+ - 'lib/wcc/api/version.rb'
45
+
46
+ # Offense count: 2
47
+ # Cop supports --auto-correct.
48
+ Style/IfUnlessModifier:
49
+ Exclude:
50
+ - 'lib/wcc/api/json/pagination.rb'
51
+
52
+ # Offense count: 1
53
+ # Configuration parameters: SuspiciousParamNames.
54
+ # SuspiciousParamNames: options, opts, args, params, parameters
55
+ Style/OptionHash:
56
+ Exclude:
57
+ - 'lib/wcc/api/controller_helpers.rb'
58
+
59
+ # Offense count: 11
60
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
61
+ # URISchemes: http, https
62
+ Metrics/LineLength:
63
+ Max: 142
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in wcc-api.gemspec
data/Rakefile CHANGED
@@ -1,2 +1,3 @@
1
- require "bundler/gem_tasks"
1
+ # frozen_string_literal: true
2
2
 
3
+ require 'bundler/gem_tasks'
data/bin/rspec ADDED
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rspec' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require 'pathname'
12
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile',
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ require 'rubygems'
16
+ require 'bundler/setup'
17
+
18
+ load Gem.bin_path('rspec-core', 'rspec')
data/lib/wcc/api.rb CHANGED
@@ -1,18 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'wcc'
2
4
  require 'wcc/api/version'
3
5
 
4
- module WCC
5
- module API
6
- PROJECT_ROOT = File.expand_path(File.join(__FILE__, '..', '..', '..'))
7
- end
6
+ module WCC::API
7
+ PROJECT_ROOT = File.expand_path(File.join(__FILE__, '..', '..', '..'))
8
8
  end
9
9
 
10
- if defined?(Rails)
11
- require 'wcc/api/railtie'
12
- end
10
+ require 'wcc/api/railtie' if defined?(Rails)
13
11
 
14
12
  require 'wcc/api/base_query'
15
13
  require 'wcc/api/json'
16
14
  require 'wcc/api/controller_helpers'
15
+ require 'wcc/api/rest_client'
17
16
  require 'wcc/api/view_helpers'
18
-
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WCC::API
2
4
  class BaseQuery
3
- attr_reader :scope, :paging
4
- attr_accessor :limit, :offset
5
+ attr_reader :scope, :paging, :limit, :offset
5
6
  attr_accessor :filter
6
7
 
7
8
  MAX_LIMIT = 50
@@ -15,7 +16,7 @@ module WCC::API
15
16
  end
16
17
 
17
18
  def permitted_keys
18
- %i(limit offset filter)
19
+ %i[limit offset filter]
19
20
  end
20
21
 
21
22
  def default_scope
@@ -27,11 +28,11 @@ module WCC::API
27
28
  @paging = paging
28
29
  set_defaults
29
30
  permitted_keys.each do |key|
30
- self.public_send("#{key}=", params[key]) if params.has_key?(key)
31
+ public_send("#{key}=", params[key]) if params.key?(key)
31
32
  end
32
33
  end
33
34
 
34
- def call(scope=self.scope)
35
+ def call(scope = self.scope)
35
36
  scope = scope.dup
36
37
  scope = paged(scope)
37
38
  scope = ordered(scope)
@@ -39,7 +40,7 @@ module WCC::API
39
40
  scope
40
41
  end
41
42
 
42
- def paged(scope=self.scope)
43
+ def paged(scope = self.scope)
43
44
  if paging
44
45
  scope
45
46
  .limit(limit)
@@ -49,11 +50,11 @@ module WCC::API
49
50
  end
50
51
  end
51
52
 
52
- def ordered(scope=self.scope)
53
+ def ordered(scope = self.scope)
53
54
  scope
54
55
  end
55
56
 
56
- def filtered(scope=self.scope)
57
+ def filtered(scope = self.scope)
57
58
  scope
58
59
  end
59
60
 
@@ -65,7 +66,7 @@ module WCC::API
65
66
 
66
67
  def limit=(new_limit)
67
68
  new_limit = new_limit.to_i
68
- @limit = (new_limit > MAX_LIMIT) ? MAX_LIMIT : new_limit
69
+ @limit = new_limit > MAX_LIMIT ? MAX_LIMIT : new_limit
69
70
  end
70
71
 
71
72
  def offset=(new_offset)
@@ -85,4 +86,3 @@ module WCC::API
85
86
  end
86
87
  end
87
88
  end
88
-
@@ -1,8 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WCC::API
2
4
  module ControllerHelpers
5
+ private
3
6
 
4
- private def set_cache_headers(scope_or_record, options = {})
5
- options = {public: true, must_revalidate: true}.merge!(options)
7
+ def set_cache_headers(scope_or_record, options = {})
8
+ options = { public: true, must_revalidate: true }.merge!(options)
6
9
 
7
10
  if expiry = options.delete(:expiry)
8
11
  expires_in expiry, options.slice(:public, :must_revalidate)
@@ -10,6 +13,5 @@ module WCC::API
10
13
 
11
14
  fresh_when scope_or_record, options.slice(:etag, :public, :last_modified)
12
15
  end
13
-
14
16
  end
15
17
  end