followupboss_client 1.0.0

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.
Files changed (65) hide show
  1. checksums.yaml +7 -0
  2. data/.env.example +12 -0
  3. data/.gitignore +18 -0
  4. data/.rspec +2 -0
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/.tool-versions +1 -0
  8. data/.travis.yml +9 -0
  9. data/CHANGELOG.md +149 -0
  10. data/CODE_OF_CONDUCT.md +49 -0
  11. data/Gemfile +4 -0
  12. data/LICENSE.txt +22 -0
  13. data/README.md +882 -0
  14. data/Rakefile +6 -0
  15. data/bin/console +14 -0
  16. data/bin/setup +8 -0
  17. data/followupboss_client.gemspec +43 -0
  18. data/lib/followupboss_client.rb +16 -0
  19. data/lib/fub_client/action_plan.rb +5 -0
  20. data/lib/fub_client/appointment.rb +42 -0
  21. data/lib/fub_client/appointment_outcome.rb +51 -0
  22. data/lib/fub_client/appointment_type.rb +51 -0
  23. data/lib/fub_client/call.rb +4 -0
  24. data/lib/fub_client/client.rb +200 -0
  25. data/lib/fub_client/compatibility.rb +18 -0
  26. data/lib/fub_client/configuration.rb +54 -0
  27. data/lib/fub_client/cookie_client.rb +190 -0
  28. data/lib/fub_client/custom_field.rb +5 -0
  29. data/lib/fub_client/deal.rb +41 -0
  30. data/lib/fub_client/deal_attachment.rb +61 -0
  31. data/lib/fub_client/deal_custom_field.rb +47 -0
  32. data/lib/fub_client/em_event.rb +5 -0
  33. data/lib/fub_client/email_template.rb +5 -0
  34. data/lib/fub_client/event.rb +8 -0
  35. data/lib/fub_client/group.rb +58 -0
  36. data/lib/fub_client/her_patch.rb +101 -0
  37. data/lib/fub_client/identity.rb +33 -0
  38. data/lib/fub_client/message.rb +41 -0
  39. data/lib/fub_client/middleware/authentication.rb +26 -0
  40. data/lib/fub_client/middleware/cookie_authentication.rb +61 -0
  41. data/lib/fub_client/middleware/parser.rb +59 -0
  42. data/lib/fub_client/middleware.rb +8 -0
  43. data/lib/fub_client/note.rb +4 -0
  44. data/lib/fub_client/people_relationship.rb +34 -0
  45. data/lib/fub_client/person.rb +5 -0
  46. data/lib/fub_client/person_attachment.rb +50 -0
  47. data/lib/fub_client/pipeline.rb +45 -0
  48. data/lib/fub_client/property.rb +26 -0
  49. data/lib/fub_client/rails8_patch.rb +39 -0
  50. data/lib/fub_client/resource.rb +33 -0
  51. data/lib/fub_client/shared_inbox.rb +389 -0
  52. data/lib/fub_client/smart_list.rb +5 -0
  53. data/lib/fub_client/stage.rb +39 -0
  54. data/lib/fub_client/task.rb +18 -0
  55. data/lib/fub_client/team.rb +65 -0
  56. data/lib/fub_client/team_inbox.rb +65 -0
  57. data/lib/fub_client/text_message.rb +46 -0
  58. data/lib/fub_client/text_message_template.rb +49 -0
  59. data/lib/fub_client/user.rb +4 -0
  60. data/lib/fub_client/version.rb +3 -0
  61. data/lib/fub_client/webhook.rb +47 -0
  62. data/lib/fub_client.rb +61 -0
  63. data/scripts/test_api.rb +110 -0
  64. data/scripts/test_shared_inbox.rb +90 -0
  65. metadata +335 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f4e09dc895a09a254ed74cc7386a63c7d9e6fd4122c7aebe84a510111c79a44c
