twilio_ruby_wrapper 0.1.0 → 0.2.0

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
  SHA1:
3
- metadata.gz: 37e969b51edcb6d066fc745863165c72c605fa61
4
- data.tar.gz: 7d0ffb8921b0a9b6be0849f58755e7cd4c254c23
3
+ metadata.gz: 4e0bc866e19e937a0b77a7a986ff6ce8c26b0912
4
+ data.tar.gz: dbf3419849f64de81490dd047f9b2589e6de1d7f
5
5
  SHA512:
6
- metadata.gz: 978637c4db1a95a905030aea7ebd1dc73356e3ff0b99365104870f559f67223485c8718cfe3397ca4bdbb1f991ddead4fccc872a1085aea623d0b80cddc8a94e
7
- data.tar.gz: 119df706822e9c62f379211a31d38b04ad3ae92a015097a7871a84aca3799da312bfb3d6d97070fd9d069df641ffef5cebdd4921613fe12a7851070f802d3966
6
+ metadata.gz: 10ed80d3ec6f160597c2e8cfdeda9e4d2b0dde13c778d42b655d535ae07be9dde0106a106b1e5d255f4225635b3aca53abd26d547843e905be5e37c52d2a4a92
7
+ data.tar.gz: 77867963cd72df0e966c84f0bed2a6cf9ab646e0586863567c99a1de1b3215439de4e3b92a4990175b7a412a73964b41557546b03c4b845839cf4237354a4a25
data/README.md CHANGED
@@ -29,6 +29,9 @@ queues.find_by(friendly_name: "Queue friendly name") # return <Twilio::REST::Que
29
29
  queues.condition(:gt).where(date_updated: "2017-05-31 0:0:0") # [<Twilio::REST::Queue>] array object
30
30
  # The following is an error.
31
31
  # queues.condition(:lt).where(date_updated: "2017-05-31 0:0:0").condition(:gt).where(date_updated: "2017-05-31 23:59:59")
