turba_kit 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|