elibom 0.2.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/elibom.rb +67 -22
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2cb4c2a09c7c07d4a9305fdbc2b3657e6ef8a00f
4
- data.tar.gz: 2a130f51cae6e98ee775b21c5f12899210e95735
3
+ metadata.gz: 97ee65d4886bff782366ba4c39a1c9f3259e3959
4
+ data.tar.gz: a9c14c64658c18a26ab356ba3c350e2b40b45f43
5
5
  SHA512:
6
- metadata.gz: 9f0cb25d30e70ba3d29e871eb04e989cac128b9b7b6fd4296bccec30ea8ea67fb7d0e8075d426d7e45feaa6b4d79bae119e50e7319b9cee3e86465a3c0511c6e
7
- data.tar.gz: 072eda6131c62d086cdd7b4918ce220393723d09ed68751b10a1c3e49437dbbfb37e607e1f20d5ac8f3f6bc30ec9af3d57ebd9ead3d723a3eb8c59fc08559ef8
6
+ metadata.gz: 75063201358998322c5e9d35652cf829ab0fe0d775c9e2887872d28a780623a222a2ddba0af4aaf337f472a7962dd125c1473190eb24c0960dba73a9f7ffb3ce
7
+ data.tar.gz: e2c438bf38fa1acb7aec52739cd55a88e7a419a51c4fce5db3772ce0d6e10d85c827e7eff397267e7d866b2de1a16fc8ca4f51c6c65ba0d474e53559855639be
data/lib/elibom.rb CHANGED
@@ -19,7 +19,7 @@ module Elibom
19
19
  def send_message(args={})
20
20
  body = {}
21
21
 
22
- required_args = [:destinations, :text]
22
+ required_args = [:to, :text]
23
23
  required_args.each do |arg|
24
24
  raise ArgumentError, "Missing key ':#{arg}'" if args[arg].nil?
25
25
  body[arg] = args[arg]
@@ -28,12 +28,52 @@ module Elibom
28
28
  post '/messages', body
29
29
  end
30
30
 
31
+ def schedule_message(args={})
32
+ body = {}
33
+
34
+ required_args = [:to, :text]
35
+ required_args.each do |arg|
36
+ raise ArgumentError, "Missing key ':#{arg}'" if args[arg].nil?
37
+ body[arg] = args[arg]
38
+ end
39
+
40
+ raise ArgumentError, "Missing key ':schedule_date'" if args[:schedule_date].nil?
41
+ raise ArgumentError, "Invalid argument ':schedule_date'" unless args[:schedule_date].respond_to?('strftime')
42
+
43
+ body['scheduleDate'] = args[:schedule_date].strftime('%Y-%m-%d %H:%M')
44
+ puts body
45
+
46
+ post '/messages', body
47
+ end
48
+
31
49
  def messages(delivery_id)
32
50
  raise ArgumentError, "'delivery_id' cannot be nil or empty" if delivery_id.nil? || delivery_id.empty?
33
51
  get "/messages/#{delivery_id}"
34
52
  end
35
53
  alias :list_messages :messages
36
54
 
55
+ def scheduled
56
+ get "/schedules/scheduled"
57
+ end
58
+ alias :list_scheduled_messages :scheduled
59
+ alias :schedules :scheduled
60
+ alias :list_schedules :scheduled
61
+
62
+ def schedule(schedule_id)
63
+ raise ArgumentError, "'schedule_id' cannot be nil" if schedule_id.nil?
64
+ get "/schedules/#{schedule_id}"
65
+ end
66
+
67
+ def cancel_schedule(schedule_id)
68
+ raise ArgumentError, "'schedule_id' cannot be nil" if schedule_id.nil?
69
+ delete "/schedules/#{schedule_id}"
70
+ end
71
+ alias :unschedule :cancel_schedule
72
+
73
+ def users
74
+ get "/users"
75
+ end
76
+
37
77
  def user(user_id)
38
78
  raise ArgumentError, "'user_id' cannot be nil" if user_id.nil?
39
79
  get "/users/#{user_id}"
@@ -47,35 +87,19 @@ module Elibom
47
87
 
48
88
  def get(resource)
49
89
  uri = URI.parse("#{@host}#{resource}")
50
- http = Net::HTTP.new(uri.host, uri.port)
51
-
52
- if uri.scheme == 'https'
53
- http.use_ssl = true
54
- # http.verify_mode = OpenSSL::SSL::VERIFY_NONE
55
- end
90
+ http = get_http(uri)
56
91
 
57
92
  request = Net::HTTP::Get.new(uri.request_uri)
58
93
  request.basic_auth @user, @api_password
59
94
  request['Accept'] = 'application/json'
60
95
 
61
96
  response = http.request(request)
62
-
63
- case response
64
- when Net::HTTPSuccess
65
- JSON.parse(response.body)
66
- else
67
- response.error!
68
- end
97
+ parse_json_response(response)
69
98
  end
70
99
 
71
100
  def post(resource, body)
72
101
  uri = URI.parse("#{@host}#{resource}")
73
- http = Net::HTTP.new(uri.host, uri.port)
74
-
75
- if uri.scheme == 'https'
76
- http.use_ssl = true
77
- # http.verify_mode = OpenSSL::SSL::VERIFY_NONE
78
- end
102
+ http = get_http(uri)
79
103
 
80
104
  request = Net::HTTP::Post.new(uri.path)
81
105
  request.basic_auth @user, @api_password
@@ -84,7 +108,29 @@ module Elibom
84
108
  request.body = body.to_json
85
109
 
86
110
  response = http.request(request)
111
+ parse_json_response(response)
112
+ end
87
113
 
114
+ def delete(resource)
115
+ uri = URI.parse("#{@host}#{resource}")
116
+ http = get_http(uri)
117
+
118
+ request = Net::HTTP::Delete.new(uri.path)
119
+ request.basic_auth @user, @api_password
120
+
121
+ http.request(request)
122
+ end
123
+
124
+ def get_http(uri)
125
+ http = Net::HTTP.new(uri.host, uri.port)
126
+ if uri.scheme == 'https'
127
+ http.use_ssl = true
128
+ end
129
+
130
+ return http
131
+ end
132
+
133
+ def parse_json_response(response)
88
134
  case response
89
135
  when Net::HTTPSuccess
90
136
  JSON.parse(response.body)
@@ -92,6 +138,5 @@ module Elibom
92
138
  response.error!
93
139
  end
94
140
  end
95
-
96
141
  end
97
- end
142
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elibom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - German Escobar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-28 00:00:00.000000000 Z
11
+ date: 2013-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json