gupshup 0.1.4 → 0.1.5

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 (3) hide show
  1. data/README.rdoc +10 -8
  2. data/lib/gupshup.rb +53 -35
  3. metadata +21 -9
data/README.rdoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = gupshup
2
2
 
3
- * http://github.com/nileshtrivedi/smsgupshup
3
+ * http://github.com/nileshtrivedi/gupshup
4
4
 
5
5
  == DESCRIPTION:
6
6
 
@@ -10,10 +10,12 @@ masks, keywords, text/flash/vcard/bulk messages, advertising and keyword
10
10
  campaigns and so on.
11
11
 
12
12
  Documentation of HTTP APIs is available here:
13
- http://enterprise.smsgupshup.com/doc/GatewayAPIDoc.doc
13
+ http://enterprise.smsgupshup.com/doc/GatewayAPIDoc.pdf
14
14
 
15
15
  == FEATURES:
16
16
 
17
+ * V 0.1.5 Added group_post method and a generic call_api method. All methods
18
+ now expect a hash of API params instead if individual arguments
17
19
  * V 0.1.2 Bulk file upload implemented. Only CSV format supported for now.
18
20
  * V 0.1.0 send_vcard and send_unicode_message implemented. Error checking.
19
21
  * V 0.0.5 send_text_message and send_flash_message are implemented
@@ -23,20 +25,20 @@ http://enterprise.smsgupshup.com/doc/GatewayAPIDoc.doc
23
25
 
24
26
  # "target_phone_number" should be a 12 digit Indian mobile number starting with "919" (either integer or string)
25
27
 
26
- gup = Gupshup::Enterprise.new('your_gupshup_login','password')
28
+ gup = Gupshup::Enterprise.new(:userid => 'your_gupshup_login', :password => 'your_password')
27
29
 
28
30
  #send a normal text message
29
- gup.send_text_message('sms message text',target_phone_number)
31
+ gup.send_text_message(:msg => 'sms message text', :send_to => '919xxxxxxxxx')
30
32
 
31
33
  #flash messages appear on mobile's screen immediately but may not be saved on some handsets
32
- gup.send_flash_message('sms message text',target_phone_number)
34
+ gup.send_flash_message(:msg => 'sms message text', :send_to => '919xxxxxxxxx')
33
35
 
34
36
  #send a contact in VCARD format
35
37
  vcard = "BEGIN:VCARD\r\nVERSION:1.2\r\nN:ICICI\r\nTEL:18002098888\r\nEND:VCARD"
36
- gup.send_vcard(vcard,target_phone_number)
38
+ gup.send_vcard(:msg => vcard, :send_to => '919xxxxxxxxx')
37
39
 
38
40
  #send a non-english message with a hex-encoded UTF-8 string
39
- gup.send_unicode_message("\xE0\xA4\x97\xE0\xA4\xAA\xE0\xA4\xB6\xE0\xA4\xAA",target_phone_number) # will send "gupshup" in Devnagari script
41
+ gup.send_unicode_message(:msg => "\xE0\xA4\x97\xE0\xA4\xAA\xE0\xA4\xB6\xE0\xA4\xAA", :send_to => '919xxxxxxxxx') # will send "gupshup" in Devnagari script
40
42
 
41
43
  #Upload a CSV file for bulk messages
42
44
  gup.bulk_file_upload(file_path)
@@ -53,7 +55,7 @@ http://enterprise.smsgupshup.com/doc/GatewayAPIDoc.doc
53
55
 
54
56
  (The MIT License)
55
57
 
56
- Copyright (c) 2009 Nilesh Trivedi
58
+ Copyright (c) 2010 Nilesh Trivedi
57
59
 
58
60
  Permission is hereby granted, free of charge, to any person obtaining
