turba_kit 0.0.8
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 +7 -0
- data/.gitignore +17 -0
- data/Gemfile +15 -0
- data/LICENSE.txt +22 -0
- data/README.md +1 -0
- data/Rakefile +22 -0
- data/lib/turba_kit/arguments.rb +14 -0
- data/lib/turba_kit/authentication.rb +10 -0
- data/lib/turba_kit/client/categories.rb +41 -0
- data/lib/turba_kit/client/checkins.rb +14 -0
- data/lib/turba_kit/client/comments.rb +9 -0
- data/lib/turba_kit/client/contents.rb +26 -0
- data/lib/turba_kit/client/countries.rb +14 -0
- data/lib/turba_kit/client/crowd_table.rb +25 -0
- data/lib/turba_kit/client/links.rb +26 -0
- data/lib/turba_kit/client/migrations.rb +15 -0
- data/lib/turba_kit/client/notifications.rb +26 -0
- data/lib/turba_kit/client/organismes.rb +41 -0
- data/lib/turba_kit/client/phonenumbers.rb +26 -0
- data/lib/turba_kit/client/places.rb +26 -0
- data/lib/turba_kit/client/search.rb +9 -0
- data/lib/turba_kit/client/services.rb +41 -0
- data/lib/turba_kit/client/tips.rb +26 -0
- data/lib/turba_kit/client.rb +168 -0
- data/lib/turba_kit/configurable.rb +74 -0
- data/lib/turba_kit/default.rb +102 -0
- data/lib/turba_kit/error.rb +209 -0
- data/lib/turba_kit/response/raise_error.rb +20 -0
- data/lib/turba_kit/version.rb +3 -0
- data/lib/turba_kit.rb +27 -0
- data/spec/cassettes/TurbaKit_Client_Categories/_categories/handles_the_country_code_option.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Categories/_category/returns_a_category.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Categories/_create_category/creates_a_category.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Categories/_delete_category/deletes_a_category_and_returns_true.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Categories/_delete_category/returns_false_if_category_doesn_t_exist.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Categories/_update_category/updates_a_category.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Contents/_create_content/creates_a_content.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Contents/_delete_content/deletes_a_content.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Contents/_service_content/returns_a_content.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Contents/_service_contents/lists_contents.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Contents/_update_content/updates_a_content.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Countries/_countries/returns_all_countries.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Countries/_country/returns_a_country.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Crowds/_create_crowd/creates_a_crowd.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Crowds/_delete_crowd/deletes_a_crowd.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Crowds/_service_crowd/returns_a_crowd.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Crowds/_service_crowds/lists_crowds.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Crowds/_update_crowd/updates_a_crowd.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Links/_create_link/creates_a_link.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Links/_delete_link/deletes_a_link.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Links/_service_link/returns_a_link.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Links/_service_links/lists_links.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Links/_update_link/updates_a_link.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Notifications/_create_notification/creates_a_notification.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Notifications/_delete_notification/deletes_a_notification.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Notifications/_service_notification/returns_a_notification.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Notifications/_service_notifications/lists_notifications.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Notifications/_update_notification/updates_a_notification.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Organismes/_create_organisme/creates_an_organisme.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Organismes/_delete_organisme/deletes_a_organisme_and_returns_true.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Organismes/_delete_organisme/returns_false_if_organisme_doesn_t_exist.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Organismes/_organisme/returns_a_organisme.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Organismes/_organismes/handles_the_country_code_option.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Organismes/_update_organisme/updates_an_organisme.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Phonenumbers/_create_phonenumber/creates_a_phonenumber.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Phonenumbers/_delete_phonenumber/deletes_a_phonenumber.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Phonenumbers/_service_phonenumber/returns_a_phonenumber.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Phonenumbers/_service_phonenumbers/lists_phonenumbers.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Phonenumbers/_update_phonenumber/updates_a_phonenumber.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Places/_create_place/creates_a_place.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Places/_delete_place/deletes_a_place.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Places/_service_place/returns_a_place.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Places/_service_places/lists_places.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Places/_update_place/updates_a_place.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Services/_service/returns_a_service.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Services/_services/handles_the_country_code_option.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Tips/_create_tip/creates_a_tip.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Tips/_delete_tip/deletes_a_tip.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Tips/_service_tip/returns_a_tip.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Tips/_service_tips/lists_tips.json +1 -0
- data/spec/cassettes/TurbaKit_Client_Tips/_update_tip/updates_a_tip.json +1 -0
- data/spec/cassettes/Turkit_Client_Categories/_categories/handles_the_country_code_option.json +1 -0
- data/spec/cassettes/Turkit_Client_Categories/_categories/returns_all_categories.json +1 -0
- data/spec/cassettes/Turkit_Client_Categories/_category/returns_a_category.json +1 -0
- data/spec/cassettes/Turkit_Client_Categories/_create_category/creates_a_category.json +1 -0
- data/spec/cassettes/Turkit_Client_Categories/_delete_category/deletes_a_category_and_returns_true.json +1 -0
- data/spec/cassettes/Turkit_Client_Categories/_delete_category/returns_false_if_category_doesn_t_exist.json +1 -0
- data/spec/cassettes/Turkit_Client_Categories/_search_category/returns_a_list_of_categories.json +1 -0
- data/spec/cassettes/Turkit_Client_Categories/_update_category/updates_a_category.json +1 -0
- data/spec/cassettes/Turkit_Client_Contents/_create_content/creates_a_content.json +1 -0
- data/spec/cassettes/Turkit_Client_Contents/_delete_content/deletes_a_content.json +1 -0
- data/spec/cassettes/Turkit_Client_Contents/_service_content/returns_a_content.json +1 -0
- data/spec/cassettes/Turkit_Client_Contents/_service_contents/lists_contents.json +1 -0
- data/spec/cassettes/Turkit_Client_Contents/_update_content/updates_a_content.json +1 -0
- data/spec/cassettes/Turkit_Client_Countries/_countries/returns_all_countries.json +1 -0
- data/spec/cassettes/Turkit_Client_Countries/_country/returns_a_country.json +1 -0
- data/spec/cassettes/Turkit_Client_Crowds/_create_crowd/creates_a_crowd.json +1 -0
- data/spec/cassettes/Turkit_Client_Crowds/_delete_crowd/deletes_a_crowd.json +1 -0
- data/spec/cassettes/Turkit_Client_Crowds/_service_crowd/returns_a_crowd.json +1 -0
- data/spec/cassettes/Turkit_Client_Crowds/_service_crowds/lists_crowds.json +1 -0
- data/spec/cassettes/Turkit_Client_Crowds/_update_crowd/updates_a_crowd.json +1 -0
- data/spec/cassettes/Turkit_Client_Links/_create_link/creates_a_link.json +1 -0
- data/spec/cassettes/Turkit_Client_Links/_delete_link/deletes_a_link.json +1 -0
- data/spec/cassettes/Turkit_Client_Links/_service_link/returns_a_link.json +1 -0
- data/spec/cassettes/Turkit_Client_Links/_service_links/lists_links.json +1 -0
- data/spec/cassettes/Turkit_Client_Links/_update_link/updates_a_link.json +1 -0
- data/spec/cassettes/Turkit_Client_Notifications/_create_notification/creates_a_notification.json +1 -0
- data/spec/cassettes/Turkit_Client_Notifications/_delete_notification/deletes_a_notification.json +1 -0
- data/spec/cassettes/Turkit_Client_Notifications/_service_notification/returns_a_notification.json +1 -0
- data/spec/cassettes/Turkit_Client_Notifications/_service_notifications/lists_notifications.json +1 -0
- data/spec/cassettes/Turkit_Client_Notifications/_update_notification/updates_a_notification.json +1 -0
- data/spec/cassettes/Turkit_Client_Organismes/_create_organisme/creates_an_organisme.json +1 -0
- data/spec/cassettes/Turkit_Client_Organismes/_delete_organisme/deletes_a_organisme_and_returns_true.json +1 -0
- data/spec/cassettes/Turkit_Client_Organismes/_delete_organisme/returns_false_if_organisme_doesn_t_exist.json +1 -0
- data/spec/cassettes/Turkit_Client_Organismes/_organisme/returns_a_organisme.json +1 -0
- data/spec/cassettes/Turkit_Client_Organismes/_organismes/handles_the_country_code_option.json +1 -0
- data/spec/cassettes/Turkit_Client_Organismes/_organismes/returns_all_organismes.json +1 -0
- data/spec/cassettes/Turkit_Client_Organismes/_search_organisme/returns_a_list_of_organismes.json +1 -0
- data/spec/cassettes/Turkit_Client_Organismes/_update_organisme/updates_an_organisme.json +1 -0
- data/spec/cassettes/Turkit_Client_Phonenumbers/_create_phonenumber/creates_a_phonenumber.json +1 -0
- data/spec/cassettes/Turkit_Client_Phonenumbers/_delete_phonenumber/deletes_a_phonenumber.json +1 -0
- data/spec/cassettes/Turkit_Client_Phonenumbers/_service_phonenumber/returns_a_phonenumber.json +1 -0
- data/spec/cassettes/Turkit_Client_Phonenumbers/_service_phonenumbers/lists_phonenumbers.json +1 -0
- data/spec/cassettes/Turkit_Client_Phonenumbers/_update_phonenumber/updates_a_phonenumber.json +1 -0
- data/spec/cassettes/Turkit_Client_Places/_create_place/creates_a_place.json +1 -0
- data/spec/cassettes/Turkit_Client_Places/_delete_place/deletes_a_place.json +1 -0
- data/spec/cassettes/Turkit_Client_Places/_service_place/returns_a_place.json +1 -0
- data/spec/cassettes/Turkit_Client_Places/_service_places/lists_places.json +1 -0
- data/spec/cassettes/Turkit_Client_Places/_update_place/updates_a_place.json +1 -0
- data/spec/cassettes/Turkit_Client_Services/_search_service/returns_a_list_of_services.json +1 -0
- data/spec/cassettes/Turkit_Client_Services/_service/returns_a_service.json +1 -0
- data/spec/cassettes/Turkit_Client_Services/_services/handles_the_country_code_option.json +1 -0
- data/spec/cassettes/Turkit_Client_Services/_services/returns_all_services.json +1 -0
- data/spec/cassettes/Turkit_Client_Tips/_create_tip/creates_a_tip.json +1 -0
- data/spec/cassettes/Turkit_Client_Tips/_delete_tip/deletes_a_tip.json +1 -0
- data/spec/cassettes/Turkit_Client_Tips/_service_tip/returns_a_tip.json +1 -0
- data/spec/cassettes/Turkit_Client_Tips/_service_tips/lists_tips.json +1 -0
- data/spec/cassettes/Turkit_Client_Tips/_update_tip/updates_a_tip.json +1 -0
- data/spec/lib/categories_spec.rb +64 -0
- data/spec/lib/contents_spec.rb +47 -0
- data/spec/lib/countries_spec.rb +23 -0
- data/spec/lib/crowds_spec.rb +47 -0
- data/spec/lib/links_spec.rb +47 -0
- data/spec/lib/notifications_spec.rb +47 -0
- data/spec/lib/organismes_spec.rb +64 -0
- data/spec/lib/phonenumbers_spec.rb +47 -0
- data/spec/lib/place_spec.rb +47 -0
- data/spec/lib/services_spec.rb +64 -0
- data/spec/lib/tips_spec.rb +47 -0
- data/spec/spec_helper.rb +34 -0
- data/turba_kit.gemspec +24 -0
- metadata +356 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 032cbfe91ba7465a1f61586f8147bf6745c64bdc
|
4
|
+
data.tar.gz: ff76c291e3c7ef08df77e3dd9c0a3b700d2f7001
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a713192585164fe8fba1633340d652235e409e23956ab031ef0f0498893487d56ad2b80b00035efd6c3f5fb1da45c7dc5458537f43cea89f6f738cec28969a3c
|
7
|
+
data.tar.gz: 9f2369295552e66e3cd1ee5be8538f38d9469382dc884eea2a2fe84ac464cea72ac755e0e7f12d8ee001dee61b1ef73b8b94c451a7d0ce8d7fb2d98ab9182883
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Joffrey JAFFEUX
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# TurbaKit
|
data/Rakefile
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
RSpec::Core::RakeTask.new(:spec)
|
6
|
+
|
7
|
+
task :test => :spec
|
8
|
+
task :default => :spec
|
9
|
+
|
10
|
+
namespace :doc do
|
11
|
+
begin
|
12
|
+
require 'yard'
|
13
|
+
YARD::Rake::YardocTask.new do |task|
|
14
|
+
task.files = ['README.md', 'LICENSE.md', 'lib/**/*.rb']
|
15
|
+
task.options = [
|
16
|
+
'--output-dir', 'doc/yard',
|
17
|
+
'--markup', 'markdown',
|
18
|
+
]
|
19
|
+
end
|
20
|
+
rescue LoadError
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module TurbaKit
|
2
|
+
class Client
|
3
|
+
module Categories
|
4
|
+
def category(id_or_uri_id, *args)
|
5
|
+
get("categories/#{id_or_uri_id}?#{query_string(args)}")[:category]
|
6
|
+
end
|
7
|
+
|
8
|
+
def categories(*args)
|
9
|
+
get("categories?#{query_string(args)}")[:categories]
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_category(params)
|
13
|
+
params = {category: params}
|
14
|
+
post("categories", options.merge(params))[:category]
|
15
|
+
end
|
16
|
+
|
17
|
+
def delete_category(id_or_uri_id)
|
18
|
+
boolean_from_response :delete, "categories/#{id_or_uri_id}", options
|
19
|
+
end
|
20
|
+
|
21
|
+
def search_category(query, *args)
|
22
|
+
get("categories?q=#{query}&#{query_string(args)}")[:categories]
|
23
|
+
end
|
24
|
+
|
25
|
+
# Update a category
|
26
|
+
#
|
27
|
+
# @param id_or_uri_id [String] ID of the category
|
28
|
+
# @param params [Hash] A customizable set of params.
|
29
|
+
# @option category_params [String] :title Category title.
|
30
|
+
# @option category_params [String] :url Category URL.
|
31
|
+
# @option category_params [String] :country_code Category country code.
|
32
|
+
# @return [Sawyer::Resource] The updated category
|
33
|
+
# @see https://github.com/turba-webservices/api-documentation/blob/master/v2/sections/categories.md#update-category
|
34
|
+
# @example Change the title of Category xxxxxx
|
35
|
+
# TurbaKit.update_issue("xxxxxx", {title: "A new title"})
|
36
|
+
def update_category(id_or_uri_id, category_params = {})
|
37
|
+
put("categories/#{id_or_uri_id}", options.merge({category: category_params}))[:category]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module TurbaKit
|
2
|
+
class Client
|
3
|
+
module Checkins
|
4
|
+
def create_wait_checkin(service_id, wait)
|
5
|
+
post("services/#{service_id}/checkins?wait=#{wait}")
|
6
|
+
end
|
7
|
+
|
8
|
+
def recent_checkins(limit = 5, since)
|
9
|
+
since ||= 10.days.ago
|
10
|
+
get("checkins?limit=#{limit}&since=#{since}")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module TurbaKit
|
2
|
+
class Client
|
3
|
+
module Contents
|
4
|
+
def service_content(service_id, content_id)
|
5
|
+
get("services/#{service_id}/contents/#{content_id}")[:content]
|
6
|
+
end
|
7
|
+
|
8
|
+
def service_contents(service_id)
|
9
|
+
get("services/#{service_id}/contents")[:contents]
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_content(service_id, params, options = {})
|
13
|
+
# params = {type: type}
|
14
|
+
post("services/#{service_id}/contents", {content: options.merge(params)})[:content]
|
15
|
+
end
|
16
|
+
|
17
|
+
def update_content(service_id, content_id, *args)
|
18
|
+
put("services/#{service_id}/contents/#{content_id}", {content: options.merge(args[0])})[:content]
|
19
|
+
end
|
20
|
+
|
21
|
+
def delete_content(service_id, content_id)
|
22
|
+
boolean_from_response :delete, "services/#{service_id}/contents/#{content_id}", options
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module TurbaKit
|
2
|
+
class Client
|
3
|
+
module Countries
|
4
|
+
def country(country_code)
|
5
|
+
countries = get("countries")[:countries]
|
6
|
+
countries.select{|k, v| k[:country_code] == country_code}.first
|
7
|
+
end
|
8
|
+
|
9
|
+
def countries
|
10
|
+
get("countries")[:countries]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module TurbaKit
|
2
|
+
class Client
|
3
|
+
module CrowdTable
|
4
|
+
def service_crowd_table(service_id)
|
5
|
+
get("services/#{service_id}/crowd_table")[:crowd_table]
|
6
|
+
end
|
7
|
+
|
8
|
+
def create_crowd_table(service_id, params, options = {})
|
9
|
+
post("services/#{service_id}/crowd_table", {crowd_table: options.merge(params)})[:crowd_table]
|
10
|
+
end
|
11
|
+
|
12
|
+
def update_crowd_table(service_id, crowd_id, *args)
|
13
|
+
put("services/#{service_id}/crowd_table", {crowd_table: options.merge(args[0])})[:crowd_table]
|
14
|
+
end
|
15
|
+
|
16
|
+
def delete_crowd_table(service_id, crowd_id)
|
17
|
+
boolean_from_response :delete, "services/#{service_id}/crowd_table", options
|
18
|
+
end
|
19
|
+
|
20
|
+
def copy_crowd_table(service_id, services_ids)
|
21
|
+
boolean_from_response :post, "services/#{service_id}/crowd_table/copy/#{services_ids}", options
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module TurbaKit
|
2
|
+
class Client
|
3
|
+
module Links
|
4
|
+
def service_link(service_id, link_id)
|
5
|
+
get("services/#{service_id}/links/#{link_id}")[:link]
|
6
|
+
end
|
7
|
+
|
8
|
+
def service_links(service_id)
|
9
|
+
get("services/#{service_id}/links")[:links]
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_link(service_id, params, options = {})
|
13
|
+
# params = {text: text, url: url}
|
14
|
+
post("services/#{service_id}/links", {link: options.merge(params)})[:link]
|
15
|
+
end
|
16
|
+
|
17
|
+
def update_link(service_id, link_id, *args)
|
18
|
+
put("services/#{service_id}/links/#{link_id}", {link: options.merge(args[0])})[:link]
|
19
|
+
end
|
20
|
+
|
21
|
+
def delete_link(service_id, link_id)
|
22
|
+
boolean_from_response :delete, "services/#{service_id}/links/#{link_id}", options
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module TurbaKit
|
2
|
+
class Client
|
3
|
+
module Migrations
|
4
|
+
def create_service_child(service_id)
|
5
|
+
params = {origin_id: service_id, migration: 'add_new_child'}
|
6
|
+
post("migrations", options.merge(params))
|
7
|
+
end
|
8
|
+
|
9
|
+
def create_migration(params)
|
10
|
+
p params
|
11
|
+
post("migrations", params)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module TurbaKit
|
2
|
+
class Client
|
3
|
+
module Notifications
|
4
|
+
def service_notification(service_id, notification_id)
|
5
|
+
get("services/#{service_id}/notifications/#{notification_id}")[:notification]
|
6
|
+
end
|
7
|
+
|
8
|
+
def service_notifications(service_id)
|
9
|
+
get("services/#{service_id}/notifications")[:notifications]
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_notification(service_id, params, options = {})
|
13
|
+
# params = {text: text}
|
14
|
+
post("services/#{service_id}/notifications", {notification: options.merge(params)})[:notification]
|
15
|
+
end
|
16
|
+
|
17
|
+
def update_notification(service_id, notification_id, *args)
|
18
|
+
put("services/#{service_id}/notifications/#{notification_id}", {notification: options.merge(args[0])})[:notification]
|
19
|
+
end
|
20
|
+
|
21
|
+
def delete_notification(service_id, notification_id)
|
22
|
+
boolean_from_response :delete, "services/#{service_id}/notifications/#{notification_id}", options
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module TurbaKit
|
2
|
+
class Client
|
3
|
+
module Organismes
|
4
|
+
def organisme(id_or_uri_id, *args)
|
5
|
+
get("organismes/#{id_or_uri_id}?#{query_string(args)}")[:organisme]
|
6
|
+
end
|
7
|
+
|
8
|
+
def organismes(*args)
|
9
|
+
get("organismes?#{query_string(args)}")[:organismes]
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_organisme(params)
|
13
|
+
params = {organisme: params}
|
14
|
+
post("organismes", options.merge(params))[:organisme]
|
15
|
+
end
|
16
|
+
|
17
|
+
def delete_organisme(id_or_uri_id)
|
18
|
+
boolean_from_response :delete, "organismes/#{id_or_uri_id}", options
|
19
|
+
end
|
20
|
+
|
21
|
+
def search_organisme(query, *args)
|
22
|
+
get("organismes?q=#{query}&#{query_string(args)}")[:organismes]
|
23
|
+
end
|
24
|
+
|
25
|
+
# Update an organisme
|
26
|
+
#
|
27
|
+
# @param id_or_uri_id [String] ID of the organisme
|
28
|
+
# @param params [Hash] A customizable set of params.
|
29
|
+
# @option organisme_params [String] :title Category title.
|
30
|
+
# @option organisme_params [String] :url Category URL.
|
31
|
+
# @option organisme_params [String] :country_code Category country code.
|
32
|
+
# @return [Sawyer::Resource] The updated organisme
|
33
|
+
# @see https://github.com/turba-webservices/api-documentation/blob/master/v2/sections/organismes.md#update-organisme
|
34
|
+
# @example Change the title of Category xxxxxx
|
35
|
+
# TurbaKit.update_issue("xxxxxx", {title: "A new title"})
|
36
|
+
def update_organisme(id_or_uri_id, organisme_params = {})
|
37
|
+
put("organismes/#{id_or_uri_id}", options.merge({organisme: organisme_params}))[:organisme]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module TurbaKit
|
2
|
+
class Client
|
3
|
+
module Phonenumbers
|
4
|
+
def service_phonenumber(service_id, phonenumber_id)
|
5
|
+
get("services/#{service_id}/phonenumbers/#{phonenumber_id}")[:phonenumber]
|
6
|
+
end
|
7
|
+
|
8
|
+
def service_phonenumbers(service_id)
|
9
|
+
get("services/#{service_id}/phonenumbers")[:phonenumbers]
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_phonenumber(service_id, params, options = {})
|
13
|
+
# params = {number: number, text: text}
|
14
|
+
post("services/#{service_id}/phonenumbers", {phonenumber: options.merge(params)})[:phonenumber]
|
15
|
+
end
|
16
|
+
|
17
|
+
def update_phonenumber(service_id, phonenumber_id, *args)
|
18
|
+
put("services/#{service_id}/phonenumbers/#{phonenumber_id}", {phonenumber: options.merge(args[0])})[:phonenumber]
|
19
|
+
end
|
20
|
+
|
21
|
+
def delete_phonenumber(service_id, phonenumber_id)
|
22
|
+
boolean_from_response :delete, "services/#{service_id}/phonenumbers/#{phonenumber_id}", options
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module TurbaKit
|
2
|
+
class Client
|
3
|
+
module Places
|
4
|
+
def service_place(service_id, place_id)
|
5
|
+
get("services/#{service_id}/places/#{place_id}")[:place]
|
6
|
+
end
|
7
|
+
|
8
|
+
def service_places(service_id)
|
9
|
+
get("services/#{service_id}/places")[:places]
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_place(service_id, params, options = {})
|
13
|
+
# params = {text: text, country: country, city: city}
|
14
|
+
post("services/#{service_id}/places", {place: options.merge(params)})[:place]
|
15
|
+
end
|
16
|
+
|
17
|
+
def update_place(service_id, place_id, *args)
|
18
|
+
put("services/#{service_id}/places/#{place_id}", {place: options.merge(args[0])})[:place]
|
19
|
+
end
|
20
|
+
|
21
|
+
def delete_place(service_id, place_id)
|
22
|
+
boolean_from_response :delete, "services/#{service_id}/places/#{place_id}", options
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module TurbaKit
|
2
|
+
class Client
|
3
|
+
module Services
|
4
|
+
def service(id_or_uri_id, *args)
|
5
|
+
get("services/#{id_or_uri_id}?#{query_string(args)}")[:service]
|
6
|
+
end
|
7
|
+
|
8
|
+
def services(*args)
|
9
|
+
get("services?#{query_string(args)}")[:services]
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_service(params)
|
13
|
+
params = {service: params}
|
14
|
+
post("services", options.merge(params))[:service]
|
15
|
+
end
|
16
|
+
|
17
|
+
def delete_service(id_or_uri_id)
|
18
|
+
boolean_from_response :delete, "services/#{id_or_uri_id}", options
|
19
|
+
end
|
20
|
+
|
21
|
+
def search_service(query, *args)
|
22
|
+
get("services?q=#{query}&#{query_string(args)}")[:services]
|
23
|
+
end
|
24
|
+
|
25
|
+
# Update a service
|
26
|
+
#
|
27
|
+
# @param id_or_uri_id [String] ID of the service
|
28
|
+
# @param params [Hash] A customizable set of params.
|
29
|
+
# @option service_params [String] :title Category title.
|
30
|
+
# @option service_params [String] :url Category URL.
|
31
|
+
# @option service_params [String] :country_code Category country code.
|
32
|
+
# @return [Sawyer::Resource] The updated service
|
33
|
+
# @see https://github.com/turba-webservices/api-documentation/blob/master/v2/sections/services.md#update-service
|
34
|
+
# @example Change the title of Category xxxxxx
|
35
|
+
# TurbaKit.update_issue("xxxxxx", {title: "A new title"})
|
36
|
+
def update_service(id_or_uri_id, service_params = {})
|
37
|
+
put("services/#{id_or_uri_id}", options.merge({service: service_params}))[:service]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module TurbaKit
|
2
|
+
class Client
|
3
|
+
module Tips
|
4
|
+
def service_tip(service_id, tip_id)
|
5
|
+
get("services/#{service_id}/tips/#{tip_id}")[:tip]
|
6
|
+
end
|
7
|
+
|
8
|
+
def service_tips(service_id)
|
9
|
+
get("services/#{service_id}/tips")[:tips]
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_tip(service_id, params, options = {})
|
13
|
+
# params = {title: title, text: text}
|
14
|
+
post("services/#{service_id}/tips", {tip: options.merge(params)})[:tip]
|
15
|
+
end
|
16
|
+
|
17
|
+
def update_tip(service_id, tip_id, *args)
|
18
|
+
put("services/#{service_id}/tips/#{tip_id}", {tip: options.merge(args[0])})[:tip]
|
19
|
+
end
|
20
|
+
|
21
|
+
def delete_tip(service_id, tip_id)
|
22
|
+
boolean_from_response :delete, "services/#{service_id}/tips/#{tip_id}", options
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,168 @@
|
|
1
|
+
require 'sawyer'
|
2
|
+
require 'turba_kit/arguments'
|
3
|
+
require 'turba_kit/authentication'
|
4
|
+
require 'turba_kit/configurable'
|
5
|
+
require 'turba_kit/client/categories'
|
6
|
+
require 'turba_kit/client/organismes'
|
7
|
+
require 'turba_kit/client/services'
|
8
|
+
require 'turba_kit/client/countries'
|
9
|
+
require 'turba_kit/client/phonenumbers'
|
10
|
+
require 'turba_kit/client/contents'
|
11
|
+
require 'turba_kit/client/links'
|
12
|
+
require 'turba_kit/client/tips'
|
13
|
+
require 'turba_kit/client/places'
|
14
|
+
require 'turba_kit/client/notifications'
|
15
|
+
require 'turba_kit/client/crowd_table'
|
16
|
+
require 'turba_kit/client/comments'
|
17
|
+
require 'turba_kit/client/checkins'
|
18
|
+
require 'turba_kit/client/search'
|
19
|
+
require 'turba_kit/client/migrations'
|
20
|
+
|
21
|
+
module TurbaKit
|
22
|
+
|
23
|
+
# Client for the Turba API
|
24
|
+
#
|
25
|
+
# @see http://github.com/turba-webservices/turba_kit
|
26
|
+
class Client
|
27
|
+
|
28
|
+
include TurbaKit::Authentication
|
29
|
+
include TurbaKit::Configurable
|
30
|
+
include TurbaKit::Client::Categories
|
31
|
+
include TurbaKit::Client::Organismes
|
32
|
+
include TurbaKit::Client::Services
|
33
|
+
include TurbaKit::Client::Countries
|
34
|
+
include TurbaKit::Client::Phonenumbers
|
35
|
+
include TurbaKit::Client::Contents
|
36
|
+
include TurbaKit::Client::Links
|
37
|
+
include TurbaKit::Client::Tips
|
38
|
+
include TurbaKit::Client::Places
|
39
|
+
include TurbaKit::Client::Notifications
|
40
|
+
include TurbaKit::Client::CrowdTable
|
41
|
+
include TurbaKit::Client::Comments
|
42
|
+
include TurbaKit::Client::Checkins
|
43
|
+
include TurbaKit::Client::Search
|
44
|
+
include TurbaKit::Client::Migrations
|
45
|
+
|
46
|
+
# Header keys that can be passed in options hash to {#get},{#head}
|
47
|
+
CONVENIENCE_HEADERS = Set.new([:accept, :content_type])
|
48
|
+
|
49
|
+
def initialize(options = {})
|
50
|
+
TurbaKit::Configurable.keys.each do |key|
|
51
|
+
instance_variable_set(:"@#{key}", options[key] || TurbaKit.instance_variable_get(:"@#{key}"))
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Compares client options to a Hash of requested options
|
56
|
+
#
|
57
|
+
# @param opts [Hash] Options to compare with current client options
|
58
|
+
# @return [Boolean]
|
59
|
+
def same_options?(opts)
|
60
|
+
opts.hash == options.hash
|
61
|
+
end
|
62
|
+
|
63
|
+
# Text representation of the client, masking api key
|
64
|
+
#
|
65
|
+
# @return [String]
|
66
|
+
def inspect
|
67
|
+
inspected = super
|
68
|
+
|
69
|
+
# Only show last 4 of api key, secret
|
70
|
+
if @api_key
|
71
|
+
inspected = inspected.gsub! @api_key, "#{'*'*36}#{@api_key[36..-1]}"
|
72
|
+
end
|
73
|
+
|
74
|
+
inspected
|
75
|
+
end
|
76
|
+
|
77
|
+
def get(url, options = {})
|
78
|
+
request :get, url, parse_query_and_convenience_headers(options)
|
79
|
+
end
|
80
|
+
|
81
|
+
def post(url, options = {})
|
82
|
+
request :post, url, options
|
83
|
+
end
|
84
|
+
|
85
|
+
def put(url, options = {})
|
86
|
+
request :put, url, options
|
87
|
+
end
|
88
|
+
|
89
|
+
def delete(url, options = {})
|
90
|
+
request :delete, url, options
|
91
|
+
end
|
92
|
+
|
93
|
+
def last_response
|
94
|
+
@last_response if defined? @last_response
|
95
|
+
end
|
96
|
+
|
97
|
+
def agent
|
98
|
+
@agent ||= Sawyer::Agent.new("#{api_endpoint}#{api_version}/", sawyer_options) do |http|
|
99
|
+
http.headers[:accept] = default_media_type
|
100
|
+
http.headers[:user_agent] = user_agent
|
101
|
+
http.headers['X-API-KEY'] = api_key
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
# Fetch the root resource for the API
|
106
|
+
#
|
107
|
+
# @return [Sawyer::Resource]
|
108
|
+
def root
|
109
|
+
get "/"
|
110
|
+
end
|
111
|
+
|
112
|
+
private
|
113
|
+
|
114
|
+
def query_string(*args)
|
115
|
+
return if args.flatten.blank?
|
116
|
+
query_string = ''
|
117
|
+
arguments = TurbaKit::Arguments.new(args).flatten[0]
|
118
|
+
query_string = arguments.map {|k, v| "#{k}=#{v}"}.join('&')
|
119
|
+
query_string
|
120
|
+
end
|
121
|
+
|
122
|
+
def boolean_from_response(method, path, options = {})
|
123
|
+
request(method, path, options)
|
124
|
+
@last_response.status == 204
|
125
|
+
rescue TurbaKit::NotFound
|
126
|
+
false
|
127
|
+
end
|
128
|
+
|
129
|
+
def sawyer_options
|
130
|
+
opts = { links_parser: Sawyer::LinkParsers::Simple.new }
|
131
|
+
conn_opts = @connection_options
|
132
|
+
conn_opts[:builder] = @middleware if @middleware
|
133
|
+
conn_opts[:proxy] = @proxy if @proxy
|
134
|
+
opts[:faraday] = Faraday.new(conn_opts)
|
135
|
+
# opts[:serializer] = Sawyer::Serializer.message_pack
|
136
|
+
opts
|
137
|
+
end
|
138
|
+
|
139
|
+
def parse_query_and_convenience_headers(options)
|
140
|
+
headers = options.fetch(:headers, {})
|
141
|
+
CONVENIENCE_HEADERS.each do |h|
|
142
|
+
if header = options.delete(h)
|
143
|
+
headers[h] = header
|
144
|
+
end
|
145
|
+
end
|
146
|
+
query = options.delete(:query)
|
147
|
+
opts = { query: options }
|
148
|
+
opts[:query].merge!(query) if query && query.is_a?(Hash)
|
149
|
+
opts[:headers] = headers unless headers.empty?
|
150
|
+
|
151
|
+
opts
|
152
|
+
end
|
153
|
+
|
154
|
+
def request(method, path, data, options = {})
|
155
|
+
if data.is_a?(Hash)
|
156
|
+
options[:query] = data.delete(:query) || {}
|
157
|
+
options[:headers] = data.delete(:headers) || {}
|
158
|
+
if accept = data.delete(:accept)
|
159
|
+
options[:headers][:accept] = accept
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
@last_response = response = agent.call(method, URI::Parser.new.escape(path.to_s), data, options)
|
164
|
+
|
165
|
+
response.data
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|