fmrest-core 0.20.0 → 0.22.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +16 -26
- data/lib/fmrest/v1/connection.rb +1 -1
- data/lib/fmrest/v1/container_fields.rb +2 -2
- data/lib/fmrest/v1/raise_errors.rb +1 -1
- data/lib/fmrest/v1/type_coercer.rb +1 -1
- data/lib/fmrest/version.rb +1 -1
- data/lib/fmrest.rb +12 -5
- data/lib/generators/fmrest/config/config_generator.rb +19 -0
- data/lib/generators/fmrest/config/templates/fmrest.yml +18 -0
- data/lib/generators/fmrest/config/templates/fmrest_initializer.rb +19 -0
- data/lib/generators/fmrest/model/model_generator.rb +15 -0
- data/lib/generators/fmrest/model/templates/model.rb +6 -0
- metadata +11 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7ac58128c88341bca022d6470847a1bf0ee489daf71323697e17ba103f0325f
|
4
|
+
data.tar.gz: 7061ed4af4f344646aa4dd4935242f00751473885302cb257283183aadbed763
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db124b9095a6a8636e5edea83ba9b2c1517aff515336daa37cb882db1818f02f5fb6ceb2eaac7d980d433bbef2892fa708bbb1087fc9bbde1829cd22f738dd67
|
7
|
+
data.tar.gz: 587890573a26cc811da0a7327d4b8b3799f9f7717fb6885b4f2d8414922d48eb53cb54c3cad52050e56bc998e9ade720fe7cd835a9bd36184afbb4271f12729f
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
[](https://rubygems.org/gems/fmrest)
|
4
4
|

|
5
5
|
[](https://rubydoc.info/github/beezwax/fmrest-ruby)
|
6
|
+
[](https://beezwax.net/)
|
6
7
|
|
7
8
|
A Ruby client for
|
8
9
|
[FileMaker's Data API](https://help.claris.com/en/data-api-guide)
|
@@ -16,29 +17,16 @@ is natively supported by the gem.
|
|
16
17
|
Need Ruby or FileMaker consulting? Contact us at
|
17
18
|
[Beezwax.net](https://beezwax.net/)
|
18
19
|
|
19
|
-
## Contents
|
20
|
-
|
21
|
-
* [Gems](#gems)
|
22
|
-
* [Installation](#installation)
|
23
|
-
* [Simple example](#simple-example)
|
24
|
-
* [Connection settings](#connection-settings)
|
25
|
-
* [Session token store](#session-token-store)
|
26
|
-
* [Date fields and timezones](#date-fields-and-timezones)
|
27
|
-
* [ActiveRecord-like ORM (fmrest-spyke)](#activerecord-like-orm-fmrest-spyke)
|
28
|
-
* [Logging](#logging)
|
29
|
-
* [Gotchas](#gotchas)
|
30
|
-
* [API implementation completeness table](#api-implementation-completeness-table)
|
31
|
-
* [Supported Ruby versions](#supported-ruby-versions)
|
32
|
-
|
33
20
|
## Gems
|
34
21
|
|
35
|
-
The `fmrest` gem is a wrapper for
|
22
|
+
The `fmrest` gem is a wrapper for these gems:
|
36
23
|
|
37
24
|
* `fmrest-spyke`, providing an ActiveRecord-like ORM library built on top
|
38
25
|
of `fmrest-core` and [Spyke](https://github.com/balvig/spyke).
|
39
26
|
* `fmrest-core`, providing the core
|
40
27
|
[Faraday](https://github.com/lostisland/faraday) connection builder, session
|
41
28
|
management, and other core utilities.
|
29
|
+
* `fmrest-rails`, providing Rails integration.
|
42
30
|
|
43
31
|
In addition, the optional `fmrest-cloud` gem adds support for FileMaker Cloud.
|
44
32
|
See the [main document on connecting to FileMaker
|
@@ -55,6 +43,12 @@ gem 'fmrest'
|
|
55
43
|
gem 'fmrest-cloud'
|
56
44
|
```
|
57
45
|
|
46
|
+
If you're using Rails you can now run:
|
47
|
+
|
48
|
+
```
|
49
|
+
rails generate fmrest:config
|
50
|
+
```
|
51
|
+
|
58
52
|
## Simple example
|
59
53
|
|
60
54
|
```ruby
|
@@ -124,7 +118,8 @@ to, for instance, disable SSL verification:
|
|
124
118
|
{
|
125
119
|
host: "…",
|
126
120
|
…
|
127
|
-
ssl: { verify: false }
|
121
|
+
ssl: { verify: false },
|
122
|
+
proxy: "http://user:password@proxy.host:4321"
|
128
123
|
}
|
129
124
|
```
|
130
125
|
|
@@ -135,13 +130,13 @@ You can also pass a `:log` option for basic request logging, see the section on
|
|
135
130
|
|
136
131
|
Option | Description | Format | Default
|
137
132
|
--------------------|--------------------------------------------|-----------------------------|--------
|
138
|
-
`:host` | Hostname with optional port, e.g. `
|
133
|
+
`:host` | Hostname with optional port, e.g. `example.com:9000` | String | None
|
139
134
|
`:database` | The name of the database to connect to | String | None
|
140
135
|
`:username` | A Data API-ready account | String | None
|
141
136
|
`:password` | Your password | String | None
|
142
137
|
`:account_name` | Alias of `:username` | String | None
|
143
|
-
`:ssl` | SSL options to be forwarded to Faraday | Faraday SSL options
|
144
|
-
`:proxy` | Proxy URI e.g. `http://
|
138
|
+
`:ssl` | SSL options to be forwarded to Faraday | [Faraday SSL options](https://www.rubydoc.info/gems/faraday/Faraday/SSLOptions) hash | None
|
139
|
+
`:proxy` | Proxy URI, e.g. `http://user:password@proxy.host:4321` | String | None
|
145
140
|
`:log` | Log JSON responses to STDOUT | Boolean | `false`
|
146
141
|
`:log_level` | Which log level to log into | Values accepted by `Logger#level=` | `:debug`
|
147
142
|
`:coerce_dates` | See section on [date fields](#date-fields-and-timezones) | Boolean \| `:hybrid` \| `:full` | `false`
|
@@ -561,13 +556,8 @@ FM Data API reference: https://help.claris.com/en/data-api-guide/
|
|
561
556
|
|
562
557
|
## Supported Ruby versions
|
563
558
|
|
564
|
-
fmrest-ruby
|
565
|
-
|
566
|
-
|
567
|
-
* Ruby 2.5
|
568
|
-
* Ruby 2.6
|
569
|
-
* Ruby 2.7
|
570
|
-
* Ruby 3.0
|
559
|
+
fmrest-ruby is [tested against](https://github.com/beezwax/fmrest-ruby/actions?query=workflow%3ACI)
|
560
|
+
Ruby 2.6 through 3.1.
|
571
561
|
|
572
562
|
## Gem development
|
573
563
|
|
data/lib/fmrest/v1/connection.rb
CHANGED
@@ -72,7 +72,7 @@ module FmRest
|
|
72
72
|
elsif is_cloud_host
|
73
73
|
conn.request :authorization, CLARIS_ID_HTTP_AUTH_TYPE, -> { Cloud::ClarisIdTokenManager.new(settings).fetch_token }
|
74
74
|
else
|
75
|
-
conn.request :
|
75
|
+
conn.request :authorization, :basic, settings.username!, settings.password!
|
76
76
|
end
|
77
77
|
|
78
78
|
if settings.log
|
@@ -80,11 +80,11 @@ module FmRest
|
|
80
80
|
|
81
81
|
connection.post do |request|
|
82
82
|
request.url container_path
|
83
|
-
request.headers['Content-Type'] = ::Faraday::
|
83
|
+
request.headers['Content-Type'] = ::Faraday::Multipart::Middleware.mime_type
|
84
84
|
|
85
85
|
filename = options[:filename] || filename_or_io.try(:original_filename)
|
86
86
|
|
87
|
-
request.body = { upload: Faraday::
|
87
|
+
request.body = { upload: Faraday::Multipart::FilePart.new(filename_or_io, content_type, filename) }
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
@@ -5,7 +5,7 @@ module FmRest
|
|
5
5
|
# FM Data API response middleware for raising exceptions on API response
|
6
6
|
# errors
|
7
7
|
#
|
8
|
-
class RaiseErrors < Faraday::
|
8
|
+
class RaiseErrors < Faraday::Middleware
|
9
9
|
# Error codes reference:
|
10
10
|
# https://help.claris.com/en/pro-help/content/error-codes.html
|
11
11
|
ERROR_RANGES = {
|
@@ -4,7 +4,7 @@ require "fmrest/string_date"
|
|
4
4
|
|
5
5
|
module FmRest
|
6
6
|
module V1
|
7
|
-
class TypeCoercer < Faraday::
|
7
|
+
class TypeCoercer < Faraday::Middleware
|
8
8
|
# We use this date to represent a FileMaker time for consistency with
|
9
9
|
# ginjo-rfm
|
10
10
|
JULIAN_ZERO_DAY = "-4712/1/1"
|
data/lib/fmrest/version.rb
CHANGED
data/lib/fmrest.rb
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "faraday"
|
4
|
-
require "
|
4
|
+
require "faraday/multipart"
|
5
5
|
|
6
6
|
require "fmrest/version"
|
7
7
|
require "fmrest/connection_settings"
|
8
8
|
require "fmrest/errors"
|
9
9
|
|
10
10
|
module FmRest
|
11
|
-
autoload :V1,
|
12
|
-
autoload :TokenStore,
|
13
|
-
autoload :Spyke,
|
14
|
-
autoload :Layout,
|
11
|
+
autoload :V1, "fmrest/v1"
|
12
|
+
autoload :TokenStore, "fmrest/token_store"
|
13
|
+
autoload :Spyke, "fmrest/spyke"
|
14
|
+
autoload :Layout, "fmrest/spyke"
|
15
|
+
autoload :StringDateAwareness, "fmrest/string_date"
|
15
16
|
|
16
17
|
class << self
|
17
18
|
attr_accessor :token_store
|
@@ -68,3 +69,9 @@ module FmRest
|
|
68
69
|
end
|
69
70
|
end
|
70
71
|
end
|
72
|
+
|
73
|
+
begin
|
74
|
+
require "fmrest/railtie" if defined?(Rails::Railtie)
|
75
|
+
# In case fmrest-rails is not installed
|
76
|
+
rescue LoadError
|
77
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This is capitalized differently (Fmrest vs FmRest) on purpose, so the
|
4
|
+
# generator can be found as "fmrest:config"
|
5
|
+
module Fmrest
|
6
|
+
module Generators
|
7
|
+
class ConfigGenerator < Rails::Generators::Base
|
8
|
+
source_root File.expand_path('templates', __dir__)
|
9
|
+
|
10
|
+
def copy_config_file
|
11
|
+
copy_file "fmrest.yml", "config/fmrest.yml"
|
12
|
+
end
|
13
|
+
|
14
|
+
def copy_initializer_file
|
15
|
+
copy_file "fmrest_initializer.rb", "config/initializers/fmrest.rb"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Use ActiveRecord token store
|
4
|
+
FmRest.token_store = FmRest::TokenStore::ActiveRecord
|
5
|
+
|
6
|
+
# Use ActiveRecord token store with custom table name
|
7
|
+
# FmRest.token_store = FmRest::TokenStore::ActiveRecord.new(table_name: "my_token_store")
|
8
|
+
|
9
|
+
# Use Redis token store (requires redis gem)
|
10
|
+
# FmRest.token_store = FmRest::TokenStore::Redis
|
11
|
+
|
12
|
+
# Use Redis token store with custom prefix
|
13
|
+
# FmRest.token_store = FmRest::TokenStore::Redis.new(prefix: "my-fmrest-token:")
|
14
|
+
|
15
|
+
# Use Moneta token store (requires moneta gem)
|
16
|
+
# FmRest.token_store = FmRest::TokenStore::Moneta.new(backend: )
|
17
|
+
|
18
|
+
# Use Memory token store (not suitable for production)
|
19
|
+
# FmRest.token_store = FmRest::TokenStore::Memory
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This is capitalized differently (Fmrest vs FmRest) on purpose, so the
|
4
|
+
# generator can be found as "fmrest:config"
|
5
|
+
module Fmrest
|
6
|
+
module Generators
|
7
|
+
class ModelGenerator < Rails::Generators::NamedBase
|
8
|
+
source_root File.expand_path('templates', __dir__)
|
9
|
+
|
10
|
+
def create_model_file
|
11
|
+
template "model.rb", "app/models/#{file_name}.rb"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,23 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fmrest-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.22.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pedro Carbajal
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 1.8.0
|
20
|
-
- - "<"
|
21
18
|
- !ruby/object:Gem::Version
|
22
19
|
version: '2.0'
|
23
20
|
type: :runtime
|
@@ -25,31 +22,22 @@ dependencies:
|
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 1.8.0
|
30
|
-
- - "<"
|
31
25
|
- !ruby/object:Gem::Version
|
32
26
|
version: '2.0'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
28
|
+
name: faraday-multipart
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
36
30
|
requirements:
|
37
31
|
- - ">="
|
38
32
|
- !ruby/object:Gem::Version
|
39
|
-
version: 0
|
40
|
-
- - "<"
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: '2.0'
|
33
|
+
version: '0'
|
43
34
|
type: :runtime
|
44
35
|
prerelease: false
|
45
36
|
version_requirements: !ruby/object:Gem::Requirement
|
46
37
|
requirements:
|
47
38
|
- - ">="
|
48
39
|
- !ruby/object:Gem::Version
|
49
|
-
version: 0
|
50
|
-
- - "<"
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '2.0'
|
40
|
+
version: '0'
|
53
41
|
description: fmrest-core is a FileMaker Data API client built with Faraday. It handles
|
54
42
|
authentication as well as providing many utilities for working with the Data API.
|
55
43
|
An ORM library built on top of fmrest-core is also available.
|
@@ -89,6 +77,11 @@ files:
|
|
89
77
|
- lib/fmrest/v1/type_coercer.rb
|
90
78
|
- lib/fmrest/v1/utils.rb
|
91
79
|
- lib/fmrest/version.rb
|
80
|
+
- lib/generators/fmrest/config/config_generator.rb
|
81
|
+
- lib/generators/fmrest/config/templates/fmrest.yml
|
82
|
+
- lib/generators/fmrest/config/templates/fmrest_initializer.rb
|
83
|
+
- lib/generators/fmrest/model/model_generator.rb
|
84
|
+
- lib/generators/fmrest/model/templates/model.rb
|
92
85
|
homepage: https://github.com/beezwax/fmrest-ruby
|
93
86
|
licenses:
|
94
87
|
- MIT
|
@@ -108,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
101
|
- !ruby/object:Gem::Version
|
109
102
|
version: '0'
|
110
103
|
requirements: []
|
111
|
-
rubygems_version: 3.
|
104
|
+
rubygems_version: 3.3.3
|
112
105
|
signing_key:
|
113
106
|
specification_version: 4
|
114
107
|
summary: FileMaker Data API client using Faraday, core library
|