billogram 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 39e66e578b19f0e0da0568b754392205e1604bdd
4
- data.tar.gz: 6805cedcaf8042745a4b4fd7da5458aa89dc9dfa
3
+ metadata.gz: 7b193d4a77f4f21492b156cc3d027e1ffbf1a92f
4
+ data.tar.gz: bfc58aea5e2e9525be4b204b9b6968feb287b40e
5
5
  SHA512:
6
- metadata.gz: c31531e5f6b44d58b8577b9d5a4a0628d441ccf91f3d59a8ca4b34c4348056aaf5a627bdb29ca83a53f51f9684114c7e19b0b8a795593c55ec9c68c54d63fe22
7
- data.tar.gz: 329cba8ed6a9383751a03929ac2fe4bf1613d2471feb714963ce5f7d5078b27d5443d9dfc3e58f61064d1c03abe9cd93f5cc1bf9203d5a024aefa832d1537066
6
+ metadata.gz: 7b6e4ef5615f23cbfbc4420316ad9554d16ccdeaa4b5749a4a73352c3859b5b770ae40a1030670fe8e468213e807b9b7bdec042ba0aed4c4810bf6f79f66461e
7
+ data.tar.gz: 0051702ba396759d44ff41cc34364e6dde4fc41d2bb58dfde254a15808e5d21e65bdf44461c62ccd01656d9e040dc794696bd79e94ae5a9de5fe3fbddfe3bd28
@@ -8,8 +8,9 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Billogram::VERSION
9
9
  spec.authors = ["Mark Birman"]
10
10
  spec.email = ["birmanmark@gmail.com"]
11
+ spec.description = %q{Simple ruby wrapper for Billogram API}
11
12
 
12
- spec.summary = %q{Simple ruby wrapper over Billogram API}
13
+ spec.summary = "Ruby library providing access to Billogram API"
13
14
  spec.homepage = "http://github.com/mbirman/billogram"
14
15
  spec.license = "MIT"
15
16
 
@@ -18,10 +19,13 @@ Gem::Specification.new do |spec|
18
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
20
  spec.require_paths = ["lib"]
20
21
 
22
+ spec.required_ruby_version = '~> 2.0'
23
+
21
24
  spec.add_development_dependency "bundler", "~> 1.10"
22
25
  spec.add_development_dependency "rake", "~> 10.0"
23
26
  spec.add_development_dependency "rspec", "~> 3.0"
24
27
  spec.add_development_dependency "webmock", "~> 1.21"
25
28
  spec.add_development_dependency "dotenv", "~> 2.0"
26
29
  spec.add_dependency "httparty", "~> 0.13"
30
+ spec.add_dependency "activesupport", "~> 4.2"
27
31
  end
@@ -16,7 +16,7 @@ module Billogram
16
16
  private
17
17
 
18
18
  def relation_class(relation_name)
19
- Object.const_get("Billogram::#{relation_name.to_s.split('_').map(&:capitalize).join()}")
19
+ "Billogram::#{relation_name.to_s.classify}".constantize
20
20
  end
21
21
 
22
22
  def relation_attributes(relation_name)
@@ -33,7 +33,8 @@ module Billogram
33
33
  if type == :one
34
34
  value = relation_class(name).new(attrs)
35
35
  elsif type == :many
36
- value = attrs.map{|item| relation_class(name[0..-2]).new(item) }
36
+ singular = name.to_s.singularize
37
+ value = attrs.map{|item| relation_class(singular).new(item) }
37
38
  end
38
39
 
39
40
  resource.public_send("#{name}=", value)
@@ -1,3 +1,5 @@
1
+ require "active_support/core_ext/string/inflections.rb"
2
+
1
3
  module Billogram
2
4
  class Resource
3
5
  DEFAULT_OPTIONS = { page: 1, page_size: 50 }
@@ -9,28 +11,24 @@ module Billogram
9
11
 
10
12
  def endpoint(value = nil)
11
13
  @endpoint = value if value
12
- @endpoint || "#{name.sub('Billogram::', '').downcase}s"
14
+ @endpoint || name.demodulize.underscore.pluralize
13
15
  end
14
16
 
15
17
  def search(options = {})
16
18
  query = DEFAULT_OPTIONS.merge(options)