59
61
  a copy of this software and associated documentation files (the
data/lib/gupshup.rb CHANGED
@@ -6,42 +6,40 @@ require 'uri'
6
6
  require 'cgi'
7
7
  require 'httpclient'
8
8
 
9
+ class NilClass
10
+ def blank?
11
+ true
12
+ end
13
+ end
14
+
15
+ class String
16
+ def blank?
17
+ self.empty?
18
+ end
19
+ end
20
+
9
21
  module Gupshup
10
- VERSION = '0.1.2'
22
+ VERSION = '0.1.5'
11
23
  class Enterprise
12
- def initialize(login,password, token = nil)
24
+ def initialize(opts)
13
25
  @api_url = 'http://enterprise.smsgupshup.com/GatewayAPI/rest'
14
26
  @api_params = {}
15
- @api_params[:userid] = login
16
- @api_params[:password] = password
17
- @api_params[:v] = '1.1'
18
- @api_params[:auth_scheme] = 'PLAIN'
19
- if token
27
+ @api_params[:userid] = opts[:userid]
28
+ @api_params[:password] = opts[:password]
29
+ @api_params[:v] = opts[:v] || '1.1'
30
+ @api_params[:auth_scheme] = opts[:auth_scheme] || 'PLAIN'
31
+ unless opts[:token].blank?
20
32
  @api_params[:auth_scheme] = 'TOKEN'
21
- @api_params[:token] = token
33
+ @api_params[:token] = opts[:token]
22
34
  @api_params.delete(:password)
23
35
  end
36
+ raise "Invalid credentials" if opts[:userid].blank? || (opts[:password].blank? && opts[:token].blank?)
24
37
  end
25
-
26
- def send_message(msg,number,msg_type = 'TEXT',opts = {})
27
- raise 'Phone Number is too short' if number.to_s.length < 12
28
- raise 'Phone Number is too long' if number.to_s.length > 12
29
- #raise 'Phone Number should start with "91"' if number.to_s.start_with? "91"
30
- raise 'Phone Number should be numerical value' unless number.to_i.to_s == number.to_s
31
- raise 'Message should be less than 725 characters long' if msg.to_s.length > 724
32
- msg_params = {}
33
- msg_params[:method] = 'sendMessage'
34
- msg_params[:msg_type] = msg_type.to_s
35
- msg_params[:msg] = msg.to_s
36
- msg_params[:send_to] = number.to_s
37
- #url = URI.parse(@api_url)
38
- #req = Net::HTTP::Post.new(url.path)
39
- #puts "--- #{msg_params.merge(@api_params).inspect}"
40
- #req.set_form_data(msg_params.merge(@api_params))
41
- #res = Net::HTTP.new(url.host, url.port).start {|http|http.request(req) }
38
+
39
+ def call_api(opts = {})
42
40
  res = Net::HTTP.post_form(
43
41
  URI.parse(@api_url),
44
- msg_params.merge(@api_params).merge(opts)
42
+ @api_params.merge(opts)
45
43
  )
46
44
  resp = res.body
47
45
  puts "GupShup Response: #{resp}"
@@ -49,7 +47,7 @@ module Gupshup
49
47
  case res
50
48
  when Net::HTTPSuccess, Net::HTTPRedirection
51
49
  if resp.nil? || resp.include?("success") == false
52
- raise "SMS Sending failed: #{resp}"
50
+ raise "API call '#{opts[:method]}' failed: #{resp}"
53
51
  end
54
52
  return true
55
53
  else
@@ -57,20 +55,33 @@ module Gupshup
57
55
  end
58
56
  end
59
57
 
60
- def send_flash_message(msg,number,opts = {})
61
- send_message(msg,number,:FLASH,opts)
58
+ def send_message(opts)
59
+ msg = opts[:msg]
60
+ number = opts[:send_to]
61
+ msg_type = opts[:msg_type] || 'TEXT'
62
+
63
+ raise 'Phone Number is too short' if number.to_s.length < 12
64
+ raise 'Phone Number is too long' if number.to_s.length > 12
65
+ #raise 'Phone Number should start with "91"' if number.to_s.start_with? "91"
66
+ raise 'Phone Number should be numerical value' unless number.to_i.to_s == number.to_s
67
+ raise 'Message should be less than 725 characters long' if msg.to_s.length > 724
68
+ call_api opts.merge({ :method => 'sendMessage' })
69
+ end
70
+
71
+ def send_flash_message(opts)
72
+ send_message(opts.merge({ :msg_type => 'FLASH'}))
62
73
  end
63
74
 
64
- def send_text_message(msg,number,opts = {})
65
- send_message(msg,number,:TEXT,opts)
75
+ def send_text_message(opts)
76
+ send_message(opts.merge({ :msg_type => 'TEXT'}))
66
77
  end
67
78
 
68
- def send_vcard(card,number,opts = {})
69
- send_message(card,number,:VCARD,opts)
79
+ def send_vcard(opts)
80
+ send_message(opts.merge({ :msg_type => 'VCARD'}))
70
81
  end
71
82
 
72
- def send_unicode_message(msg,number,opts = {})
73
- send_message(msg,number,:UNICODE_TEXT,opts)
83
+ def send_unicode_message(opts)
84
+ send_message(opts.merge({ :msg_type => 'UNICODE_TEXT'}))
74
85
  end
75
86
 
76
87
  def bulk_file_upload(file_path,file_type = 'csv',mime_type = 'text/csv', opts = {})
@@ -84,5 +95,12 @@ module Gupshup
84
95
  file.close
85
96
  puts resp.body.content
86
97
  end
98
+
99
+ def group_post(opts)
100
+ raise "Invalid group name" if opts[:group_name].blank?
101
+ raise "Invalid message" if opts[:msg].blank?
102
+ raise "Invalid message type" if opts[:msg_type].blank?
103
+ call_api opts.merge({:method => 'post_group'})
104
+ end
87
105
  end
88
106
  end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gupshup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 5
9
+ version: 0.1.5
5
10
  platform: ruby
6
11
  authors:
7
12
  - Nilesh Trivedi
@@ -9,19 +14,24 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-02-16 00:00:00 +05:30
17
+ date: 2010-03-25 00:00:00 +05:30
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: httpclient
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 2
29
+ - 1
30
+ - 5
31
+ - 2
23
32
  version: 2.1.5.2
24
- version:
33
+ type: :runtime
34
+ version_requirements: *id001
25
35
  description: Ruby wrapper for SMSGupShup API
26
36
  email:
27
37
  - nilesh@webaroo.com
@@ -59,18 +69,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
59
69
  requirements:
60
70
  - - ">="
61
71
  - !ruby/object:Gem::Version
72
+ segments:
73
+ - 0
62
74
  version: "0"
63
- version:
64
75
  required_rubygems_version: !ruby/object:Gem::Requirement
65
76
  requirements:
66
77
  - - ">="
67
78
  - !ruby/object:Gem::Version
79
+ segments:
80
+ - 0
68
81
  version: "0"
69
- version:
70
82
  requirements: []
71
83
 
72
84
  rubyforge_project: gupshup
73
- rubygems_version: 1.3.5
85
+ rubygems_version: 1.3.6
74
86
  signing_key:
75
87
  specification_version: 3
76
88
  summary: Ruby wrapper for SMSGupShup API