elibom 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +14 -6
  2. data/lib/elibom/client.rb +145 -0
  3. data/lib/elibom.rb +13 -129
  4. metadata +8 -7
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 97ee65d4886bff782366ba4c39a1c9f3259e3959
4
- data.tar.gz: a9c14c64658c18a26ab356ba3c350e2b40b45f43
5
- SHA512:
6
- metadata.gz: 75063201358998322c5e9d35652cf829ab0fe0d775c9e2887872d28a780623a222a2ddba0af4aaf337f472a7962dd125c1473190eb24c0960dba73a9f7ffb3ce
7
- data.tar.gz: e2c438bf38fa1acb7aec52739cd55a88e7a419a51c4fce5db3772ce0d6e10d85c827e7eff397267e7d866b2de1a16fc8ca4f51c6c65ba0d474e53559855639be
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NmViYjhiNDg0MWQwZmI4NzdjNDhiZWI2NTA4OThiYTBmMGI2MjRjZQ==
5
+ data.tar.gz: !binary |-
6
+ ZGFjZDdhYjM0OTJhNGYwMGM5NjU5MjMwOTI4MTY1NDYyYjc1MWM3Yg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ MDU2YTc3MDNlZjQyOGExNDQwZmNiNjJiMGFjMTUzMjk2NGJmN2ZjNDVmZDhl
10
+ ODM4NmE2NWMwNmRjZmFmNmRmODZhMDdlYTIyMzg5NWI0MTRkMDczOWJiY2Zh
11
+ MDhjZWRhYmNiZDVmYWE5ZTA4OTIyMTNkODEzN2NjNTMwNWNlM2I=
12
+ data.tar.gz: !binary |-
13
+ OGViYjhiZDEyMzQ1Y2UzNWMxNmZmNTU4ZGQyYjU0NTlkZjZhMTEwNDU3Mjli
14
+ OGQxODc5ODU5NWI3NjRlNTk1MmE5NTgyMDMwMzBiYzc2ZjdiNmYyZTkxMmEz
15
+ Zjc1OTVkOGFmODZkN2Y3ZjY4ZjU1MDFkM2M2N2RiZmZmNTcyNTc=
@@ -0,0 +1,145 @@
1
+ require 'net/http'
2
+ require 'net/https'
3
+ require 'json'
4
+
5
+ module Elibom
6
+
7
+ class Client
8
+
9
+ def initialize(options={})
10
+ @host = options[:host] || "https://www.elibom.com"
11
+ @user = options[:user]
12
+ @api_password = options[:api_password]
13
+
14
+ raise ArgumentError, "Missing key ':user'" if @user.nil? || @user.empty?
15
+ raise ArgumentError, "Missing key ':api_password'" if @api_password.nil? || @api_password.empty?
16
+ end
17
+
18
+ def send_message(args={})
19
+ body = {}
20
+
21
+ required_args = [:to, :text]
22
+ required_args.each do |arg|
23
+ raise ArgumentError, "Missing key ':#{arg}'" if args[arg].nil?
24
+ body[arg] = args[arg]
25
+ end
26
+
27
+ post '/messages', body
28
+ end
29
+
30
+ def schedule_message(args={})
31
+ body = {}
32
+
33
+ required_args = [:to, :text]
34
+ required_args.each do |arg|
35
+ raise ArgumentError, "Missing key ':#{arg}'" if args[arg].nil?
36
+ body[arg] = args[arg]
37
+ end
38
+
39
+ raise ArgumentError, "Missing key ':schedule_date'" if args[:schedule_date].nil?
40
+ raise ArgumentError, "Invalid argument ':schedule_date'" unless args[:schedule_date].respond_to?('strftime')
41
+
42
+ body['scheduleDate'] = args[:schedule_date].strftime('%Y-%m-%d %H:%M')
43
+
44
+ post '/messages', body
45
+ end
46
+
47
+ def messages(delivery_id)
48
+ raise ArgumentError, "'delivery_id' cannot be nil or empty" if delivery_id.nil? || delivery_id.empty?
49
+ get "/messages/#{delivery_id}"
50
+ end
51
+ alias :list_messages :messages
52
+
53
+ def scheduled
54
+ get "/schedules/scheduled"
55
+ end
56
+ alias :list_scheduled_messages :scheduled
57
+ alias :schedules :scheduled
58
+ alias :list_schedules :scheduled
59
+
60
+ def show_schedule(schedule_id)
61
+ raise ArgumentError, "'schedule_id' cannot be nil" if schedule_id.nil?
62
+ get "/schedules/#{schedule_id}"
63
+ end
64
+
65
+ def cancel_schedule(schedule_id)
66
+ raise ArgumentError, "'schedule_id' cannot be nil" if schedule_id.nil?
67
+ delete "/schedules/#{schedule_id}"
68
+ end
69
+ alias :unschedule :cancel_schedule
70
+
71
+ def users
72
+ get "/users"
73
+ end
74
+ alias :list_users :users
75
+
76
+ def show_user(user_id)
77
+ raise ArgumentError, "'user_id' cannot be nil" if user_id.nil?
78
+ get "/users/#{user_id}"
79
+ end
80
+ alias :user :show_user
81
+
82
+ def show_account
83
+ get '/account'
84
+ end
85
+ alias :account :show_account
86
+
87
+ private
88
+
89
+ def get(resource)
90
+ uri = URI.parse("#{@host}#{resource}")
91
+ http = get_http(uri)
92
+
93
+ request = Net::HTTP::Get.new(uri.request_uri)
94
+ request.basic_auth @user, @api_password
95
+ request['Accept'] = 'application/json'
96
+
97
+ response = http.request(request)
98
+ parse_json_response(response)
99
+ end
100
+
101
+ def post(resource, body)
102
+ uri = URI.parse("#{@host}#{resource}")
103
+ http = get_http(uri)
104
+
105
+ request = Net::HTTP::Post.new(uri.path)
106
+ request.basic_auth @user, @api_password
107
+ request['Content-Type'] = 'application/json'
108
+ request['Accept'] = 'application/json'
109
+ request.body = body.to_json
110
+
111
+ response = http.request(request)
112
+ parse_json_response(response)
113
+ end
114
+
115
+ def delete(resource)
116
+ uri = URI.parse("#{@host}#{resource}")
117
+ http = get_http(uri)
118
+
119
+ request = Net::HTTP::Delete.new(uri.path)
120
+ request.basic_auth @user, @api_password
121
+
122
+ http.request(request)
123
+ end
124
+
125
+ def get_http(uri)
126
+ http = Net::HTTP.new(uri.host, uri.port)
127
+ if uri.scheme == 'https'
128
+ http.use_ssl = true
129
+ end
130
+
131
+ return http
132
+ end
133
+
134
+ def parse_json_response(response)
135
+ case response
136
+ when Net::HTTPSuccess
137
+ JSON.parse(response.body)
138
+ else
139
+ response.error!
140
+ end
141
+ end
142
+
143
+ end
144
+
145
+ end
data/lib/elibom.rb CHANGED
@@ -1,142 +1,26 @@
1
- require 'net/http'
2
- require 'net/https'
3
- require 'json'
1
+ require File.expand_path('elibom/client.rb', File.dirname(__FILE__))
4
2
 