32
+
33
+ calls = TwilioRubyWrapper::Call.new(account_sid: "Twilio ACCOUNT SID", auth_token: "Twilio AUTH TOKEN")
34
+ calls.filter(:"start_time>" => "2017-05-32").condition(:eq).where(from: "PHONE NUMBER")
32
35
  ```
33
36
 
34
37
  ## Development
@@ -0,0 +1,55 @@
1
+ module TwilioRubyWrapper
2
+ class Call
3
+ attr_accessor :page_number, :page_size, :calls
4
+
5
+ def initialize(account_sid:, auth_token:)
6
+ client = Twilio::REST::Client.new(account_sid, auth_token)
7
+ @calls = client.account.calls
8
+ @filter = {}
9
+ @page_number = 0
10
+ @page_size = 50
11
+ end
12
+
13
+ def find_by(*args)
14
+ hash = args.first
15
+
16
+ if !(Hash === hash) || hash.values.any? {|v| v.nil? || Array === v || Hash === v } || hash.size >= 2
17
+ raise
18
+ end
19
+
20
+ condition = self.condition(:eq)
21
+ condition.find_by(*args)
22
+ end
23
+
24
+ def filter(*args)
25
+ hash = args.first
26
+ @filter = hash
27
+ self
28
+ end
29
+
30
+ def condition(value, filter: { page: @page_number, page_size: @page_size })
31
+ if !(Symbol === value)
32
+ raise
33
+ end
34
+
35
+ condition = nil
36
+ case value
37
+ when :eq
38
+ condition = -> (x) { -> (y) { y == x }}
39
+ when :lt
40
+ condition = -> (x) { -> (y) { y < x }}
41
+ when :lteq
42
+ condition = -> (x) { -> (y) { y <= x }}
43
+ when :gt
44
+ condition = -> (x) { -> (y) { y > x }}
45
+ when :gteq
46
+ condition = -> (x) { -> (y) { y >= x }}
47
+ else
48
+ raise
49
+ end
50
+
51
+ filter = @filter unless @filter.empty?
52
+ CallCondition.new(calls: @calls, condition: condition, filter: filter)
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,77 @@
1
+ module TwilioRubyWrapper
2
+ class CallCondition
3
+ attr_accessor :page_number, :page_size, :calls
4
+
5
+ def initialize(calls:, condition:, filter: {})
6
+ @calls = calls
7
+ @condition = condition
8
+ @filter = filter
9
+ @page_number = 0
10
+ @page_size = 50
11
+ end
12
+
13
+ def where(*args)
14
+ hash = args.first
15
+
16
+ if !(Hash === hash) || hash.values.any? {|v| v.nil? || Array === v || Hash === v } || hash.size >= 2
17
+ raise
18
+ end
19
+
20
+ key = hash.keys.first
21
+ value = build_value(hash[key], key)
22
+
23
+ calls = []
24
+ params = {page: @page_number, page_size: @page_size}
25
+ params.merge!(@filter) unless @filter.empty?
26
+ queue_set = @calls.list(params)
27
+ until queue_set.empty? do
28
+ t = queue_set.select {|queue| @condition[value][build_value(queue.send(key), key)] }
29
+ calls.concat(t) unless t.empty?
30
+ queue_set = queue_set.next_page
31
+ end
32
+
33
+ calls
34
+ end
35
+
36
+ def find_by(*args)
37
+ hash = args.first
38
+
39
+ if !(Hash === hash) || hash.values.any? {|v| v.nil? || Array === v || Hash === v } || hash.size >= 2
40
+ raise
41
+ end
42
+
43
+ key = hash.keys.first
44
+ value = build_value(hash[key], key)
45
+
46
+ params = {page: @page_number, page_size: @page_size}
47
+ params.merge!(@filter) unless @filter.empty?
48
+ queue_set = @calls.list(params)
49
+ t = nil
50
+ until queue_set.empty? do
51
+ t = queue_set.select {|queue| @condition[value][build_value(queue.send(key), key)] }.first
52
+ break unless t.nil?
53
+ queue_set = queue_set.next_page
54
+ end
55
+
56
+ t
57
+ end
58
+
59
+ private
60
+ def build_value(target, key)
61
+ value = nil
62
+ case key
63
+ when :sid, :parent_call_sid, :account_sid, :to, :from, :phone_number_sid, :status, :price_unit, :direction, :answered_by, :forwarded_from, :to_formatted, :from_formatted, :caller_name
64
+ value = target
65
+ when :duration, :price
66
+ value = target.to_i
67
+ when :date_created, :date_updated, :start_time, :end_time
68
+ value = DateTime.parse(target)
69
+ else
70
+ raise
71
+ end
72
+
73
+ value
74
+ end
75
+
76
+ end
77
+ end
@@ -41,7 +41,7 @@ module TwilioRubyWrapper
41
41
  raise
42
42
  end
43
43
 
44
- Condition.new(condition, @queues)
44
+ QueueCondition.new(queues: @queues, condition: condition)
45
45
  end
46
46
  end
47
47
  end
@@ -1,8 +1,8 @@
1
1
  module TwilioRubyWrapper
2
- class Condition
2
+ class QueueCondition
3
3
  attr_accessor :page_number, :page_size, :queues
4
4
 
5
- def initialize(condition, queues)
5
+ def initialize(queues: , condition: )
6
6
  @condition = condition
7
7
  @page_number = 0
8
8
  @page_size = 50
@@ -1,3 +1,3 @@
1
1
  module TwilioRubyWrapper
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -2,6 +2,8 @@ require "twilio_ruby_wrapper/version"
2
2
  require "twilio-ruby"
3
3
 
4
4
  module TwilioRubyWrapper
5
+ require 'twilio_ruby_wrapper/call'
6
+ require 'twilio_ruby_wrapper/call_condition'
5
7
  require 'twilio_ruby_wrapper/queue'
6
- require 'twilio_ruby_wrapper/condition'
8
+ require 'twilio_ruby_wrapper/queue_condition'
7
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twilio_ruby_wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - FUNABARA Masao
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-03 00:00:00.000000000 Z
11
+ date: 2017-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: twilio-ruby
@@ -83,8 +83,10 @@ files:
83
83
  - bin/console
84
84
  - bin/setup
85
85
  - lib/twilio_ruby_wrapper.rb
86
- - lib/twilio_ruby_wrapper/condition.rb
86
+ - lib/twilio_ruby_wrapper/call.rb
87
+ - lib/twilio_ruby_wrapper/call_condition.rb
87
88
  - lib/twilio_ruby_wrapper/queue.rb
89
+ - lib/twilio_ruby_wrapper/queue_condition.rb
88
90
  - lib/twilio_ruby_wrapper/version.rb
89
91
  - twilio_ruby_wrapper.gemspec
90
92
  homepage: https://github.com/masoo/twilio_ruby_wrapper