atomsphere 0.1.10 → 0.1.11

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 23cc0ef0dd56bb090f6bacf78d916d24ca0f394758d8e8ce13108a7b2eea64c6
4
- data.tar.gz: e5a9a93b5ae8483ac6d84ffb06253d11190204d945b0cd14880ec5941b016837
3
+ metadata.gz: c31438d4c2d2f7684ed44f1cfac54cd5077b186b140c46a9f99fa39a52f1ac66
4
+ data.tar.gz: 79c7d6193080ea557c9ba8498c5b167f5837a00346aa68641d4bbaa9104adfb2
5
5
  SHA512:
6
- metadata.gz: ef9ac935360e5106205ac3ec02b04c55d6fc113c578257ac18abd0817309e811409205406c2728bde48e9e48df3bbc412ce0fa83d782686e37d24542ab3e0614
7
- data.tar.gz: 2321d78c1730c279adf5e5a1975feb91acd5479c05b1bac281077a7d858169eb464e407e5b06997cbf5112c10eb79f9527e8c9c2bb7084c6f40292b2f161b927
6
+ metadata.gz: 46918892bdb5c7d815657b71ff3c499bbf264dae88ea7b7c2bb8ea95cf4aded55df373d5e6fb40c67c76594bf4039576540b07393894a6644c43bfb02f032b39
7
+ data.tar.gz: 1f997e4482a3af6c93880f2328151f2702b105e637a15571561ccec218b35a9a983bab678ccebeaa70093ad02e598cc24800700b0e6dde27b3cb82851359e6b8
data/README.md CHANGED
@@ -44,29 +44,21 @@ Alternatively, environment variables may be used:
44
44
 
45
45
  ### Querying
46
46
 
47
- Generate a query for all _"Processes"_ that start with _"Production"_ and
48
- contain _"NetSuite"_ or _"Salesforce"_:
47
+ Using the query builder:
49
48
 
50
49
  ```ruby
51
- query = Atomsphere.query('Process') do
52
- group :and do
53
- name.like 'Production%'
54
- group :or do
55
- name.like '%NetSuite%'
56
- name.like '%Salesforce%'
50
+ query = Atomsphere.query(:atom) do
51
+ group :or do
52
+ date_installed.less_than '2018-12-01T00:00:00Z'
53
+ group :and do
54
+ status.not_equals :online
55
+ type.not_equals :cloud
57
56
  end
58
57
  end
59
58
  end
60
59
  ```
61
60
 
62
- Generate a query for all online Atoms:
63
-
64
- ```ruby
65
- query = Atomsphere.query('Atom') do
66
- status.equals 'ONLINE'
67
- type.equals 'CLOUD'
68
- end
69
- ```
61
+ See more examples at https://www.rubydoc.info/gems/atomsphere/Atomsphere.query
70
62
 
71
63
  Inspect the query filter:
72
64
 
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'atomsphere'
3
- s.version = '0.1.10'
3
+ s.version = '0.1.11'
4
4
  s.licenses = ['MIT']
5
5
  s.summary = "Unofficial Ruby client for the Dell Boomi Atomsphere API"
6
6
  s.authors = ["Warren Guy"]
@@ -1,6 +1,6 @@
1
1
  # @author Warren Guy
2
2
  module Atomsphere
3
- VERSION = '0.1.10'
3
+ VERSION = '0.1.11'
4
4
  ROOT = "#{File.expand_path(__dir__)}/atomsphere"
5
5
 
6
6
  %w(configuration query api action).each{ |m| require "#{ROOT}/#{m}" }
@@ -1,3 +1,6 @@
1
+ require 'facets/string/camelcase'
2
+ require 'facets/string/snakecase'
3
+
1
4
  module Atomsphere
2
5
 
3
6
  # @attr [String] object_type name of the object to query
@@ -17,6 +20,8 @@ module Atomsphere
17
20
  case params
18
21
  when String
19
22
  params = {object_type: params}
23
+ when Symbol
24
+ params = {object_type: params.to_s.upper_camelcase}
20
25
  end
21
26
 
22
27
  params = {
@@ -1,5 +1,9 @@
1
1
  module Atomsphere
2
2
  class Query
3
+
4
+ # DSL for onstructing an {Atomsphere::Query}
5
+ # @see Atomsphere#query
6
+ # @attr_reader [Atomsphere::Query] query output query object
3
7
  class Builder
4
8
  attr_reader :query
5
9
 
@@ -7,6 +11,9 @@ module Atomsphere
7
11
  @query = object_type.nil? ? Query.new : Query.new(object_type)
8
12
  end
9
13
 
14
+ # Define a {GroupingExpression} at the top level of the query. If called
15
+ # more than once, subsequent calls create a grouping expression within
16
+ # the first created {GroupingExpression}.
10
17
  def group operator, &block
11
18
  new_group = GroupingExpression.new(operator)
12
19
  Group.new(new_group).instance_eval(&block)
@@ -18,6 +25,9 @@ module Atomsphere
18
25
  end
19
26
  end
20
27
 
28
+ # Allows for defining of {SimpleExpression}s at the top level of the
29
+ # query. Creates a top level {GroupingExpression} if none yet exists
30
+ # to contain it.
21
31
  def method_missing m, *args, &block
22
32
  @query.filter = GroupingExpression.new(:and) unless @query.filter
23
33
  Group.new(@query.filter).instance_eval do
@@ -27,6 +37,30 @@ module Atomsphere
27
37
  end
28
38
  end
29
39
 
40
+ # Invoke the DSL for constructing an {Atomsphere::Query}
41
+ #
42
+ # @example without an expression, returns all possible results
43
+ # Atomsphere.query(:process)
44
+ #
45
+ # @example a simple query expression for online Atoms
46
+ # Atomsphere.query(:atom) { status.equals :online }
47
+ #
48
+ # @example a query expression for online cloud Atoms (implied `and` group)
49
+ # Atomsphere.query(:atom) do
50
+ # status.equals :online
51
+ # type.equals :cloud
52
+ # end
53
+ #
54
+ # @example a more complex example with nested group expressions
55
+ # Atomsphere.query(:atom) do
56
+ # group :or do
57
+ # date_installed.less_than '2018-12-01T00:00:00Z'
58
+ # group :and do
59
+ # status.not_equals :online
60
+ # type.not_equals :cloud
61
+ # end
62
+ # end
63
+ # end
30
64
  def self.query(object_type=nil, &block)
31
65
  q = Query::Builder.new(object_type)
32
66
  q.instance_eval(&block) if block_given?
@@ -34,10 +34,24 @@ module Atomsphere
34
34
  }.merge(params)
35
35
 
36
36
  %w(operator property argument).each do |v|
37
- instance_variable_set :"@#{v}", params[v.to_sym]
37
+ send :"#{v}=", params[v.to_sym]
38
38
  end
39
39
  end
40
40
 
41
+ def property= arg
42
+ instance_variable_set :@property,
43
+ case arg
44
+ when String
45
+ arg
46
+ when Symbol
47
+ arg.to_s.lower_camelcase
48
+ end
49
+ end
50
+
51
+ def argument= arg
52
+ instance_variable_set :@argument, arg.map(&:to_s)
53
+ end
54
+
41
55
  # run all `validate_*!` private methods to ensure validity of expression parameters
42
56
  # @return [true, false]
43
57
  def validate!
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: atomsphere
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Warren Guy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-18 00:00:00.000000000 Z
11
+ date: 2019-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rotp