aircall 0.1.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 12d121e46105a86984bb40937a954b85a2e13590
4
+ data.tar.gz: a3a293e116b98b242fe4828dcf0caf92c1a7edc1
5
+ SHA512:
6
+ metadata.gz: 17d86e77002a3eb2a720e2dd39594ac971316c2dc8825ea3c5e3717347f943e456805c60930959b6f1a30460aa76ad7eab215f5392a960894fd9ee7544c7dbdf
7
+ data.tar.gz: 3b8280eb416627d5d6873381debe2355706adb757a7342dbdde80446fec70dfebc0cc87fc5ef5514df6c21e6febf8122b39f63d57e9c9cbac5194533da2343d1
data/.env.example ADDED
@@ -0,0 +1,9 @@
1
+ AIRCALL_ID=
2
+ AIRCALL_TOKEN=
3
+
4
+ TEST_DEFAULT_NUMBER=
5
+ TEST_DEFAULT_USER_ID=
6
+ TEST_DEFAULT_CALL_ID=
7
+ TEST_DEFAULT_CONTACT_ID=
8
+ TEST_DEFAULT_PHONE_NUMBER=
9
+ TEST_DEFAULT_EMAIL=
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ .idea/
10
+ bin/temporary_tests
11
+ .env
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in aircall.gemspec
6
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,30 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ aircall (0.1.0)
5
+ httparty (~> 0.16.2)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ dotenv (2.2.2)
11
+ hashie (3.5.7)
12
+ httparty (0.16.2)
13
+ multi_xml (>= 0.5.2)
14
+ minitest (5.11.3)
15
+ multi_xml (0.6.0)
16
+ rake (10.4.2)
17
+
18
+ PLATFORMS
19
+ ruby
20
+
21
+ DEPENDENCIES
22
+ aircall!
23
+ bundler (~> 1.16)
24
+ dotenv (~> 2.2)
25
+ hashie (~> 3.5)
26
+ minitest (~> 5.11)
27
+ rake (~> 10.0)
28
+
29
+ BUNDLED WITH
30
+ 1.16.0
data/README.md ADDED
@@ -0,0 +1,51 @@
1
+ # Aircall
2
+
3
+ A Ruby gem for [Aircall](https://developer.aircall.io/api-references/).
4
+ Only some methods are presents for the moment.
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem 'aircall'
12
+ ```
13
+
14
+ And then execute:
15
+
16
+ $ bundle
17
+
18
+ Or install it yourself as:
19
+
20
+ $ gem install aircall
21
+
22
+ ## Usage
23
+
24
+
25
+ ### Init
26
+
27
+ Create new Aircall connection like this:
28
+
29
+ aircall = Aircall.new({id: [AIRCALL_ID], token: [AIRCALL_TOKEN]})
30
+
31
+ Or like this:
32
+
33
+ aircall = Aircall.new
34
+ aircall.id = [AIRCALL_ID]
35
+ aircall.token = [AIRCALL_TOKEN]
36
+
37
+
38
+ ### Methods
39
+
40
+ #### [Calls](./doc/calls.md)
41
+ #### [Numbers](./doc/numbers.md)
42
+ #### [Contacts](./doc/contacts.md)
43
+ #### [Users](./doc/users.md)
44
+
45
+
46
+ ## Tests
47
+
48
+ Create **.env** file from **.env.example**.
49
+ Complete with your variables.
50
+
51
+ Run test with `rake test`.
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require 'dotenv/load'
2
+
3
+ require "bundler/gem_tasks"
4
+ task :default => :spec
5
+
6
+
7
+ require 'rake/testtask'
8
+
9
+ Rake::TestTask.new do |t|
10
+ t.libs << 'test'
11
+ end
12
+
13
+ desc "Run tests"
14
+ task :default => :test
data/aircall.gemspec ADDED
@@ -0,0 +1,43 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "aircall/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "aircall"
8
+ spec.version = Aircall::VERSION
9
+ spec.licenses = ['MIT']
10
+ spec.authors = ["Ilek", "Jerome"]
11
+ spec.email = ["jerome@ilek.fr", "jeromearsene@gmail.com"]
12
+
13
+ spec.summary = "Ruby Gem for Aircall"
14
+ # spec.description = %q{TODO: Write a longer description or delete this line.}
15
+ spec.homepage = "https://github.com/ilek-fr/aircall"
16
+
17
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ =begin
20
+ if spec.respond_to?(:metadata)
21
+ spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
22
+ else
23
+ raise "RubyGems 2.0 or newer is required to protect against " \
24
+ "public gem pushes."
25
+ end
26
+ =end
27
+
28
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
29
+ f.match(%r{^(test|spec|features)/})
30
+ end
31
+ spec.bindir = "exe"
32
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
33
+ spec.require_paths = ["lib"]
34
+
35
+
36
+ spec.add_runtime_dependency "httparty", "~> 0.16.2"
37
+
38
+ spec.add_development_dependency "minitest", "~> 5.11"
39
+ spec.add_development_dependency "hashie", "~> 3.5"
40
+ spec.add_development_dependency "dotenv", "~> 2.2"
41
+ spec.add_development_dependency "bundler", "~> 1.16"
42
+ spec.add_development_dependency "rake", "~> 10.0"
43
+ end
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "aircall"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/lib/aircall.rb ADDED
@@ -0,0 +1,40 @@
1
+ require "aircall/version"
2
+ require 'aircall/connection'
3
+ require 'aircall/calls'
4
+ require 'aircall/contacts'
5
+ require 'aircall/users'
6
+ require 'aircall/numbers'
7
+
8
+ module Aircall
9
+
10
+ def self.new(*a)
11
+ Aircall.new(*a)
12
+ end
13
+
14
+ class Aircall
15
+ attr_accessor :id, :token
16
+
17
+ def initialize(args = {})
18
+ @id = args[:id]
19
+ @token = args[:token]
20
+ end
21
+
22
+
23
+ def calls
24
+ @calls ||= Calls.new self
25
+ end
26
+
27
+ def contacts
28
+ @contacts ||= Contacts.new self
29
+ end
30
+
31
+ def users
32
+ @users ||= Users.new self
33
+ end
34
+
35
+ def numbers
36
+ @numbers ||= Numbers.new self
37
+ end
38
+ end
39
+
40
+ end
@@ -0,0 +1,18 @@
1
+ module Aircall
2
+ class Calls
3
+ include Connection
4
+
5
+ def get_by_id(call_id)
6
+ get("/calls/#{call_id}")
7
+ end
8
+
9
+ def get_by_user_id(user_id, page: 1, per_page: 5, order: "asc", order_by: "created_at")
10
+ get(construct_request_with_arguments("/calls/search", binding))
11
+ end
12
+
13
+ def get_by_phone_number(phone_number, page: 1, per_page: 5, order: "asc", order_by: "created_at")
14
+ get(construct_request_with_arguments("/calls/search", binding))
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,57 @@
1
+ require 'HTTParty'
2
+ require 'json'
3
+
4
+ module Aircall
5
+ module Connection
6
+ attr_reader :aircall
7
+ def initialize(aircall)
8
+ @aircall = aircall
9
+ end
10
+
11
+ def require_settings(required)
12
+ required.each do |setting|
13
+ raise "Required setting #{setting} is missing." unless aircall.send(setting)
14
+ end
15
+ end
16
+
17
+ def parse(result)
18
+ parsed = JSON.parse result.body
19
+ if parsed.kind_of? Hash and parsed['status'] and parsed['status'] == 'failure'
20
+ raise Error.new(parsed['error'])
21
+ end
22
+
23
+ parsed
24
+ end
25
+
26
+ def get(path)
27
+ url = "https://api.aircall.io/v1#{path}"
28
+ response = HTTParty.get(
29
+ url,
30
+ basic_auth: { username: aircall.id, password: aircall.token }
31
+ )
32
+
33
+ parse(response)
34
+ end
35
+
36
+ def get_method_arguments(ext_binding)
37
+ raise ArgumentError, "Binding expected, #{ext_binding.class.name} given" unless ext_binding.is_a?(Binding)
38
+ method_name = ext_binding.eval("__method__")
39
+ ext_binding.receiver.method(method_name).parameters.map do |_, name|
40
+ [name, ext_binding.local_variable_get(name)]
41
+ end.to_h
42
+ end
43
+
44
+ # La requete se construit selon le nom et la valeur des arguments passés à la fonction
45
+ def construct_request_with_arguments(base_request, ext_binding)
46
+ request = base_request.concat("?")
47
+ get_method_arguments(ext_binding).each do |arg_name, arg_value|
48
+ request.concat(arg_name.to_s).concat("=").concat(arg_value.to_s).concat("&")
49
+ end
50
+
51
+ # Suppression du dernier "&"
52
+ request[0..-2]
53
+ end
54
+
55
+ private :require, :parse ,:get, :construct_request_with_arguments
56
+ end
57
+ end
@@ -0,0 +1,18 @@
1
+ module Aircall
2
+ class Contacts
3
+ include Connection
4
+
5
+ def get_by_id(contact_id)
6
+ get("/contacts/#{contact_id}")
7
+ end
8
+
9
+ def get_by_email(email, page: 1, per_page: 5, order: "asc", order_by: "created_at")
10
+ get(construct_request_with_arguments("/contacts/search", binding))
11
+ end
12
+
13
+ def get_by_phone_number(phone_number, page: 1, per_page: 5, order: "asc", order_by: "created_at")
14
+ get(construct_request_with_arguments("/contacts/search", binding))
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,10 @@
1
+ module Aircall
2
+ class Numbers
3
+ include Connection
4
+
5
+ def get_by_id(number_id)
6
+ get("/numbers/#{number_id}")
7
+ end
8
+
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ module Aircall
2
+ class Users
3
+ include Connection
4
+
5
+ def get_by_id(user_id)
6
+ get("/users/#{user_id}")
7
+ end
8
+
9
+ end
10
+ end
@@ -0,0 +1,3 @@
1
+ module Aircall
2
+ VERSION = "0.1.1"
3
+ end
metadata ADDED
@@ -0,0 +1,147 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: aircall
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Ilek
8
+ - Jerome
9
+ autorequire:
10
+ bindir: exe
11
+ cert_chain: []
12
+ date: 2018-04-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: httparty
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 0.16.2
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 0.16.2
28
+ - !ruby/object:Gem::Dependency
29
+ name: minitest
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '5.11'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '5.11'
42
+ - !ruby/object:Gem::Dependency
43
+ name: hashie
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '3.5'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '3.5'
56
+ - !ruby/object:Gem::Dependency
57
+ name: dotenv
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '2.2'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '2.2'
70
+ - !ruby/object:Gem::Dependency
71
+ name: bundler
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '1.16'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '1.16'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rake
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '10.0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '10.0'
98
+ description:
99
+ email:
100
+ - jerome@ilek.fr
101
+ - jeromearsene@gmail.com
102
+ executables: []
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - ".env.example"
107
+ - ".gitignore"
108
+ - Gemfile
109
+ - Gemfile.lock
110
+ - README.md
111
+ - Rakefile
112
+ - aircall.gemspec
113
+ - bin/console
114
+ - bin/setup
115
+ - bin/temporary_tests
116
+ - lib/aircall.rb
117
+ - lib/aircall/calls.rb
118
+ - lib/aircall/connection.rb
119
+ - lib/aircall/contacts.rb
120
+ - lib/aircall/numbers.rb
121
+ - lib/aircall/users.rb
122
+ - lib/aircall/version.rb
123
+ homepage: https://github.com/ilek-fr/aircall
124
+ licenses:
125
+ - MIT
126
+ metadata: {}
127
+ post_install_message:
128
+ rdoc_options: []
129
+ require_paths:
130
+ - lib
131
+ required_ruby_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
136
+ required_rubygems_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ requirements: []
142
+ rubyforge_project:
143
+ rubygems_version: 2.6.14
144
+ signing_key:
145
+ specification_version: 4
146
+ summary: Ruby Gem for Aircall
147
+ test_files: []