Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for .NET Core #3

Closed
mjhca opened this issue May 16, 2017 · 34 comments
Closed

Support for .NET Core #3

mjhca opened this issue May 16, 2017 · 34 comments

Comments

@mjhca
Copy link

mjhca commented May 16, 2017

Would be very helpful for the .NET SDK to support .NET core so the SDK can be used cross-platform.

Dependencies to consider:

  • Newtonsoft.Json (JSON.net) supports .NET core
  • DevDefined.OAuth does not support .NET core, an alternative will be needed. One possibility is OAuth.DotNetCore. Or updating DevDefined,OAuth, but I am unsure of what is required to make it work.

Assuming the dependency issue is addressed, are there other components within the SDK that would need to be updated/replaced to support .NET core?

@nimisha84
Copy link
Collaborator

Hi @mjhca - Thanks for the feedback. At this point of time, replacing just JSon and Oauth lib might not solve all the issues.

We did an APIPortability analysis for the .Net SDK some time back for .Net Core. The SDK has many other libraries which would need to migrate to .Net Core supported one. Additionally not all the required lib are supported in Core yet as only a limited set of lib are supported for Core.
That would also mean a complete rewrite of some of the components of the .Net SDK.

If you are using .Net Core, I would suggest you to use just the OAuth.DotNetCore lib for the Oauth1 handling and then make http based calls to the API endpoints by including the Authorization header with Oauth tokens/signature.

You can look at the .Net SDK open source here for more details on what lib are internally used by the SDK.
https://github.com/intuit/QuickBooks-V3-DotNET-SDK

We will definitely provide support for .Net SDK for Core for V4 apis once they are released as it will be a new SDK altogether. The current version of API v3 which works with Oauth1 authorization.

@nimisha84
Copy link
Collaborator

I can help you with the raw API calls format. You just need to generate the Oauth signature(Authorization header) to sign your http requests to API.

See the below POST example for Customer endpoint. In case you have more queries around Oauth please post on our support -Go to developer.intuit.com->register->help.

Customer create POST raw request-

POST https://quickbooks.api.intuit.com/v3/company/1269959970/customer?minorversion=4&requestid=48d6fa817ddd4f088a40157fca7bf2be HTTP/1.1
Content-Type: application/xml
Accept-Encoding: gzip
Host: quickbooks.api.intuit.com
Authorization: OAuth oauth_token="qyprd91VD7QoysOYpgpQjaezVgYneXtKBM5IZf61KSrRbb42”,
oauth_nonce="80debeed-97cd-4286-b1c7-89194c7a0a0b”,
oauth_consumer_key="qyprdTofPrkvPkTvyrhmhGkQVeCkk7”,
oauth_signature_method="HMAC-SHA1”,
oauth_timestamp="1440401393”,
oauth_version="1.0”,
oauth_signature="lJgu6SUrR5YX%2BC9VHz2fM6TO3mw%3D"

Content-Length: 414
Expect: 100-continue
Connection: Keep-Alive

<Title>35780534d7d9415</Title> 35780534d7d941518b3b31028 35780 35780534d7d941518b3b31028 35780534d7d941518b3b

HTTP/1.1 200 OK
Date: Mon, 24 Aug 2015 07:29:54 GMT
Via: 1.1 ipp-gateway-ap05
Content-Type: application/xml;charset=UTF-8
Content-Length: 1027
Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private
Expires: 0
intuit_tid: 6c81efa5-cb8a-47f9-b10d-e5a7b5757ed9
QBO-Version: 88.420
Keep-Alive: timeout=5, max=75
Connection: Keep-Alive

102015-08-24T00:29:59-07:002015-08-24T00:29:59-07:00<Title>35780534d7d9415</Title>35780534d7d941518b3b310283578035780534d7d941518b3b3102835780534d7d941518b3b35780534d7d941518b3b35780534d7d9415 35780534d7d941518b3b31028 35780 35780534d7d941518b3b31028truefalsefalsefalse00USDNone

@briporteran
Copy link

Hi, is the source code available for Intuit.Ipp.Data POCO classes? I don't see it in Github. In addition to using the OAuth.DotNetCore lib for Oauth it would be helpful to have these model classes which should be easily portable to .NET Core.

@nimisha84
Copy link
Collaborator

nimisha84 commented Jun 20, 2017

The source code for the SDK is available here-
https://github.com/intuit/QuickBooks-V3-DotNET-SDK/tree/master/IPPDotNetDevKitCSV3/Tools/XsdExtension

This XSD extension tool is used to generate the base FMS.cs class for Intuit.Ipp.Data.
We did an analysis for the porting over the SDK lib to Core but it looks like some of the imp lib are not yet supported in Core. In addition to that we would need a complete a rewrite of the SDK with the Core supported lib. So, we definitely have analyzed this requirement and will take it up when we work on the V4 services SDK. Thanks for the feedback.

