textmagic-ruby 2.0.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.
Files changed (70) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/Gemfile +9 -0
  6. data/LICENSE.txt +21 -0
  7. data/Makefile +8 -0
  8. data/README.md +41 -0
  9. data/Rakefile +10 -0
  10. data/conf/cacert.pem +3988 -0
  11. data/examples/bulk_examples.rb +24 -0
  12. data/examples/chat_examples.rb +30 -0
  13. data/examples/contact_examples.rb +116 -0
  14. data/examples/custom_field_examples.rb +78 -0
  15. data/examples/invoice_examples.rb +26 -0
  16. data/examples/list_examples.rb +98 -0
  17. data/examples/message_examples.rb +75 -0
  18. data/examples/number_examples.rb +72 -0
  19. data/examples/reply_examples.rb +32 -0
  20. data/examples/schedule_examples.rb +44 -0
  21. data/examples/senderid_examples.rb +52 -0
  22. data/examples/session_examples.rb +51 -0
  23. data/examples/subaccount_examples.rb +53 -0
  24. data/examples/template_examples.rb +61 -0
  25. data/examples/unsubscriber_examples.rb +56 -0
  26. data/examples/user_examples.rb +105 -0
  27. data/lib/textmagic-ruby.rb +31 -0
  28. data/lib/textmagic-ruby/rest/bulks.rb +89 -0
  29. data/lib/textmagic-ruby/rest/chats.rb +147 -0
  30. data/lib/textmagic-ruby/rest/client.rb +128 -0
  31. data/lib/textmagic-ruby/rest/contacts.rb +174 -0
  32. data/lib/textmagic-ruby/rest/custom_fields.rb +120 -0
  33. data/lib/textmagic-ruby/rest/errors.rb +14 -0
  34. data/lib/textmagic-ruby/rest/instance_resource.rb +33 -0
  35. data/lib/textmagic-ruby/rest/invoices.rb +73 -0
  36. data/lib/textmagic-ruby/rest/list_resource.rb +64 -0
  37. data/lib/textmagic-ruby/rest/lists.rb +166 -0
  38. data/lib/textmagic-ruby/rest/messages.rb +172 -0
  39. data/lib/textmagic-ruby/rest/numbers.rb +164 -0
  40. data/lib/textmagic-ruby/rest/paginate_resource.rb +20 -0
  41. data/lib/textmagic-ruby/rest/replies.rb +85 -0
  42. data/lib/textmagic-ruby/rest/scheduleds.rb +91 -0
  43. data/lib/textmagic-ruby/rest/senderids.rb +114 -0
  44. data/lib/textmagic-ruby/rest/sessions.rb +109 -0
  45. data/lib/textmagic-ruby/rest/subaccounts.rb +135 -0
  46. data/lib/textmagic-ruby/rest/templates.rb +107 -0
  47. data/lib/textmagic-ruby/rest/unsubscribers.rb +85 -0
  48. data/lib/textmagic-ruby/rest/users.rb +202 -0
  49. data/lib/textmagic-ruby/rest/utils.rb +48 -0
  50. data/lib/textmagic-ruby/rest/version.rb +5 -0
  51. data/spec/rest/client_spec.rb +57 -0
  52. data/spec/rest/contact_spec.rb +36 -0
  53. data/spec/rest/custom_fields_spec.rb +36 -0
  54. data/spec/rest/instance_resource_spec.rb +17 -0
  55. data/spec/rest/invoice_spec.rb +56 -0
  56. data/spec/rest/lists_spec.rb +35 -0
  57. data/spec/rest/message_spec.rb +40 -0
  58. data/spec/rest/numbers_spec.rb +66 -0
  59. data/spec/rest/reply_spec.rb +43 -0
  60. data/spec/rest/scheduled_spec.rb +43 -0
  61. data/spec/rest/senderid_spec.rb +39 -0
  62. data/spec/rest/session_spec.rb +43 -0
  63. data/spec/rest/subaccount_spec.rb +39 -0
  64. data/spec/rest/template_spec.rb +36 -0
  65. data/spec/rest/unsubscriber_spec.rb +40 -0
  66. data/spec/rest/user_spec.rb +92 -0
  67. data/spec/rest/utils_spec.rb +57 -0
  68. data/spec/spec_helper.rb +15 -0
  69. data/textmagic-ruby.gemspec +30 -0
  70. metadata +165 -0