5
3
  # Ruby client of the Elibom API
6
4
  module Elibom
7
5
 
8
- class Client
9
-
10
- def initialize(options={})
11
- @host = options[:host] || "https://www.elibom.com"
12
- @user = options[:user]
13
- @api_password = options[:api_password]
14
-
15
- raise ArgumentError, "Missing key ':user'" if @user.nil? || @user.empty?
16
- raise ArgumentError, "Missing key ':api_password'" if @api_password.nil? || @api_password.empty?
17
- end
18
-
19
- def send_message(args={})
20
- body = {}
21
-
22
- required_args = [:to, :text]
23
- required_args.each do |arg|
24
- raise ArgumentError, "Missing key ':#{arg}'" if args[arg].nil?
25
- body[arg] = args[arg]
26
- end
27
-
28
- post '/messages', body
29
- end
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
-
49
- def messages(delivery_id)
50
- raise ArgumentError, "'delivery_id' cannot be nil or empty" if delivery_id.nil? || delivery_id.empty?
51
- get "/messages/#{delivery_id}"
52
- end
53
- alias :list_messages :messages
54
-
55
- def scheduled
56
- get "/schedules/scheduled"
6
+ class << self
7
+ def configure(options={})
8
+ @client = Elibom::Client.new(options)
57
9
  end