@sheam
Copy link

sheam commented Mar 5, 2018

Is there a ballpark release date for .Net V4 (w/ .Net Core)?

This is holding up a major project at our company, as we would like to migrate off of windows hosting. .Net core really opens up our options, and this is the last piece to preventing us from fully migrating. I realize we could do everything via rest, but I would prefer not for a number of reasons.

@ehalsey
Copy link

ehalsey commented Mar 23, 2018

bump. Any updates on release dates?

@nbhambhani
Copy link
Contributor

Unfortunately, we don't have any updates or release dates for SDK for .Net Core.

@fliteinteractive
Copy link

Any updates?

@nbhambhani
Copy link
Contributor

Hi @fliteinteractive we will announce through all our social channels once we have an SDK for .Net Core. But we do know that it will mainly target the new APIs that we open up to the public and not the ones we currently have.

@fliteinteractive
Copy link

@nbhambhani do you have an ETA on support? I'm in the middle of a project, and the client is pretty anxious.

This should be much easier now with the .net standard - there's a pretty huge api overlap between .net framework and .net core.

@nimisha84
Copy link
Collaborator

@fliteinteractive At present we do not have an ETA to share for the current V3 api or SDK. But we haev take your feedback and see if the current SDK's existing dlls are supported in .Net Standard or not and port over our SDK if all dlls are supported. If not, it would essentially mean a rewrite of the V3 SDK which is something that we might not take up given we will be writing the new V4 SDK for .Net Core support.

@fliteinteractive
Copy link

@nimisha84 thank you for the information.

Last question - is there an eta on V4 ?

@nimisha84
Copy link
Collaborator

Unfortunately not, but for your info, there would be mini releases for specific entities soon, starting with support for payroll apis.

@stodolos
Copy link

stodolos commented Feb 7, 2019

Any news on v4? I'm just getting started with this API on .NET Core/Standard, and would like to know if I should start w v4 or v3.

Thanks

@WillMarcouiller
Copy link

WillMarcouiller commented Mar 7, 2019

I'm currently writing a prototype software to use as a proof of concept and decided to go along with using QBO as it's already in the cloud.

But then, I just found this thread and was wondering whether there was any change of status for a .Net Core port of the QBO SDK?

Otherwise, would there be any available resources so I can pick an HttpClient up and use it against the API directly? I haven't used HttpClient much as I always have used WebAPI for stuff with custom features which didn't require external integration such as QBO.

@nimisha84
Copy link
Collaborator

We are working on releasing the beta version of our SDK DLLS for .net standard which you can use with .Net Core 2.1 projects.
Please let me know if you are interested in testing those out and giving us your feedback if you see any issues.

Thanks,
Nimisha

@nimisha84 nimisha84 reopened this Apr 9, 2019
@WillMarcouiller
Copy link

WillMarcouiller commented Apr 9, 2019 via email

@nimisha84
Copy link
Collaborator

Please reply with your email ids, in case you are interested. I can send the zipped SDK dlls and steps to download any additional dependencies from Nuget. Later, in a few weeks when we release it, we will be releasing the NUget package with required dependencies.

@WillMarcouiller
Copy link

WillMarcouiller commented Apr 9, 2019 via email

@vchirikov
Copy link
Contributor

@nimisha84 please share dlls as nuget beta package or place this dlls in separate branch here.
Thanks.

@nimisha84
Copy link
Collaborator

nimisha84 commented Apr 11, 2019

You can search for this package in pre-release on Nuget-
IppDotNetSdkForQuickBooksApiV3_NetStandard2_0 7.5.1-beta (for FULL v3 SDK), IntuitOAuth2PlatformClient_NetStandard2_0 7.5.1-beta (for just Oauth2 SDK).
"Ignore the warning that you get that package was restored using 4.6.1."

Use this appsettings.json as a reference for your .Net Core projects-
{
"Logger": {
"RequestLog": {
"EnableLogs": "false",
"LogDirectory": ""
}
},
//not supported added for backward compatibility
"CustomLogger": {
"RequestLog": {
"Enable": "false",
"Name": "",
"Type": ""
}
},
"Security": {
"Mode": {
"Oauth": {
"Enable": "false",
"AccessToken": ""
},
//not supported added for backward compatibility
"Custom": {
"Enable": "false",
"Name": "",
"Type": "",
"Params": ""
}
}
},
"Message": {
"Request": {
"CompressionFormat": "None",
"SerializationFormat": "Json"
},
"Response": {
"CompressionFormat": "None",
"SerializationFormat": "Json"
}
},
"Service": {
"BaseUrl": {
"Qbo": "",
"Ips": "", //not supported added for backward compatibility
"OAuthAccessTokenUrl": "", //not supported added for backward compatibility
"UserNameAuthentication": "" //not supported added for backward compatibility
},
"MinorVersion": {
"Qbo": "37"
}
},
"WebhooksService": {
"VerifierToken": {
"Value": ""
}
},
"Retry": {
"Mode": {
"LinearRetry": {
"Enable": "false",
"RetryCount": "",
"RetryInterval": ""
},
"IncrementalRetry": {
"Enable": "false",
"RetryCount": "",
"InitialInterval": "",
"Increment": ""
},
"ExponentialRetry": {
"Enable": "false",
"RetryCount": "",
"MinBackoff": "",
"MaxBackoff": "",
"DeltaBackoff": ""
}
}
}
}