17
- response = Billogram.client.get("#{endpoint}", {query: query})
18
- build_objects(response)
19
+ perform_request("#{endpoint}", :get, query)
19
20
  end
20
21
 
21
22
  def fetch(id)
22
- response = Billogram.client.get("#{endpoint}/#{id}")
23
- build_objects(response)
23
+ perform_request("#{endpoint}/#{id}", :get)
24
24
  end
25
25
 
26
26
  def create(attributes)
27
- response = Billogram.client.post("#{endpoint}", {body: attributes.to_json})
28
- build_objects(response)
27
+ perform_request("#{endpoint}", :post, attributes)
29
28
  end
30
29
 
31
30
  def update(id, attributes)
32
- response = Billogram.client.put("#{endpoint}/#{id}", {body: attributes.to_json})
33
- build_objects(response)
31
+ perform_request("#{endpoint}/#{id}", :put, attributes)
34
32
  end
35
33
 
36
34
  def delete(id)
@@ -49,6 +47,19 @@ module Billogram
49
47
  else data
50
48
  end
51
49
  end
50
+
51
+ def perform_request(url, type, params = {})
52
+ case type
53
+ when :post, :put
54
+ query = { body: params.to_json }
55
+ when :get
56
+ query = { query: params }
57
+ else nil
58
+ end
59
+
60
+ response = Billogram.client.send(type, url, query)
61
+ build_objects(response) unless type == :delete
62
+ end
52
63
  end
53
64
 
54
65
  def initialize(attributes = {})
@@ -15,5 +15,46 @@ module Billogram
15
15
 
16
16
  relation :items, :many
17
17
  relation :events, :many
18
+
19
+ def sell
20
+ perform_request("#{endpoint}/#{id}/command/send", :post)
21
+ end
22
+
23
+ def collect
24
+ perform_request("#{endpoint}/#{id}/command/collect", :post)
25
+ end
26
+
27
+ def writeoff(options = {})
28
+ perform_request("#{endpoint}/#{id}/command/writeoff", :post)
29
+ end
30
+
31
+ def send!(options = {})
32
+ # https://billogram.com/api/documentation#billogram_call_send
33
+ perform_request("#{endpoint}/#{id}/command/send", :post, options)
34
+ end
35
+
36
+ def resend(options = {})
37
+ perform_request("#{endpoint}/#{id}/command/resend", :post, options)
38
+ end
39
+
40
+ def remind(options = {})
41
+ perform_request("#{endpoint}/#{id}/command/remind", :post, options)
42
+ end
43
+
44
+ def payment(options = {})
45
+ perform_request("#{endpoint}/#{id}/command/payment", :post, options)
46
+ end
47
+
48
+ def credit(options = {})
49
+ perform_request("#{endpoint}/#{id}/command/credit", :post, options)
50
+ end
51
+
52
+ def message(options = {})
53
+ perform_request("#{endpoint}/#{id}/command/message", :post, options)
54
+ end
55
+
56
+ def attach(options = {})
57
+ perform_request("#{endpoint}/#{id}/command/attach", :post, options)
58
+ end
18
59
  end
19
60
  end
@@ -1,3 +1,3 @@
1
1
  module Billogram
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: billogram
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Birman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-08-23 00:00:00.000000000 Z
11
+ date: 2015-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,7 +94,21 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0.13'
97
- description:
97
+ - !ruby/object:Gem::Dependency
98
+ name: activesupport
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '4.2'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '4.2'
111
+ description: Simple ruby wrapper for Billogram API
98
112
  email:
99
113
  - birmanmark@gmail.com
100
114
  executables: []
@@ -140,9 +154,9 @@ require_paths:
140
154
  - lib
141
155
  required_ruby_version: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - ">="
157
+ - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: '0'
159
+ version: '2.0'
146
160
  required_rubygems_version: !ruby/object:Gem::Requirement
147
161
  requirements:
148
162
  - - ">="
@@ -153,5 +167,5 @@ rubyforge_project:
153
167
  rubygems_version: 2.4.8
154
168
  signing_key:
155
169
  specification_version: 4
156
- summary: Simple ruby wrapper over Billogram API
170
+ summary: Ruby library providing access to Billogram API
157
171
  test_files: []