@@ -0,0 +1,72 @@
1
+ require 'rubygems'
2
+ require 'textmagic-ruby'
3
+
4
+ puts ' *** Running number examples *** '
5
+
6
+ username = 'xxx'
7
+ token = 'xxx'
8
+
9
+ client = Textmagic::REST::Client.new username, token
10
+
11
+ sleep 0.5
12
+ available = client.numbers.available({:country => 'US'})
13
+
14
+ puts available.respond_to? :numbers
15
+ puts available.numbers.kind_of? Array
16
+ puts !available.numbers.empty?
17
+ puts available.numbers.length > 0
18
+ puts available.respond_to? :price
19
+ puts available.price > 0
20
+
21
+ sleep 0.5
22
+ user = client.users.get
23
+
24
+ puts user.instance_of? Textmagic::REST::User
25
+ puts user.respond_to? :first_name
26
+ puts user.respond_to? :last_name
27
+ puts user.respond_to? :company
28
+ puts user.respond_to? :timezone
29
+ puts user.timezone.kind_of? Hash
30
+ puts user.respond_to? :id
31
+ puts user.respond_to? :username
32
+ puts user.respond_to? :status
33
+ puts user.respond_to? :balance
34
+ puts user.respond_to? :currency
35
+ puts user.currency.kind_of? Hash
36
+ puts user.respond_to? :subaccount_type
37
+
38
+ # sleep 0.5
39
+ # number = client.numbers.buy({:userId => user.id, :country => 'US', :phone => available.numbers.first})
40
+ #
41
+ # puts number.instance_of? Textmagic::REST::Number
42
+ # puts number.respond_to? :id
43
+ # puts number.respond_to? :href
44
+
45
+ # sleep 0.5
46
+ # number = client.numbers.get number.id
47
+ #
48
+ # puts number.respond_to? :id
49
+ # puts number.respond_to? :user
50
+ # puts number.user.kind_of? Hash
51
+ # puts number.respond_to? :purchased_at
52
+ # puts number.respond_to? :expire_at
53
+ # puts number.respond_to? :phone
54
+ # puts number.respond_to? :country
55
+ # puts number.country.kind_of? Hash
56
+ # puts number.respond_to? :status
57
+
58
+ sleep 0.5
59
+ numbers = client.numbers.list()
60
+
61
+ puts numbers.respond_to? :page
62
+ puts numbers.respond_to? :limit
63
+ puts numbers.respond_to? :page_count
64
+ puts numbers.resources.length > 0
65
+ puts numbers.resources.first.instance_of? Textmagic::REST::Number
66
+
67
+ # sleep 0.5
68
+ # r = client.numbers.delete(number.id)
69
+ #
70
+ # puts r
71
+
72
+ puts ' *** Finish number examples *** '
@@ -0,0 +1,32 @@
1
+ require 'rubygems'
2
+ require 'textmagic-ruby'
3
+
4
+ puts ' *** Running reply examples *** '
5
+
6
+ username = 'xxx'
7
+ token = 'xxx'
8
+
9
+ client = Textmagic::REST::Client.new username, token
10
+
11
+ sleep 0.5
12
+ inbox = client.replies.list
13
+
14
+ puts inbox.instance_of? Textmagic::REST::PaginateResource
15
+ puts inbox.resources.length > 0
16
+ puts inbox.resources.first.instance_of? Textmagic::REST::Reply
17
+
18
+ sleep 0.5
19
+ reply = client.replies.get inbox.resources.first.id
20
+
21
+ puts reply.respond_to? :id
22
+ puts reply.respond_to? :sender
23
+ puts reply.respond_to? :message_time
24
+ puts reply.respond_to? :text
25
+ puts reply.respond_to? :receiver
26
+
27
+ sleep 0.5
28
+ r = client.replies.delete reply.id
29
+
30
+ puts r
31
+
32
+ puts ' *** Finish reply examples *** '
@@ -0,0 +1,44 @@
1
+ require 'rubygems'
2
+ require 'textmagic-ruby'
3
+ require 'time'
4
+
5
+ puts ' *** Running schedule examples *** '
6
+
7
+ username = 'xxx'
8
+ token = 'xxx'
9
+
10
+ client = Textmagic::REST::Client.new username, token
11
+
12
+ sd_text = "I'm a scheduled message"
13
+ sd_phones = '999999999'
14
+ sleep 0.5
15
+ scheduled = client.messages.create({:text => sd_text, :phones => sd_phones, :sendingTime => Time.now.to_i + 10000})
16
+
17
+ puts !scheduled.id.nil?
18
+ puts scheduled.message_id.nil?
19
+ puts scheduled.session_id.nil?
20
+ puts scheduled.bulk_id.nil?
21
+ puts !scheduled.schedule_id.nil?
22
+ puts !scheduled.href.nil?
23
+
24
+ sleep 0.5
25
+ scheduled = client.schedules.get(scheduled.id)
26
+
27
+ puts !scheduled.id.nil?
28
+ puts !scheduled.next_send.nil?
29
+ puts !scheduled.session.empty?
30
+
31
+ sleep 0.5
32
+ scheduleds = client.schedules.list()
33
+
34
+ puts !scheduleds.page.nil?
35
+ puts !scheduleds.limit.nil?
36
+ puts !scheduleds.page_count.nil?
37
+ puts scheduleds.resources.length > 0
38
+ puts scheduleds.resources.first.instance_of? Textmagic::REST::Schedule
39
+
40
+ sleep 0.5
41
+ r = client.schedules.delete(scheduled.id)
42
+ puts r
43
+
44
+ puts ' *** Finish schedule examples *** '
@@ -0,0 +1,52 @@
1
+ require 'rubygems'
2
+ require 'textmagic-ruby'
3
+
4
+ puts ' *** Running senderid examples *** '
5
+
6
+ username = 'xxx'
7
+ token = 'xxx'
8
+
9
+ client = Textmagic::REST::Client.new username, token
10
+
11
+ sid = 'rubysid'
12
+ exp = 'needs for api testing'
13
+ sleep 0.5
14
+ senderid = client.senderids.create({:senderId => sid, :explanation => exp})
15
+
16
+ puts senderid.instance_of? Textmagic::REST::Senderid
17
+ puts senderid.respond_to? :id
18
+ puts senderid.respond_to? :href
19
+
20
+ sleep 0.5
21
+ senderid.refresh
22
+
23
+ puts senderid.respond_to? :id
24
+ puts senderid.respond_to? :sender_id
25
+ puts senderid.respond_to? :user
26
+ puts senderid.user.kind_of? Hash
27
+ puts senderid.respond_to? :status
28
+
29
+ sleep 0.5
30
+ senderids = client.senderids.list()
31
+
32
+ puts senderids.respond_to? :page
33
+ puts senderids.respond_to? :limit
34
+ puts senderids.respond_to? :page_count
35
+ puts senderids.resources.length > 0
36
+ puts senderids.resources.first.instance_of? Textmagic::REST::Senderid
37
+
38
+ sleep 0.5
39
+ senderid = client.senderids.get senderid.id
40
+
41
+ puts senderid.respond_to? :id
42
+ puts senderid.respond_to? :sender_id
43
+ puts senderid.respond_to? :user
44
+ puts senderid.user.kind_of? Hash
45
+ puts senderid.respond_to? :status
46
+
47
+ sleep 0.5
48
+ r = client.senderids.delete senderid.id
49
+
50
+ puts r
51
+
52
+ puts ' *** Finish senderid examples *** '
@@ -0,0 +1,51 @@
1
+ require 'rubygems'
2
+ require 'textmagic-ruby'
3
+
4
+ puts ' *** Running session examples *** '
5
+
6
+ username = 'xxx'
7
+ token = 'xxx'
8
+
9
+ client = Textmagic::REST::Client.new username, token
10
+
11
+ session_text = 'Ruby Session Text'
12
+ session_phones = '999999999, 9999191919'
13
+
14
+ sleep 0.5
15
+ session = client.messages.create({:text => session_text, :phones => session_phones})
16
+
17
+ sleep 0.5
18
+ sessions = client.sessions.list()
19
+
20
+ puts sessions.respond_to? :page
21
+ puts sessions.respond_to? :limit
22
+ puts sessions.respond_to? :page_count
23
+ puts sessions.resources.length > 0
24
+ puts sessions.resources.first.instance_of? Textmagic::REST::Session
25
+
26
+ sleep 0.5
27
+ session = client.sessions.get(session.id)
28
+
29
+ puts session.id == sessions.resources.first.id
30
+ puts session.respond_to? :start_time
31
+ puts session.respond_to? :text
32
+ puts session.respond_to? :source
33
+ puts session.respond_to? :reference_id
34
+ puts session.respond_to? :price
35
+ puts session.respond_to? :numbers_count
36
+
37
+ sleep 0.5
38
+ session_messages = client.sessions.messages(session.id)
39
+
40
+ puts session_messages.respond_to? :page
41
+ puts session_messages.respond_to? :limit
42
+ puts session_messages.respond_to? :page_count
43
+ puts session_messages.resources.length == 2
44
+ puts session_messages.resources.first.instance_of? Textmagic::REST::Message
45
+
46
+ sleep 0.5
47
+ r = client.sessions.delete(session.id)
48
+
49
+ puts r
50
+
51
+ puts ' *** Finish session examples *** '
@@ -0,0 +1,53 @@
1
+ require 'rubygems'
2
+ require 'textmagic-ruby'
3
+
4
+ puts ' *** Running subaccount examples *** '
5
+
6
+ username = 'xxx'
7
+ token = 'xxx'
8
+
9
+ client = Textmagic::REST::Client.new username, token
10
+ sleep 0.5
11
+ subs = client.subaccounts.list
12
+
13
+ puts subs.instance_of? Textmagic::REST::PaginateResource
14
+ puts subs.resources.first.instance_of? Textmagic::REST::Subaccount
15
+ puts subs.resources.first.respond_to? :id
16
+ puts subs.resources.first.respond_to? :username
17
+ puts subs.resources.first.respond_to? :first_name
18
+ puts subs.resources.first.respond_to? :last_name
19
+ puts subs.resources.first.respond_to? :status
20
+ puts subs.resources.first.respond_to? :balance
21
+ puts subs.resources.first.respond_to? :company
22
+ puts subs.resources.first.respond_to? :currency
23
+ puts subs.resources.first.respond_to? :timezone
24
+ puts subs.resources.first.respond_to? :subaccount_type
25
+
26
+ sleep 0.5
27
+ sub = client.subaccounts.get subs.resources.first.id
28
+
29
+ puts subs.resources.first.instance_of? Textmagic::REST::Subaccount
30
+ puts sub.respond_to? :id
31
+ puts sub.respond_to? :username
32
+ puts sub.respond_to? :first_name
33
+ puts sub.respond_to? :last_name
34
+ puts sub.respond_to? :status
35
+ puts sub.respond_to? :balance
36
+ puts sub.respond_to? :company
37
+ puts sub.respond_to? :currency
38
+ puts sub.respond_to? :timezone
39
+ puts sub.respond_to? :subaccount_type
40
+
41
+
42
+ sleep 0.5
43
+ random_email = (0...10).map { ('a'..'z').to_a[rand(26)] }.join << '@mailinator.com'
44
+ r = client.subaccounts.send_invite({:email => random_email, :role => 'A'})
45
+
46
+ puts r
47
+
48
+ sleep 0.5
49
+ r = client.subaccounts.delete sub.id
50
+
51
+ puts r
52
+
53
+ puts ' *** Finish subaccount examples *** '
@@ -0,0 +1,61 @@
1
+ require 'rubygems'
2
+ require 'textmagic-ruby'
3
+
4
+ puts ' *** Running template examples *** '
5
+
6
+ username = 'xxx'
7
+ token = 'xxx'
8
+
9
+ client = Textmagic::REST::Client.new username, token
10
+
11
+ temp_name = 'Ruby Template'
12
+ temp_content = 'Dear {First Name} {Last Name}'
13
+ sleep 0.5
14
+ template = client.templates.create({:name => temp_name, :content => temp_content})
15
+
16
+ puts template.respond_to? :id
17
+ puts template.respond_to? :href
18
+
19
+ sleep 0.5
20
+ template.refresh
21
+
22
+ puts template.name == temp_name
23
+ puts template.content == temp_content
24
+
25
+ sleep 0.5
26
+ template = client.templates.get(template.id)
27
+
28
+ puts template.name == temp_name
29
+ puts template.content == temp_content
30
+
31
+ sleep 0.5
32
+ templates = client.templates.list()
33
+
34
+ puts templates.respond_to? :page
35
+ puts templates.respond_to? :limit
36
+ puts templates.respond_to? :page_count
37
+ puts templates.resources.length > 0
38
+ puts templates.resources.first.instance_of? Textmagic::REST::Template
39
+
40
+ sleep 0.5
41
+
42
+ search_templates = client.templates.list({:search => true, :name => template.name})
43
+
44
+ puts search_templates.instance_of? Textmagic::REST::PaginateResource
45
+ puts search_templates.resources.length == 1
46
+ puts search_templates.resources.first.id == template.id
47
+
48
+ sleep 0.5
49
+ template = client.templates.update(template.id, {:name => 'Updated Ruby Template', :content => temp_content})
50
+ sleep 0.5
51
+ template.refresh
52
+
53
+ puts template.name == 'Updated Ruby Template'
54
+
55
+ sleep 0.5
56
+ r = client.templates.delete(template.id)
57
+
58
+ puts r
59
+ sleep 0.5
60
+
61
+ puts ' *** Finish template examples *** '
@@ -0,0 +1,56 @@
1
+ require 'rubygems'
2
+ require 'textmagic-ruby'
3
+
4
+ puts ' *** Running unsubscriber examples *** '
5
+
6
+ username = 'xxx'
7
+ token = 'xxx'
8
+
9
+ client = Textmagic::REST::Client.new username, token
10
+
11
+ sleep 0.5
12
+ unsubscribers = client.unsubscribers.list
13
+
14
+ puts unsubscribers.page > 0
15
+ puts unsubscribers.limit == 10
16
+ puts unsubscribers.page_count > 0
17
+ puts unsubscribers.resources.length > 0
18
+ puts unsubscribers.resources.first.instance_of?(Textmagic::REST::Unsubscriber)
19
+
20
+ sleep 0.5
21
+ unsubscribers = client.unsubscribers.list(:search => true)
22
+
23
+ puts unsubscribers.page > 0
24
+ puts unsubscribers.limit == 10
25
+ puts unsubscribers.page_count > 0
26
+ puts unsubscribers.resources.length > 0
27
+ puts unsubscribers.resources.first.instance_of?(Textmagic::REST::Unsubscriber)
28
+
29
+ sleep 0.5
30
+ u_phone = '999000101010'
31
+ u_new = client.unsubscribers.create(:phone => u_phone)
32
+
33
+ puts !u_new.id.nil?
34
+ puts !u_new.href.nil?
35
+
36
+ sleep 0.5
37
+ unsubscriber = client.unsubscribers.get(u_new.id)
38
+
39
+ puts unsubscriber.id == u_new.id
40
+ puts unsubscriber.phone == u_phone
41
+
42
+ sleep 0.5
43
+ begin
44
+ client.unsubscribers.update(1, {})
45
+ rescue RuntimeError => err
46
+ puts err.message == '`update` method is not available for this type of resource.'
47
+ end
48
+
49
+ sleep 0.5
50
+ begin
51
+ client.unsubscribers.delete(1)
52
+ rescue RuntimeError => err
53
+ puts err.message == '`delete` method is not available for this type of resource.'
54
+ end
55
+
56
+ puts ' *** Finish unsubscriber examples *** '
@@ -0,0 +1,105 @@
1
+ require 'rubygems'
2
+ require 'textmagic-ruby'
3
+
4
+ puts ' *** Running user examples *** '
5
+
6
+ username = 'xxx'
7
+ token = 'xxx'
8
+
9
+ client = Textmagic::REST::Client.new username, token
10
+ sleep 0.5
11
+ sources = client.users.sources
12
+
13
+ puts sources.instance_of? Textmagic::REST::Source
14
+ puts sources.respond_to? :dedicated
15
+ puts sources.dedicated.kind_of? Array
16
+ puts sources.respond_to? :user
17
+ puts sources.user.kind_of? Array
18
+ puts sources.respond_to? :shared
19
+ puts sources.shared.kind_of? Array
20
+ puts sources.respond_to? :sender_ids
21
+ puts sources.sender_ids.kind_of? Array
22
+
23
+ sleep 0.5
24
+ m_stat = client.users.messaging_stat
25
+
26
+ puts m_stat.kind_of? Array
27
+ puts !m_stat.empty?
28
+ puts m_stat.first.key? 'replyRate'
29
+ puts m_stat.first.key? 'date'
30
+ puts m_stat.first.key? 'deliveryRate'
31
+ puts m_stat.first.key? 'costs'
32
+ puts m_stat.first.key? 'messagesReceived'
33
+ puts m_stat.first.key? 'messagesSentDelivered'
34
+ puts m_stat.first.key? 'messagesSentAccepted'
35
+ puts m_stat.first.key? 'messagesSentBuffered'
36
+ puts m_stat.first.key? 'messagesSentFailed'
37
+ puts m_stat.first.key? 'messagesSentRejected'
38
+ puts m_stat.first.key? 'messagesSentParts'
39
+
40
+ sleep 0.5
41
+ s_stat = client.users.spending_stat()
42
+
43
+ puts s_stat.instance_of? Textmagic::REST::PaginateResource
44
+ puts s_stat.resources.first.instance_of? Textmagic::REST::SpendingStat
45
+ puts s_stat.resources.first.respond_to? :id
46
+ puts s_stat.resources.first.respond_to? :user_id
47
+ puts s_stat.resources.first.respond_to? :date
48
+ puts s_stat.resources.first.respond_to? :balance
49
+ puts s_stat.resources.first.respond_to? :delta
50
+ puts s_stat.resources.first.respond_to? :type
51
+ puts s_stat.resources.first.respond_to? :value
52
+ puts s_stat.resources.first.respond_to? :comment
53
+
54
+ sleep 0.5
55
+ user = client.users.get
56
+
57
+ puts user.instance_of? Textmagic::REST::User
58
+ puts user.respond_to? :id
59
+ puts user.respond_to? :username
60
+ puts user.respond_to? :first_name
61
+ puts user.respond_to? :last_name
62
+ puts user.respond_to? :status
63
+ puts user.respond_to? :balance
64
+ puts user.respond_to? :company
65
+ puts user.respond_to? :currency
66
+ puts user.respond_to? :timezone
67
+ puts user.respond_to? :subaccount_type
68
+
69
+ params = {
70
+ :first_name => 'John',
71
+ :last_name => 'Doe',
72
+ :company => user.company
73
+ }
74
+ sleep 0.5
75
+ user_updated = client.users.update params
76
+
77
+ puts !(user_updated.respond_to? :first_name)
78
+ puts !(user_updated.respond_to? :last_name)
79
+ puts !(user_updated.respond_to? :company)
80
+
81
+ sleep 0.5
82
+ user_updated.refresh
83
+
84
+ puts user_updated.first_name == 'John'
85
+ puts user_updated.last_name == 'Doe'
86
+ puts user_updated.company == user.company
87
+
88
+ params = {
89
+ :firstName => user.first_name,
90
+ :lastName => user.last_name,
91
+ :company => user.company
92
+ }
93
+ sleep 0.5
94
+ user_updated = client.users.update params
95
+ sleep 0.5
96
+ user_updated.refresh
97
+
98
+ puts user_updated.first_name == user.first_name
99
+ puts user_updated.last_name == user.last_name
100
+ puts user_updated.company == user.company
101
+ sleep 0.5
102
+
103
+ (0..4).map {puts client.ping; sleep 0.5}
104
+
105
+ puts ' *** Finish user examples *** '