Skip to content

Commit

Permalink
Naive implementation of form payload
Browse files Browse the repository at this point in the history
  • Loading branch information
sergey-tihon committed Nov 1, 2019
1 parent 913c176 commit 76af018
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 3 deletions.
5 changes: 4 additions & 1 deletion RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#### 0.10.0-beta06 - October 27, 2019
#### 0.10.0-beta07 - November 1, 2019
- Migration to new Type Provider SDK [#88](https://github.com/fsprojects/SwaggerProvider/pull/88)
- SwaggerParser moved to runtime assembly (and exposed as API to library users) - [#90](https://github.com/fsprojects/SwaggerProvider/pull/90)
- Added runtime dependency on YamlDotNet
Expand All @@ -13,6 +13,9 @@
- Do not reference design-time assembly when install from nuget [#104](https://github.com/fsprojects/SwaggerProvider/pull/104)
- Migration to `HttpClient`-based communication [#105](https://github.com/fsprojects/SwaggerProvider/pull/105)
- TP SDK update - [#125](https://github.com/fsprojects/SwaggerProvider/pull/125)
- Fixed null reference in query params [#126](https://github.com/fsprojects/SwaggerProvider/issues/126)
- HttpClient is used for all calls [#100](https://github.com/fsprojects/SwaggerProvider/issues/100)
- OpenApiClientProvider [#117](https://github.com/fsprojects/SwaggerProvider/pull/117)

#### 0.8.2 - January 19, 2017
* Fix probing locations [#97](https://github.com/fsprojects/SwaggerProvider/pull/97)
Expand Down
4 changes: 2 additions & 2 deletions src/SwaggerProvider.DesignTime/v3/OperationCompiler.fs
Original file line number Diff line number Diff line change
Expand Up @@ -267,13 +267,13 @@ type OperationCompiler (schema:OpenApiDocument, defCompiler:DefinitionCompiler,
msg.Content <- content
msg @>
| Some(FormData, formData) ->
<@ let data = Seq.empty<string*string> // TODO: create keyValue pairs from `formData` object
<@ let data = RuntimeHelpers.getPropertyValues (%%formData: obj)
let content = RuntimeHelpers.toMultipartFormDataContent (data)
let msg = %httpRequestMessage
msg.Content <- content
msg @>
| Some(FormUrlEncoded, formUrlEncoded) ->
<@ let data = Seq.empty<string*string> // TODO: create keyValue pairs from `value` object
<@ let data = RuntimeHelpers.getPropertyValues (%%formUrlEncoded: obj)
let content = RuntimeHelpers.toFormUrlEncodedContent (data)
let msg = %httpRequestMessage
msg.Content <- content
Expand Down
10 changes: 10 additions & 0 deletions src/SwaggerProvider.Runtime/RuntimeHelpers.fs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,16 @@ module RuntimeHelpers =

let toStringContent (valueStr:string) =
new StringContent(valueStr, Text.Encoding.UTF8, "application/json")

let getPropertyValues (object:obj) =
if isNull object then Seq.empty
else
object.GetType().GetProperties(System.Reflection.BindingFlags.Public ||| System.Reflection.BindingFlags.Instance)
|> Seq.choose (fun prop ->
let value = prop.GetValue(object)
if isNull value then None
else Some (prop.Name, value.ToString()) // Serialize?
)
let toMultipartFormDataContent (keyValues:seq<string*string>) =
let cnt = new MultipartFormDataContent()
for (k,v) in keyValues do
Expand Down

0 comments on commit 76af018

Please sign in to comment.