4
+ data.tar.gz: f2a2891e76c6ae01b836c70a56e0912327512b201639800eb591bfbc3f3552bb
5
+ SHA512:
6
+ metadata.gz: fd32c62a15dd9de0dc40ebb494f681d8651dfda05aea30f3e3a3ecb96b308b17b1afc85ead1786660deac7d822d24a4e6a5390811a27a9e17b8bf3a0977581df
7
+ data.tar.gz: 211789660757346070247a8a2a8618d73f682e3f6ee7f6e8b34c55ac5e53cd4f8bdd62c71c26250ad704cde3f07a7c7b24a9792e9e932176d34cda980a559728
data/.env.example ADDED
@@ -0,0 +1,12 @@
1
+ # FollowUpBoss API Credentials
2
+
3
+ # API Key Authentication (for regular endpoints)
4
+ FUB_API_KEY=your_api_key_here
5
+
6
+ # Cookie-based Authentication (for shared inbox endpoints)
7
+ FUB_EMAIL=your_email@example.com
8
+ FUB_PASSWORD=your_password_here
9
+ FUB_SUBDOMAIN=your_subdomain
10
+
11
+ # Debug mode (set to true to see debug messages)
12
+ DEBUG=false
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ # C9
11
+ .c9
12
+ # RubyMine
13
+ .idea
14
+ # Env
15
+ .env
16
+ # VCR
17
+ /spec/cassettes
18
+ scripts/test_with_real_credentials.rb
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ fub_client
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-3.4.1
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.4.1
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - 3.4.1
4
+ - 3.3.0
5
+ - 3.2.0
6
+ before_install: gem install bundler
7
+ cache: bundler
8
+ script:
9
+ - bundle exec rake spec
data/CHANGELOG.md ADDED
@@ -0,0 +1,149 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.0] - 2025-01-07
9
+
10
+ ### Major Release - Enhanced Fork
11
+
12
+ This is the first major release of the enhanced `followupboss_client` gem, a comprehensive fork and expansion of the original `fub_client` gem with significant improvements and new features.
13
+
14
+ ### Added
15
+
16
+ #### 🚀 Rails 8 Compatibility
17
+ - Automatic compatibility patches for Rails 8
18
+ - ActiveSupport::BasicObject compatibility fixes
19
+ - Her gem middleware compatibility patches
20
+ - JSON parsing compatibility improvements
21
+
22
+ #### 🔐 Secure Cookie Authentication
23
+ - New `CookieClient` class for advanced authentication
24
+ - Support for GIST-based encrypted cookie storage
25
+ - Integration with sync-my-cookie browser extension
26
+ - Kevast encryption/decryption support for secure cookie handling
27
+ - SharedInbox functionality requiring cookie authentication
28
+
29
+ #### 📧 Advanced Inbox Management
30
+ - `SharedInbox` resource with full CRUD operations
31
+ - `TeamInbox` resource for team-specific inbox management
32
+ - Inbox message and conversation management
33
+ - Inbox settings configuration
34
+
35
+ #### 📱 Comprehensive API Coverage
36
+ - **Core Resources**: Person, Deal, Property with enhanced methods
37
+ - **Communications**: Message, TextMessage, Call with advanced features
38
+ - **Tasks & Events**: Task, Event, Appointment with completion tracking
39
+ - **Templates & Automation**: EmailTemplate, TextMessageTemplate, ActionPlan
40
+ - **Teams & Users**: User, Team, Group with member management
41
+ - **Pipelines & Stages**: Pipeline, Stage with reordering and statistics
42
+ - **Attachments**: PersonAttachment, DealAttachment with upload/download
43
+ - **Custom Fields**: CustomField, DealCustomField management
44
+ - **Integration**: Webhook, SmartList support
45
+
46
+ #### 🛡️ Security Enhancements
47
+ - Secure credential management
48
+ - Environment variable configuration
49
+ - Encrypted cookie storage
50
+ - Proper authentication handling
51
+
52
+ #### 🔧 Enhanced Features
53
+ - Pagination support with `by_page` method
54
+ - Safe operations with error handling
55
+ - Method chaining for complex queries
56
+ - Batch processing capabilities
57
+ - Debug mode support
58
+ - Comprehensive error handling
59
+
60
+ #### 📚 Documentation & Examples
61
+ - Extensive README with usage examples
62
+ - Security best practices documentation
63
+ - Troubleshooting guide
64
+ - Example scripts for common operations
65
+ - Migration guide from original gem
66
+
67
+ ### Changed
68
+
69
+ #### 🏗️ Architecture Improvements
70
+ - Enhanced middleware system
71
+ - Improved authentication mechanisms
72
+ - Better error handling and reporting
73
+ - Optimized API request handling
74
+
75
+ #### 📦 Gem Structure
76
+ - Renamed from `fub_client` to `followupboss_client`
77
+ - Maintained backward compatibility with `FubClient` module
78
+ - Updated repository location to `connorgallopo/followupboss_client`
79
+ - Professional gem packaging and metadata
80
+
81
+ #### 🔄 Dependencies
82
+ - Updated to support Rails 7.1+ through Rails 8.x
83
+ - Enhanced Faraday compatibility (1.10.3 - 3.0)
84
+ - Improved Her gem integration
85
+ - Updated development dependencies
86
+
87
+ ### Technical Details
88
+
89
+ #### New Classes and Modules
90
+ - `FubClient::CookieClient` - Secure cookie authentication
91
+ - `FubClient::SharedInbox` - Shared inbox management
92
+ - `FubClient::TeamInbox` - Team inbox functionality
93
+ - `FubClient::Rails8Patch` - Rails 8 compatibility patches
94
+ - `FubClient::HerPatch` - Her gem compatibility fixes
95
+
96
+ #### Enhanced Resources
97
+ All existing resources have been enhanced with:
98
+ - Better error handling
99
+ - Improved pagination
100
+ - Enhanced relationship management
101
+ - Additional query methods
102
+ - Comprehensive documentation
103
+
104
+ #### Security Features
105
+ - Credential encryption and secure storage
106
+ - Environment-based configuration
107
+ - Secure cookie handling
108
+ - HTTPS enforcement recommendations
109
+
110
+ ### Migration from Original Gem
111
+
112
+ #### Installation Change
113
+ ```ruby
114
+ # Old
115
+ gem 'fub_client', git: 'https://github.com/original/fub_client.git'
116
+
117
+ # New
118
+ gem 'followupboss_client'
119
+ ```
120
+
121
+ #### Require Statement Change
122
+ ```ruby
123
+ # Old
124
+ require 'fub_client'
125
+
126
+ # New
127
+ require 'followupboss_client'
128
+ ```
129
+
130
+ #### API Usage (Unchanged)
131
+ All existing API usage remains the same:
132
+ ```ruby
133
+ FubClient.configure do |config|
134
+ config.api_key = 'your_api_key'
135
+ end
136
+
137
+ people = FubClient::Person.all
138
+ deals = FubClient::Deal.active
139
+ ```
140
+
141
+ ### Acknowledgments
142
+
143
+ This release builds upon the original work by Kyoto Kopz and represents a significant enhancement and modernization of the Follow Up Boss Ruby client library. Special thanks to the Ruby and Rails communities for their continued support and contributions.
144
+
145
+ ---
146
+
147
+ **For detailed usage examples and documentation, see the [README.md](README.md)**
148
+
149
+ **For security considerations and best practices, see the Security section in the README**
@@ -0,0 +1,49 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, and in the interest of
4
+ fostering an open and welcoming community, we pledge to respect all people who
5
+ contribute through reporting issues, posting feature requests, updating
6
+ documentation, submitting pull requests or patches, and other activities.
7
+
8
+ We are committed to making participation in this project a harassment-free
9
+ experience for everyone, regardless of level of experience, gender, gender
10
+ identity and expression, sexual orientation, disability, personal appearance,
11
+ body size, race, ethnicity, age, religion, or nationality.
12
+
13
+ Examples of unacceptable behavior by participants include:
14
+
15
+ * The use of sexualized language or imagery
16
+ * Personal attacks
17
+ * Trolling or insulting/derogatory comments
18
+ * Public or private harassment
19
+ * Publishing other's private information, such as physical or electronic
20
+ addresses, without explicit permission
21
+ * Other unethical or unprofessional conduct
22
+
23
+ Project maintainers have the right and responsibility to remove, edit, or
24
+ reject comments, commits, code, wiki edits, issues, and other contributions
25
+ that are not aligned to this Code of Conduct, or to ban temporarily or
26
+ permanently any contributor for other behaviors that they deem inappropriate,
27
+ threatening, offensive, or harmful.
28
+
29
+ By adopting this Code of Conduct, project maintainers commit themselves to
30
+ fairly and consistently applying these principles to every aspect of managing
31
+ this project. Project maintainers who do not follow or enforce the Code of
32
+ Conduct may be permanently removed from the project team.
33
+
34
+ This code of conduct applies both within project spaces and in public spaces
35
+ when an individual is representing the project or its community.
36
+
37
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
38
+ reported by contacting a project maintainer at kopz9999@gmail.com. All
39
+ complaints will be reviewed and investigated and will result in a response that
40
+ is deemed necessary and appropriate to the circumstances. Maintainers are
41
+ obligated to maintain confidentiality with regard to the reporter of an
42
+ incident.
43
+
44
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
45
+ version 1.3.0, available at
46
+ [http://contributor-covenant.org/version/1/3/0/][version]
47
+
48
+ [homepage]: http://contributor-covenant.org
49
+ [version]: http://contributor-covenant.org/version/1/3/0/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in fub_client.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Kyoto Kopz
4
+ Copyright (c) 2025 Connor Gallopo
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in
14
+ all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ THE SOFTWARE.