58
- alias :list_scheduled_messages :scheduled
59
- alias :schedules :scheduled
60
- alias :list_schedules :scheduled
61
10
 
62
- def schedule(schedule_id)
63
- raise ArgumentError, "'schedule_id' cannot be nil" if schedule_id.nil?
64
- get "/schedules/#{schedule_id}"
11
+ def method_missing(method_name, *args, &block)
12
+ raise RuntimeError, "Please call Elibom.configure(:user => '...', :api_password => '...') first" if @client.nil?
13
+ @client.send(method_name, *args, &block)
65
14
  end
66
15
 
67
- def cancel_schedule(schedule_id)
68
- raise ArgumentError, "'schedule_id' cannot be nil" if schedule_id.nil?
69
- delete "/schedules/#{schedule_id}"
16
+ def respond_to_missing?(method_name, include_private=false)
17
+ raise RuntimeError, "Please call Elibom.configure(:user => '...', :api_password => '...') first" if @client.nil?
18
+ @client.respond_to?(method_name, include_private)
70
19
  end
71
- alias :unschedule :cancel_schedule
72
20
 
73
- def users
74
- get "/users"
21
+ def reset!
22
+ @client = nil
75
23
  end
76
-
77
- def user(user_id)
78
- raise ArgumentError, "'user_id' cannot be nil" if user_id.nil?
79
- get "/users/#{user_id}"
80
- end
81
-
82
- def account
83
- get '/account'
84
- end
85
-
86
- private
87
-
88
- def get(resource)
89
- uri = URI.parse("#{@host}#{resource}")
90
- http = get_http(uri)
91
-
92
- request = Net::HTTP::Get.new(uri.request_uri)
93
- request.basic_auth @user, @api_password
94
- request['Accept'] = 'application/json'
95
-
96
- response = http.request(request)
97
- parse_json_response(response)
98
- end
99
-
100
- def post(resource, body)
101
- uri = URI.parse("#{@host}#{resource}")
102
- http = get_http(uri)
103
-
104
- request = Net::HTTP::Post.new(uri.path)
105
- request.basic_auth @user, @api_password
106
- request['Content-Type'] = 'application/json'
107
- request['Accept'] = 'application/json'
108
- request.body = body.to_json
109
-
110
- response = http.request(request)
111
- parse_json_response(response)
112
- end
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)
134
- case response
135
- when Net::HTTPSuccess
136
- JSON.parse(response.body)
137
- else
138
- response.error!
139
- end
140
- end
141
24
  end
25
+
142
26
  end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elibom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.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-08-01 00:00:00.000000000 Z
11
+ date: 2013-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  description: A client of the Elibom API
@@ -31,6 +31,7 @@ extensions: []
31
31
  extra_rdoc_files: []
32
32
  files:
33
33
  - lib/elibom.rb
34
+ - lib/elibom/client.rb
34
35
  homepage: http://rubygems.org/gems/elibom
35
36
  licenses: []
36
37
  metadata: {}
@@ -40,17 +41,17 @@ require_paths:
40
41
  - lib
41
42
  required_ruby_version: !ruby/object:Gem::Requirement
42
43
  requirements:
43
- - - '>='
44
+ - - ! '>='
44
45
  - !ruby/object:Gem::Version
45
46
  version: '0'
46
47
  required_rubygems_version: !ruby/object:Gem::Requirement
47
48
  requirements:
48
- - - '>='
49
+ - - ! '>='
49
50
  - !ruby/object:Gem::Version
50
51
  version: '0'
51
52
  requirements: []
52
53
  rubyforge_project:
53
- rubygems_version: 2.0.6
54
+ rubygems_version: 2.0.5
54
55
  signing_key:
55
56
  specification_version: 4
56
57
  summary: Elibom API client