@nimisha84
Copy link
Collaborator

If someone needs 4.7.2 dlls generated by this .NET Standard v3 SDK, I can share those in a zip file.

@nimisha84
Copy link
Collaborator

@WillMarcouiller - You can always lookup requests like these on our community page. Developer.intuit.com->help. A lot of devs are interested in outsourcing their integrations and would be glad to take your services.

@vchirikov - The branch is still under dev mode, so I will share it once it reaches a final state.

@vchirikov
Copy link
Contributor

  1. Intuit.Ipp.Exception, Intuit.Ipp.OAuth2PlatformClient, Intuit.Ipp.Utility builded as .NETFramework,Version=v4.7.2
  2. why you delete comments about license of third party code?

@nimisha84
Copy link
Collaborator

Hey @vchirikov,
Not sure why that happened. I commented here using phone browser and saw the comment added twice. So, I deleted one of them. Not sure, why your comment got deleted. Please add you comment back and if you got my answer, add that too again. Sorry about the confusion. I will check about the other dll issues you see here and respond then.

@nimisha84
Copy link
Collaborator

No matter what, license will be added to the req files.

@nimisha84
Copy link
Collaborator

It seems to be a github issue. I clicked on your previous email and can see my comment:
LINQ extender was deprecated long back. We do not use it or support it. It was added when the SDK was first built but not open sourced and it was not having the right copyright credit, it was probably due to lack of knowledge by the person who built it. I will get the right credit added asap as I see that still exists in our open source for backward compatibility for devs who were on earlier versions of SDK. Thus, we have removed it even from Standard DLLs as we don't support LINQ queries anymore. Instead, use QueryFilter->ExecuteIdsQuery. We also have removed deprecated Platformclient and Oauth1 support as that is going to be deprecated too in Dec Let me know if see any other issues

@vchirikov
Copy link
Contributor

vchirikov commented Apr 12, 2019

Ok, I think we discussed about license here: #9
and that issue can be closed with link to this issue.

So, I have project on net461 and can't use your netstandard2.0 nupkg because of
Intuit.Ipp.Exception, Intuit.Ipp.OAuth2PlatformClient, Intuit.Ipp.Utility builded as .NETFramework,Version=v4.7.2

  • Intuit.Ipp.Exception - can be easy rebuilded as netstandard, contains only exception classes.
  • Intuit.Ipp.OAuth2PlatformClient - hasn't any external netframework references, maybe can be migrated easy too
  • Intuit.Ipp.Utility - same, hasn't external netframework references, contains utility classes that can be migrated too.

Can you rebuild and publish nupkg with this changes?

p.s I can make PR for this (with newcsproj migration etc) but you didn't share branch with netstandard support

@nimisha84
Copy link
Collaborator

Thanks. I closed the other thread. As for the above 3 dlls, I see a weird issue that even though .csproj has the netstandard2.0 specified, it is still always building as 4.7.2. Will need to debug more. No errors though. The branch is C:\Users\nshrivastava\Documents\Git\QuickBooks-V3-DotNET-SDK\IPPDotNetDevKitCSV3\Code\Intuit.Ipp.Exception\bin\Release\netstandard2.0 . Let me know if you can figure out the issue and do a PR. Any help is appreciated.

@vchirikov vchirikov mentioned this issue Apr 19, 2019
@vchirikov
Copy link
Contributor

#76

@nimisha84
Copy link
Collaborator

Thanks for the great work on this PR. Appreciate it.
We too had raised the issue with .Net Standard team here-
dotnet/standard#1142

The issue was found with xcopy failures and reading cached files. So, we created a FileCopy project instead.
I will check your PR and see if we can add back support for 472 too in that as we do need it. Else, we would go by the solution we have in place.

@nimisha84
Copy link
Collaborator

Latest package is on NUget->IppDotNetSdkForQuickBooksApiV3 -> 7.5.0.3-beta

@Shane32
Copy link

Shane32 commented May 10, 2019

Why is this issue closed if the nuget package is still in beta?

@nimisha84
Copy link
Collaborator

@Shane32 Please reopen this github issue or start a new one if you see any issues with the beta package.

nimisha84 pushed a commit that referenced this issue Feb 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests