Giter VIP home page Giter VIP logo

fmdata's Introduction

Hey there ๐Ÿ‘‹

I'm Nate, a Senior Software Engineer using Github for lots of projects! Check out my profile and recent activity to see what I'm working on.

Current Projects and Activity

The Numbers

About me

I started programming with my father in qBASIC in the early 1990's and progressed to Visual Basic 4 on Windows 3.1 (yes, the 16-bit version.) I started using Microsoft Access and Classic ASP to build websites. I built a stats tracking databases to track gaming progress of my friends and myself by extracting the data from the game servers log files. This set me on the path to programming, and I've never looked back. Through high school and college I studied programming, graduating from Northeastern Illinois University with a degree in Computer Science.

When .NET 1.0 was released, I jumped on the band wagon, but I stuck with VB. It wasn't until .NET 2.0 came out that I really dug into C# and started going like gangbusters. I started looking at Open Source software, reading more code, reading blogs, and listening to podcasts. I started honing my craft based on these new inputs, and I continue to improve my skills and learn new things at every opportunity.

Get in touch

Me on LinkedIn Me on Stack

fmdata's People

Contributors

dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar fuzzzerd avatar heebinho avatar inf13 avatar jaksolutionsgithub avatar r-hathcock avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fmdata's Issues

Perform find request doest no work

Hello,

Maybe I'm wrong in running the code but I have a class "Members" that has more than 20 fields and I run client.FindAsync (toFind) I always have an error.

Indeed, toFind contains my class (with string and int) and sends the complete class.

I feel like this perform find is trying to find a record in Filemaker that has exactly the same values than my class and not just "Member_Zkp_WEB".
The problem is that my class model contains some var who doesnt exist in Filemaker. But it looks like it tries to perform the find on the whole class skeleton.

If comment almost all my vars in my class and i only let Member_Zkp_Web and for example Member_LastName the perform find works en results is giving me the correct record it found.

ViewBag.sessionv contains 26, which exist on my layout.

                FileMakerRestClient client = new FileMakerRestClient("https://fms171.hostmy.solutions", "helloJAK", userName, password);
                var toFind = new Models.Members { Member_Zkp_WEB = ViewBag.sessionv };
                var results = await client.FindAsync(toFind);

Data/Rest API Token Management

Token management should be transparent to the consumers via the main interface.

Token should be automatically refreshed when necessary assuming default timeout of 15min.

Data API empty Find

When performing an empty find request, the client should switch to the underlying get records api to avoid throwing or returning nothing.

Encapsulate connection parameters into a single model for injection.

Is your feature request related to a problem? Please describe.
Unable to take advantage of ASP.NET Core 2.1's HttpClientFactory.

Describe the solution you'd like
Encapsulate the connection parameters server, database, user, password into a class/model which can be registered with dependency injection frameworks in conjunction with the existing HttpClient parameter to more thoroughly take advantage of HttpClientFactory.

https://www.stevejgordon.co.uk/httpclientfactory-named-typed-clients-aspnetcore

Describe alternatives you've considered
Could also accept an instance of HttpClientFactory instead of HttpClient, but that might require giving up Net Standard 1.3.

Create public interface for creating Request objects directly

The existing Request Factories are protected which limits their usefulness to outside consumers that would rather utilize the SendAsync overloads than the Create, Find, Edit, Delete methods on the client.

Need to determine if it makes sense to replace the existing protected methods, make them public, or make the public methods consume the protected overloads, keeping both.

Arrange Tests By Overload Method Under Test

Navigating the test projects is challenging due to the organic nature in which they were added. They need to be reorganized to more clearly map to the method under test.

ContainerData : Object reference not set to an instance of an object

Hey,

I'm trying to use the ContainerData but i always receive an error which is "Object reference not set to an instance of an object.".
My container contains a picture on my layout and in my model i've created a byte[] to receive it.

        [ContainerDataFor("Picture_gr")] // use the name in your C# model
        public byte[] Member_Picture { get; set; }

Maybe i'm doing something wrong but there is only 4 lines of code...

                FileMakerRestClient client = new FileMakerRestClient(serverName, fileName, userName, password);
                var toFind = new Models.Members { Member_Zkp_WEB = ViewBag.sessionv };
                var results = await client.FindAsync(toFind);
                await client.ProcessContainers(results);

Did you know about this error? Maybe you know a workaround or how to fix it?

Thx in advance!

Korp

Get Databases

Task list:

  • Update IFileMakerClient with GetDatabasesAsync method
  • Define database response type (IEnumerable or a whole new type?)
  • Write Rest client implementation
  • Write Xml client implementation, reference fmDotNet structure
  • Test data, harness, and coverage

note: this api uses basic authentication, the same as getting a token

Nested array filtering

The find API call returns nested array - as in the example below (NestedActions).

I would like apply the following query: get all records that have fielddata.ES_UTC_Time >= 63397939255000 and apply the same date filter against the NestedActions::ES_UTC_Time.

{"query":[{"ES_UTC_Time":">= 63397939255000"},{"NestedActions::ES_UTC_Time":">= 63397939255000"}],"offset":"1", "limit":"100","sort":[{"fieldName":"ES_UTC_Time","sortOrder":"descend"}]}

I would like to return the parent record even if there are no child NestedActions.

Is this even possible when using the FM API find call ? How would I need to structure the fmdata filter to achieve this?

Appreciate a any help with this.

Thanks.

Data:
{
"response": {
"data": [
{
"fieldData": {
"ES_RECORD_ID": 5.1424603688874037043940639545611105393e+37,
"ES_UTC_Time": 63677801587705
},
"portalData": {
"NestedActions": [
{
"recordId": "26",
"NestedActions::ES_UTC_Time": 63675911309428,
"NestedActions::ES_RECORD_ID": 3.58945963486201731120694061631247244196e+38,
"modId": "0"
},
{
"recordId": "27",
"NestedActions::ES_UTC_Time": 63677800967265,
"NestedActions::ES_RECORD_ID": 4.11367583929358143594030872930602025971e+38,
"modId": "0"
}
],
"FormBeforeEventTimeline": [],
"FormAfterEventTimeline": []
},
"recordId": "46",
"modId": "12"
},
{
"fieldData": {
"ES_RECORD_ID": 2.32825376899054305232124784142823827507e+38,
"ES_UTC_Time": 63675551352139
},
"portalData": {
"NestedActions": [],
"FormBeforeEventTimeline": [],
"FormAfterEventTimeline": []
},
"recordId": "45",
"modId": "15"
}
]
},
"messages": [
{
"code": "0",
"message": "OK"
}
]
}

XML Global Field Support

Is your feature request related to a problem? Please describe.
Unable to set global field values for xml requests.

Describe the solution you'd like
Need to manage a small queue on the SetGlobalField implementation; that will add the global field data to the next outgoing request.

Describe alternatives you've considered
Specify the global field as part of the request directly, this is kind of ugly and dirties up the intent of the consuming code.

Additional context
Details on the documentation: https://fmhelp.filemaker.com/docs/16/en/fms16_cwp_guide.pdf#G8.76964

Add ProcessContainer's attribute to find request object.

Is your feature request related to a problem? Please describe.
Should not need two calls to process containers.

Describe the solution you'd like
Add flag to request model to indicate if containers should be processed or not.

Describe alternatives you've considered
Open to suggestions.

Get Product Information

Couple things...

  • Update IFileMakerClient with GetProductInfoAsync
  • Setup Product Info Response Type
  • Update Rest Client
  • Update Xml Client
  • Test coverage / updates

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.