atomsphere 0.1.10 → 0.1.11

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: 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