bwapi 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.travis.yml +10 -0
  4. data/Gemfile +6 -0
  5. data/LICENCE.md +20 -0
  6. data/README.md +15 -0
  7. data/bin/bwapi +2 -0
  8. data/bwapi.gemspec +26 -0
  9. data/lib/bwapi.rb +28 -0
  10. data/lib/bwapi/authentication.rb +42 -0
  11. data/lib/bwapi/client.rb +54 -0
  12. data/lib/bwapi/client/admin.rb +35 -0
  13. data/lib/bwapi/client/admin/become.rb +21 -0
  14. data/lib/bwapi/client/admin/search.rb +41 -0
  15. data/lib/bwapi/client/admin/sub_clients.rb +109 -0
  16. data/lib/bwapi/client/admin/users.rb +95 -0
  17. data/lib/bwapi/client/admin/users/sharing.rb +35 -0
  18. data/lib/bwapi/client/brandwatch.rb +33 -0
  19. data/lib/bwapi/client/brandwatch/become.rb +19 -0
  20. data/lib/bwapi/client/brandwatch/client_modules.rb +26 -0
  21. data/lib/bwapi/client/client.rb +22 -0
  22. data/lib/bwapi/client/error_codes.rb +14 -0
  23. data/lib/bwapi/client/filters.rb +14 -0
  24. data/lib/bwapi/client/logout.rb +24 -0
  25. data/lib/bwapi/client/me.rb +42 -0
  26. data/lib/bwapi/client/oauth.rb +78 -0
  27. data/lib/bwapi/client/ping.rb +42 -0
  28. data/lib/bwapi/client/projects.rb +94 -0
  29. data/lib/bwapi/client/projects/categories.rb +70 -0
  30. data/lib/bwapi/client/projects/data.rb +62 -0
  31. data/lib/bwapi/client/projects/data_download.rb +49 -0
  32. data/lib/bwapi/client/projects/facebook_queries.rb +55 -0
  33. data/lib/bwapi/client/projects/queries.rb +99 -0
  34. data/lib/bwapi/client/projects/queries/backfill.rb +63 -0
  35. data/lib/bwapi/client/projects/queries/date_range.rb +67 -0
  36. data/lib/bwapi/client/projects/queries/mentions.rb +53 -0
  37. data/lib/bwapi/client/projects/query_groups.rb +70 -0
  38. data/lib/bwapi/client/projects/sharing.rb +57 -0
  39. data/lib/bwapi/client/projects/signals.rb +39 -0
  40. data/lib/bwapi/client/projects/summary.rb +21 -0
  41. data/lib/bwapi/client/projects/tags.rb +61 -0
  42. data/lib/bwapi/client/projects/users.rb +17 -0
  43. data/lib/bwapi/client/projects/workflow.rb +17 -0
  44. data/lib/bwapi/client/query_validation.rb +27 -0
  45. data/lib/bwapi/client/sso.rb +18 -0
  46. data/lib/bwapi/client/test_search.rb +14 -0
  47. data/lib/bwapi/client/user.rb +58 -0
  48. data/lib/bwapi/client/user/notifications.rb +36 -0
  49. data/lib/bwapi/configuration.rb +59 -0
  50. data/lib/bwapi/connection.rb +33 -0
  51. data/lib/bwapi/error.rb +42 -0
  52. data/lib/bwapi/request.rb +93 -0
  53. data/lib/bwapi/version.rb +3 -0
  54. data/lib/faraday/response/brandwatch_error.rb +25 -0
  55. data/lib/faraday/utils/utils.rb +25 -0
  56. data/spec/bwapi/authentication_spec.rb +57 -0
  57. data/spec/bwapi/client_spec.rb +205 -0
  58. data/spec/bwapi_spec.rb +23 -0
  59. data/spec/fixtures/.netrc +3 -0
  60. data/spec/helper.rb +12 -0
  61. metadata +178 -0
@@ -0,0 +1,95 @@
1
+ require 'bwapi/client/admin/users/sharing'
2
+
3
+ module BWAPI
4
+ class Client
5
+ module Admin
6
+ module Clients
7
+ module Users
8
+
9
+ # Get all users for client
10
+ #
11
+ # @param id [Integer] Id of the client
12
+ # @param opts [Hash] options hash of parameters
13
+ # @option opts [Integer] page Page of projects to retrieve
14
+ # @option opts [Integer] pageSize Results per page of results
15
+ # @return [Hashie::Mash] All client users
16
+ def client_users id, opts={}
17
+ get "admin/clients/#{id}/users", opts
18
+ end
19
+
20
+ # Get a specific user in client
21
+ #
22
+ # @param client_id [Integer] Id of the client
23
+ # @param user_id [Integer] Id of the user
24
+ # @return [Hashie::Mash] Specific client user
25
+ def get_client_user client_id, user_id
26
+ get "admin/clients/#{client_id}/users/#{user_id}"
27
+ end
28
+ alias :get_user :get_client_user
29
+
30
+
31
+ # Create a new client user
32
+ #
33
+ # @param id [Integer] Id of the client
34
+ # @param opts [Hash] options Hash of parameters
35
+ # @option opts [Integer] id Id of the user
36
+ # @option opts [Hash] tags The users assigned tags
37
+ # @option opts [String] passwordConfirmation The confirmed password
38
+ # @option opts [Boolean] enabled The status of the user
39
+ # @option opts [String] lastName The last name of the user
40
+ # @option opts [String] phone The users phone number
41
+ # @option opts [String] department The users department
42
+ # @option opts [String] job The users job
43
+ # @option opts [String] messenger The users IM details
44
+ # @option opts [String] password The password of the user
45
+ # @option opts [Integer] clientId The users client id
46
+ # @option opts [String] username The users username
47
+ # @option opts [String] address The users address
48
+ # @option opts [String] uiRole The users ui role
49
+ # @option opts [Array] apiRole The users api role
50
+ # @option opts [String] firstName The users first name
51
+ # @option opts [String] mobile The users mobile number
52
+ # @option opts [Date] creationDate Date the user was created on
53
+ # @return [Hashie::Mash] New user
54
+ def create_client_user id, opts
55
+ post "admin/clients/#{id}/users", opts
56
+ end
57
+ alias :create_user :create_client_user
58
+
59
+ # Update an existing client user
60
+ #
61
+ # @param client_id [Integer] Id of the client
62
+ # @param user_id [Integer] Id of the user
63
+ # @param opts [Hash] options Hash of parameters
64
+ # @option opts [Integer] id Id of the user
65
+ # @option opts [Hash] tags The users assigned tags
66
+ # @option opts [String] passwordConfirmation The confirmed password
67
+ # @option opts [Boolean] enabled The status of the user
68
+ # @option opts [String] lastName The last name of the user
69
+ # @option opts [String] phone The users phone number
70
+ # @option opts [String] department The users department
71
+ # @option opts [String] job The users job
72
+ # @option opts [String] messenger The users IM details
73
+ # @option opts [String] password The password of the user
74
+ # @option opts [Integer] clientId The users client id
75
+ # @option opts [String] username The users username
76
+ # @option opts [String] address The users address
77
+ # @option opts [String] uiRole The users ui role
78
+ # @option opts [Array] apiRole The users api role
79
+ # @option opts [String] firstName The users first name
80
+ # @option opts [String] mobile The users mobile number
81
+ # @option opts [Date] creationDate Date the user was created on
82
+ # @return [Hashie::Mash] New user
83
+ def update_client_user client_id, user_id, opts
84
+ put "admin/clients/#{client_id}/users/#{user_id}", opts
85
+ end
86
+ alias :update_user :update_client_user
87
+
88
+
89
+ include BWAPI::Client::Admin::Clients::Users::Sharing
90
+
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,35 @@
1
+ module BWAPI
2
+ class Client
3
+ module Admin
4
+ module Clients
5
+ module Users
6
+ module Sharing
7
+
8
+ # Get a list of project shares for user
9
+ #
10
+ # @param client_id [Integer] Id of the client
11
+ # @param user_id [Integer] Id of the user
12
+ # @return [Hashie::Mash] All shares for client user
13
+ def client_users_sharing client_id, user_id
14
+ get "admin/client/#{client_id}/users/#{user_id}/sharing"
15
+ end
16
+ alias :users_sharing :client_users_sharing
17
+
18
+ # Update a list of project shares for user
19
+ #
20
+ # @param client_id [Integer] Id of the client
21
+ # @param user_id [Integer] Id of the user
22
+ # @param opts [Hash] options Hash of parameters
23
+ # @option opts [Array] ProjectShareDTO The shares of the user
24
+ # @return [Hashie::Mash] Updated shares for client user
25
+ def update_client_users_sharing client_id, user_id, opts
26
+ get "admin/client/#{client_id}/users/#{user_id}/sharing", opts
27
+ end
28
+ alias :update_users_sharing :update_client_users_sharing
29
+
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,33 @@
1
+ require 'bwapi/client/brandwatch/become'
2
+ require 'bwapi/client/brandwatch/client_modules'
3
+
4
+ module BWAPI
5
+ class Client
6
+ module Brandwatch
7
+
8
+ # Create a new data download in project
9
+ #
10
+ # @param id [Integer] Id of project
11
+ # @param opts [Hash] options hash of parameters
12
+ # @option opts [Integer] projectId Id of the project
13
+ # @option opts [Integer] id Id of the data download
14
+ # @option opts [Integer] queryId Id of the query
15
+ # @option opts [Int] percentComplete The percentage complete of data download
16
+ # @option opts [String] status The status of the download
17
+ # @option opts [String] queryName The query name of the data download
18
+ # @option opts [Date] endDate The end date of the data download
19
+ # @option opts [Date] requestDate The request date of the data download
20
+ # @option opts [String] downloadLinkXLS The link to download the XLS format
21
+ # @option opts [String] downloadLinkCSV The link to download the CSV format
22
+ # @option opts [Array] additionalColumns The additional columns for the data download
23
+ # @return [Hashie::Mash] New data download
24
+ def brandwatch_data_download id, opts
25
+ post "brandwatch/#{project_id}/datadownload", opts
26
+ end
27
+
28
+ include BWAPI::Client::Brandwatch::Become
29
+ include BWAPI::Client::Brandwatch::ClientModules
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,19 @@
1
+ module BWAPI
2
+ class Client
3
+ module Brandwatch
4
+ module Become
5
+
6
+ # Become user
7
+ #
8
+ # @note must be a super admin user
9
+ #
10
+ # @param id [Integer] The user id
11
+ # @return [Hashie::Mash] User credentials
12
+ def brandwatch_become id
13
+ get "brandwatch/become/#{id}"
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,26 @@
1
+ module BWAPI
2
+ class Client
3
+ module Brandwatch
4
+ module ClientModules
5
+
6
+ # Get a specific clients modules
7
+ #
8
+ # @param id [Integer] Id of the client
9
+ # @return [Hashie::Mash] Specific clients modules
10
+ def brandwatch_client_modules id
11
+ get "brandwatch/clientModules/#{id}"
12
+ end
13
+
14
+ # Update brandwatch client modules
15
+ #
16
+ # @param opts [Hash] options Hash of parameters
17
+ # @option opts [Array] ClientModules Client Modules to edit
18
+ # @return [Hashie::Mash] Update client modules
19
+ def update_brandwatch_client_module opts
20
+ put "brandwatch/clientModules", opts
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,22 @@
1
+ module BWAPI
2
+ class Client
3
+ module Client
4
+
5
+ # Get the current users client
6
+ #
7
+ # @return [Hashie::Mash] Client information
8
+ def client
9
+ get "client"
10
+ end
11
+
12
+ # Get the current users client modules
13
+ #
14
+ # @return [Hashie::Mash] Client module information
15
+ def client_modules
16
+ get "client/modules"
17
+ end
18
+ alias :modules :client_modules
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,14 @@
1
+ module BWAPI
2
+ class Client
3
+ module ErrorCodes
4
+
5
+ # Get the api error codes
6
+ #
7
+ # @return [Hashie::Mash] Error codes information
8
+ def error_codes
9
+ get "errorCodes"
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module BWAPI
2
+ class Client
3
+ module Filters
4
+
5
+ # Get the currently supported filters
6
+ #
7
+ # @return [Hashie::Mash] Current filters
8
+ def filters
9
+ get "filters"
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,24 @@
1
+ module BWAPI
2
+ class Client
3
+ module Logout
4
+
5
+ # Logout user
6
+ #
7
+ # @return [Hashie::Mash] Logout information
8
+ def logout
9
+ begin
10
+ get "logout"
11
+ ensure
12
+ self.username = nil
13
+ self.password = nil
14
+ self.access_token = nil
15
+ self.client_id = nil
16
+ self.access_token = nil
17
+ self.refresh_token = nil
18
+ self.expires_in = nil
19
+ end
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,42 @@
1
+ module BWAPI
2
+ class Client
3
+ module Me
4
+
5
+ # Get user information
6
+ #
7
+ # @return [Hashie::Mash] User information
8
+ def me
9
+ get 'me'
10
+ end
11
+
12
+ # Get users client name
13
+ #
14
+ # @return [String] Users client name
15
+ def client_name
16
+ me.client.name
17
+ end
18
+
19
+ # Get users client id
20
+ #
21
+ # @return [String] Users client id
22
+ def client_id
23
+ me.client.id
24
+ end
25
+
26
+ # Get users client id
27
+ #
28
+ # @return [String] Users client id
29
+ def client_id
30
+ me.client.id
31
+ end
32
+
33
+ # Get users id
34
+ #
35
+ # @return [String] Users role
36
+ def user_id
37
+ me.id
38
+ end
39
+
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,78 @@
1
+ module BWAPI
2
+ class Client
3
+ module OAuth
4
+
5
+ # Authenticate a user
6
+ #
7
+ # @param opts [Hash] options hash of parameters
8
+ # @option opts [String] username User name of user
9
+ # @option opts [String] password User name of user
10
+ # @option opts [String] grant_type Grant type of user
11
+ # @option opts [String] client_secret Client secret
12
+ # @option opts [String] client_id Client id
13
+ # @option opts [String] force_urlencoded Force urlencoded
14
+ def oauth_token opts={}
15
+ opts = {
16
+ username: username,
17
+ password: password,
18
+ grant_type: 'password',
19
+ client_secret: client_secret,
20
+ client_id: client_id,
21
+ force_urlencoded: true
22
+ }.merge opts
23
+
24
+ begin
25
+ creds = post 'oauth/token', opts
26
+ rescue BWAPI::BWError
27
+ return false
28
+ else
29
+ self.access_token = creds.access_token
30
+ self.expires_in = creds.expires_in
31
+
32
+ if application_client?
33
+ self.refresh_token = creds.refresh_token
34
+ end
35
+
36
+ return true
37
+ end
38
+ end
39
+ alias :login :oauth_token
40
+
41
+ # Refresh a authenticated users oauth_token
42
+ #
43
+ # @param opts [Hash] options hash of parameters
44
+ # @option opts [String] username User name of user
45
+ # @option opts [String] password User name of user
46
+ # @option opts [String] grant_type Grant type of user
47
+ # @option opts [String] client_id Client id
48
+ # @option opts [String] force_urlencoded Force urlencoded
49
+ def oauth_refresh_token opts={}
50
+ opts = {
51
+ username: username,
52
+ password: password,
53
+ refresh_token: refresh_token,
54
+ grant_type: 'refresh_token',
55
+ client_id: client_id,
56
+ force_urlencoded: true
57
+ }.merge opts
58
+
59
+ begin
60
+ creds = post 'oauth/token', opts
61
+ rescue BWAPI::BWError
62
+ return false
63
+ else
64
+ self.access_token = creds.access_token
65
+ self.expires_in = creds.expires_in
66
+
67
+ if application_client?
68
+ self.access_token = creds.access_token
69
+ end
70
+
71
+ return true
72
+ end
73
+ end
74
+ alias :refresh :oauth_refresh_token
75
+
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,42 @@
1
+ module BWAPI
2
+ class Client
3
+ module Ping
4
+
5
+ # Get ping checking access and available HTTP verbs
6
+ #
7
+ # @return [Hashie::Mash] User id and name
8
+ def get_ping
9
+ get "ping"
10
+ end
11
+
12
+ # Post ping checking access and available HTTP verbs
13
+ #
14
+ # @return [Hashie::Mash] User id and name
15
+ def create_ping
16
+ post "ping"
17
+ end
18
+
19
+ # Put ping checking access and available HTTP verbs
20
+ #
21
+ # @return [Hashie::Mash] User id and name
22
+ def update_ping
23
+ put "ping"
24
+ end
25
+
26
+ # Patch ping checking access and available HTTP verbs
27
+ #
28
+ # @return [Hashie::Mash] User id and name
29
+ def patch_ping
30
+ patch "ping"
31
+ end
32
+
33
+ # Delete ping checking access and available HTTP verbs
34
+ #
35
+ # @return [Hashie::Mash] User id and name
36
+ def delete_ping
37
+ delete "ping"
38
+ end
39
+
40
+ end
41
+ end
42
+ end