Equivalent Software SDK for Pentax k3iii

Apologies that I don't have a better place to log this request , but given the link between Ricoh and Pentax , I hoped the developers involved in this project may have some links back to Pentax :
It seems the Pentax Development SDK that used to be available online for USB connectivity to cameras such as the K1 and k3ii has been removed . I wondered if anyone had any links back to Pentax to request that it be made available in a similar way to that for the Theta ?
Absence of a public SDK for Pentax connectivity really hinders the ability to use Pentax cameras with third party devices and software,  such as Astroberry server or Benro Polaris.

@ian-morgan99
I am sorry for your inconvenience. Following is the answer from Pentax camera team.

Pentax Camera SDK was discontinued about a year ago. Also, secondary distribution is strictly prohibited, making it impossible to obtain fresh copies. However, users who got prior to this closure will still be able to use the SDK, without any ongoing support.

I am immensely thankful for your response.
Is there any chance at all that you could provide the direct contact details for somebody in that team , so that I can speak with them, to understand what I can and can't do ?

@ian-morgan99
Please contact to Ricoh Imaging website, choose your country / region, so you can submit an inquiry via Contact Us.
https://www.ricoh-imaging.com/
But maybe they cannot answer as your expected level, because camera SDK development / official support was ended..


Inject json object via the plugin

I have an index.html file containing a javascript global object as the follow:

    ...

....

In my webpack file I have setup  the plugin as it follows:
new HtmlWebpackPlugin({
            inject: false,
            filename: "myfile.html",
            template: "./src/myfile.html",
            title: "Page Title",
            configuration: configurations.getConfiguration(TARGET, webpackCommon.buildVersion)
        })

My attempt was to set the configuration in the html file as the following, but obviously it does not work

    ...

....

Is a possible use case to handle? I also tried with another plugin ( https://github.com/jamesandersen/string-replace-webpack-plugin) but it seems as it conflicts with the html-webpack-plugin.
Any help appreciated, thanks

This should work - did you read the faq?

Yes Ichevked them. Does it matter that the file is an html one and not an ejs one?

Depends on your configuration - did you try?

Hi, sorry for delay. Yes I tried and what I get in the output is

What I need is the actual JSON object. As far as I understand, <%= %> will print a string of the configuration. I also tried <%- %> but getting the same result.

<%= JSON.stringify( htmlWebpackPlugin.options.configuration ) %>

Thanks Jan, that did the trick!

You should probably use the define plugin for this ;)


[Bug]: Cannot find module 'radix-vue' or its corresponding type declarations

Environment
"nuxt": "^3.8.2",
"shadcn-nuxt": "^0.1.0",
"typescript": "^5.3.3",
"vue": "^3.3.12",
"radix-vue": "^1.2.5"

Link to minimal reproduction
No need since folder/linter issue
Steps to reproduce
Install radix-vue and shadcn-vue following instructions
Download any component using command line ( I have used Button)
import { Primitive, type PrimitiveProps } from 'radix-vue' line gives error:
[Bug]: Cannot find module 'radix-vue' or its corresponding type declarations
Describe the bug
"nuxt": "^3.8.2",
"shadcn-nuxt": "^0.1.0",
"typescript": "^5.3.3",
"vue": "^3.3.12",
"radix-vue": "^1.2.5",
Download any component using command line ( I have used Button)
Component script section gives the following error:
Cannot find module 'radix-vue' or its corresponding type declarations.
Expected behavior
No response
Conext & Screenshots (if applicable)
No response

Bug has been fixed when i restarted VS Code.

in VSCode install these two extensions

https://marketplace.visualstudio.com/items?itemName=Vue.volar
https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin
Disable built-in VSCode TypeScript extensions

For Volar 2 (not release yet) step 3 is redundant I think xd


Item Deletion "Remove Advancement Changes" Dialog Doesn't Show

Zand — Today at 6:14 PM
Think i ran into a bug 🤔
advancements arent being removed when the class/race/background are deleted from the sheet, not is any option to remove or delete them present when i use tidysheets
switching to default it works fine
anyone else having this problem?

I ran some tests, and I see that the alpha sheets are not presenting the Advancement-specific delete dialog. Here is the new sheet deleting a lvl 10 druid class:

Here are the default sheets:

The alpha sheets are just deleting the item and not invoking the Advancement Manager.

👏 all done


Crash on launch "Initial roundtrip failed!: NoWaylandLib"

stack backtrace:
   0:     0x56133e43fdbb - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h04e1659590c75b7f
   1:     0x56133e2dcbfc - core::fmt::write::h934b5967ac569ed6
   2:     0x56133e42e784 - std::io::Write::write_fmt::h5ab422a8ac80f319
   3:     0x56133e4356f0 - std::panicking::default_hook::{{closure}}::h494c7f9d4414967f
   4:     0x56133e436022 - std::panicking::rust_panic_with_hook::h003457efeb6d6b49
   5:     0x56133e440158 - std::panicking::begin_panic_handler::{{closure}}::h251c8136df2fab02
   6:     0x56133e4400d6 - std::sys_common::backtrace::__rust_end_short_backtrace::h27a470ecec345006
   7:     0x56133e435a22 - rust_begin_unwind
   8:     0x56133e2510a0 - core::panicking::panic_fmt::h4fce74342b1c33c5
   9:     0x56133e251212 - core::result::unwrap_failed::h8c4993f73e62bc49
  10:     0x56133e535011 - yofi::main::hcd1b7123951e1917
  11:     0x56133e562b73 - std::sys_common::backtrace::__rust_begin_short_backtrace::h9a2b35493f4ade7f
  12:     0x56133e530a60 - main
  13:     0x7f379f4561d7 - __libc_start_call_main
  14:     0x7f379f456297 - __libc_start_main_impl
  15:     0x56133e263a01 - _start
  16:                0x0 - <unknown>```

Are you using a wayland compositor (wlroots-based to be precised)? What's the output of ldconfig -p | grep wayland?

I'm using SwayWM. There's no ldconfig cache on NixOS (https://github.com/NixOS/nixpkgs/issues/35387) so that command doesn't work:
$ ldconfig -p | grep wayland
ldconfig: Can't open cache file /nix/store/q29bwjibv9gi9n86203s38n0577w09sx-glibc-2.33-117/etc/ld.so.cache
: No such file or directory

According to this the problem is with connection to the $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY. Maybe some permission missing? You may find the issue with strace -e openat `which yofi` 2>&1 | grep $XDG_RUNTIME_DIR .

Ah, not really. The problem is actually that the app cannot find libwayland-client.so library.

I consider this one as unrelated to yofi directly so closing this. Feel free to add some details and reopen

Im having the same issue. Void Linux - Sway WM.
The issue is with line 159-161 in Master:
    let (env, display, queue) =         sctk::new_default_environment!(Env, desktop, fields = [layer_shell: SimpleGlobal::new()])             .expect("Initial roundtrip failed!");
It seems the issue is only in 0.16 of sctk. I tried an example of the master branch with cargo run --example image_viewer and it worked. Seems to be a bit of a rewrite to go from 0.16 to master though, so I don't know if you'll want to do that yet.
Would be happy to use yofi!

That seems strange for me, could you also try to launch yofi with dlopen?:
diff --git a/Cargo.toml b/Cargo.toml
index 7227979..b84d31d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -17,7 +17,7 @@ fontconfig = { version = "0.5.0", features = ["dlopen"] }

 anyhow = "1.0.51"
 wayland-protocols = { version = "0.29.5", default-features = false, features = ["unstable_protocols", "client"] }
-sctk = { version = "0.16.0", package = "smithay-client-toolkit", features = ["calloop"] }
+sctk = { version = "0.16.0", package = "smithay-client-toolkit", features = ["calloop", "dlopen"] }
 raqote = { version = "0.8.1", default-features = false }
 xdg = "2.4.0"
 fep = { version = "1.3.0", package = "freedesktop_entry_parser" }

SCTK's master is being significantly rewritten indeed. And I could upgrade only once it released.

Sorry that doesn't seem to change anything. I have the same error with kickoff, so i think its just somehow SCTK


need http package update due to security issues

Hello there!
Can you update the package to get the latest http package because there is a security issue:
https://github.com/advisories/GHSA-4rgh-jx4f-qfcq

@abinvs-2019  any news here????

Sure will update, actually i dont get required time. Any PR's are welcome.

Great! I will create a pr today. Will you be able to merge it? @abinvs-2019

Merged!. Good work.

Can you ref the PR here, So that i can close it. Great work by the way.

#6

@abinvs-2019 please update on pub dev

@abinvs-2019 any news here?

Actually after this PR merge to master, there is an sdk issue. Can you run it in local and come with a PR. I was not able to run and check.

@abinvs-2019 can you show me the error because i cannot reproduce that.

@TetrixGauss Because gmaps_by_road_distance_calculator depends on http >=1.2.1 which requires SDK version ^3.3.0, version solving failed.
The issue is with the SDK version using.

@abinvs-2019 I ll fix it and update the package!

@TetrixGauss sure.

@TetrixGauss i am waiting for a new release😍

@abinvs-2019  PR #7 ready

@TetrixGauss  i am still facing some issues, I think it is with my flutter versions: * Try updating the following constraints: flutter pub add flutter:'{"version":"^0.0.0","sdk":"flutter"}' flutter_polyline_points:^2.0.0 dev:flutter_test:'{"version":"^0.0.0","sdk":"flutter"}' google_maps_flutter:^2.5.3 latlong2:^0.9.1
flutter doctor -v
`[✓] Flutter (Channel stable, 3.16.0, on macOS 14.4 23E214 darwin-arm64
(Rosetta), locale en-IN)
• Flutter version 3.16.0 on channel stable at /Users/fao/fvm/versions/old
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision db7ef5bf9f (8 months ago), 2023-11-15 11:25:44 -0800
• Engine revision 74d16627b9
• Dart version 3.2.0
• DevTools version 2.28.2
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0-rc3)
• Android SDK at /Users/fao/Library/Android/sdk
• Platform android-34, build-tools 34.0.0-rc3
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 15.4)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 15F31d
• CocoaPods version 1.14.3
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 2022.2)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 17.0.6+0-17.0.6b802.4-9586694)
[✓] VS Code (version 1.89.1)
• VS Code at /Users/fao/Downloads/App Store Connect_files/Visual Studio Code.app/Contents
• Flutter extension version 3.90.0
[✓] Connected device (2 available)
• macOS (desktop) • macos  • darwin-arm64   • macOS 14.4 23E214 darwin-arm64 (Rosetta)
• Chrome (web)    • chrome • web-javascript • Google Chrome 126.0.6478.127
[✓] Network resources
• All expected network resources are available.
• No issues found!`

Can you check on this if possible?

@abinvs-2019 what kind of issues? Try updating to the latest flutter version! I have tried the merged master and everything works fine.

I think my flutter version is not the latest one. Let me try it. Thanks for the help.

@abinvs-2019 any news? are you going to upload to pub dev please?

Yes, i am updating, Just got busy with some other works.

@TetrixGauss I have updated the new version! <3

@abinvs-2019 i guess it needs time? because i see the 2.0.5 version on pub dev

@abinvs-2019
still 2.0.5


When Ref allel does not show up in GnomadV3, 0 frequency of Alt reported?

Dear Gnomad team, I'v already asked this question on biostars (https://www.biostars.org/p/458734/#460285) and also drop an email to<EMAIL_ADDRESS>some time ago but newer get a response (
shortly:
there is an snp https://www.biostars.org/p/458734/#459297
with an alt allele frequency of 9.99979e-01 according to gnomadv2 exomes
BUT it is absent in gnomadv3 genomes which clearly is not true (it just can not be possible given the alt frequency close to 1).
I'll apreciate some clarification, couse I need to understand the data limitations to build the pipline I'm developing accodingly!
Thanks for your efforts and best wishes, Eugene Albert

Hi @EugeneEA,
It looks like the reference sequence changed between GRCh37 and GRCh38.
In gnomAD v2, rs142200057 is an insertion (2-31805880-A-AG) and the reference sequence starting at 2-31805880 is AGGCTT
https://genome.ucsc.edu/cgi-bin/hgTracks?db=hg19&position=chr2%3A31805880-31805885
In GRCh38, the reference sequence starting at the equivalent coordinate (2-31580810) is AGGGCTT
https://genome.ucsc.edu/cgi-bin/hgTracks?db=hg38&position=chr2%3A31580810-31580816
Thus, this sequence identified would not be called as a variant in gnomAD v3.

Hi @nawatts thanks - that does indeed escape my attention and that does explain why there is no insertion in this position in gnomadV3.
Also I'd like to point out that this rises the other issue: if mapping was done on GRCh37 first, it is virtually imposible to liftover .vcf file to GRCh38 correctly (meaning to destinguish how many G are in that position). And indeed if you'll look up rs142200057 in the gnomadV2 liftover file (https://storage.googleapis.com/gnomad-public/release/2.1.1/liftover_grch38/vcf/exomes/gnomad.exomes.r2.1.1.sites.2.liftover_grch38.vcf.bgz) you'll find that this SNP has frequency of AF=9.99979e-01 - and now (in GRCh38) imply the genotype GGGG, which is stil not true ;)
So actually GnomadV2 AND gnomadV3 shows correct frequencies of correct genotypes 9.99979e-01 of GGG and 0 of GGGG respectively (each for their own build) BUT GnomadV2_liftover demonstrates wrong frequency of 9.99979e-01 for GGGG.
And probably this is why in ClinVar all frequency of major genotype (GGG) are low (switched with minor GGGG)
https://www.ncbi.nlm.nih.gov/snp/rs142200057
Best, Eugene

Is my interpretation correct?

I couldn't say. I'm not a bioinformatician and am out of my depth here.
Generally though, the gnomAD v2 liftover is known to be imperfect and is intended as a stopgap until a GRCh38 exome dataset is produced.
https://gnomad.broadinstitute.org/faq#when-are-exomes-going-to-be-available-on-grch38


Cannot find module 'next/dist/lib/link.js'

I upgraded to Next.js 8 and they changed the location of Router.js and Link.js. When running my next project I get the following Error: Error: Cannot find module 'next/dist/lib/link.js'. If I look into the next directory in my node_modules it's true. next/dist/lib/link.js should be next/dist/client/link.js. Same goes for the router.js file.
I think updating next in your dependency should fix the error.

same

any update?

@vonschau please can you update version and release? 👍 👍 👍 👍 👍

any update?

Yeah same?? Update?

Will this package be fixed for next.js 8 please?

Hi guys,
I just upgraded Next.js and package is working again. Thanks for your patience.
V.


Update gleam to v0.4

Fixes #90.

LGTM, thanks!

Thank you!

@emilio, can you update crate to "0.8.2"?

Done, sorry!
On Sun, Mar 12, 2017 at 07:44:52PM -0700, sotaroikeda wrote:

@emilio, can you update crate to "0.8.2"?
--
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/emilio/rust-offscreen-rendering-context/pull/91#issuecomment-286003168

Thanks!


fix: remove use of optional chaining

This was causing issues with downstream polymer builds (found while working in Brightspace/brightspace-activity-details-ui).

Thanks for catching that Devon!

No problem 😄


Fixed logic for dropdown close cancellation

Fixes #156

This change is

Review status: 0 of 2 files reviewed at latest revision, 1 unresolved discussion.

vaadin-date-picker.html, line 478 [r2] (raw file):
To me is more natural to use Regexp, indexOf !== -1 works but takes my time. I miss a contains method in JS string.
if (/tap|mousedown|touchstart/.test(e.detail.type))

Comments from Reviewable

vaadin-date-picker.html, line 478 [r2] (raw file):
:thumbsup: Switched to regexp

Comments from Reviewable

Reviewed 1 of 2 files at r1, 1 of 1 files at r3.
Review status: all files reviewed at latest revision, all discussions resolved, some commit checks failed.

Comments from Reviewable

Does this also fix the "clear" icon as well? Currently seems like you can’t actually clear the date picker value at all.

It sure does. Discussed here also https://github.com/vaadin/vaadin-date-picker/pull/160#issuecomment-208259293

Reviewed 2 of 2 files at r4.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


Profile Details Custom Widget

Issue in ./help/dashboards/guides/profiles.md
In the section #add-widgets is not specified if arrays can be used to fill a widget. The screenshot shows "pointExpiration" selected and it is an array, but if you try to implement it, the fields are always empty in the widget.
So, arrays can be displayed in the profile details widget or not?

Thank you for submitting this issue. We will review the documentation and make the necessary updates as quickly as possible. Tracking internally in PLAT-207411.


add loan broker application

i just added the icon for step function.
and i agree, the tags with individual services are a little too much. we already have the icons, which will have tooltips soon and the title also contains all the services used.

Thanks @tinyg210 👍 I just realized that the README states that an API key is required, but there is no tag for PRO in the docs. Not sure if it requires PRO, but either the README or the docs should be adapted accordingly 🙂
Regarding the double-service tags: please decide how you want to consolidate this @tinyg210 @HarshCasper 🙏
Doesn't have to be tackled with this PR.
If you could just clarify the requirement for PRO in this sample it's ready to be merged IMO 🚀

i tested the app using only the community edition and everything works as expected (including cloud pods). i adjusted the REDAME file accordingly.


Added load generator support options to firesim.

To use the load generator, make sure you set your network topology to example_1config, your workloadname to lnic-load-balance.json, and your defaulthwconfig to firesim-rocket-quadcore-lnic-llc4mb-ddr3-90mhz, with AFI agfi-078638fecae39054c (from July 27, 2020) or later. After pulling in this change, you'll also need to navigate to chipyard/software/local_firesim and run the following:
git submodule update --init PcapPlusPlus
cd PcapPlusPlus
./configure-linux (Enter n for both options)
make -j16
sudo make install
Then add the following to config_runtime.ini, in its own section:
[load_gen]
use_load_gen=yes
test_type=ONE_CONTEXT_FOUR_CORES
dist_type=FIXED
request_rate_lambda_inverse=5000
min_service_time=300
max_service_time=10000
exp_dist_scale_factor=10000
exp_dist_decay_const=3.5
bimodal_dist_high_mean=5000
bimodal_dist_high_stdev=300
bimodal_dist_low_mean=500
bimodal_dist_low_stdev=30
bimodal_dist_fraction_high=0.5
fixed_dist_cycles=800
c1_stall_factor=100
c1_stall_freq=10
Available options for test_type are described in chipyard/tests/lnic-load-balance.c. Available options for dist_type are described in chipyard/sims/firesim/target-design/switch/switch.cc. c1_stall_factor is a unitless multiplier factor on the message service time, c1_stall_freq is the number of messages between each stall, exp_dist_decay_const is an arbitrary message service time distribution decay rate control, and bimodal_dist_fraction_high is a decimal number between 0 and 1. All other parameters are provided in cycles.

Thanks for putting this together! I'll let you know if I have any questions as I start playing with it :-)


Lack of documentation...

Hello,
I managed to burn Gladys Floppy image to my Raspberry's SD Card, but what now ?
Everything bootep up, but nothing shows up, I can't connect to the local http server or else...
Could you please expand the "Getting Started" section to go further?
Thanks.

Hello,
Did you follow the instructions of the installations pages ? ( http://gladysproject.com/en/installation )
Did you expand the partition to fit the SD card size ?


about how to use this package

Dear @pulkitag ,
First of all, thanks a lot for sharing the code, I've waiting for it since a long time ago :p
I had installed official caffe already.
Could you list the steps in more details on how to use the code you provided? Such as how to train / test the KITTI dataset and corresponding commands. I'm not quite understand the Usage in README.mb.
Many thanks~
Milton

I will detail the usage hopefully by this weekend.


Cognito UnAuth Role

Instead of allowing DynamoDB DeleteItem for UnAuth Cognito role, make sure always Auth'd

Related #56


THPT LQD KH

vietnam?

Yes, I'm From Vietnam
On Fri, Sep 24, 2021, 10:16 AM ruadoVn @.***> wrote:

vietnam?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/JetBrains/swot/pull/12552#issuecomment-926310939, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AMF45E3HBYJSQ4SS5KUFFLDUDPUPHANCNFSM5ET2KSHA
.

same lol

@MinhTXGENZ I am sorry, I am not sure what are your actual needs.
You submitted a domain c3lqdon-khanhhoa.edu.vn to add to the repository. However, the domain is not mentioned at http://lqdon.khanhhoa.edu.vn/ website, which is the official website of the school.
The school staff have email in the similar domain, but different, as I can read at http://lqdon.khanhhoa.edu.vn/gioi-thieu/so-do-to-chuc/to-chuyen-mon.html.
I would suggest to add the domain khanhhoa.edu.vn, but it seems not belonging to a particular school. What organization owns khanhhoa.edu.vn domain?
Please reply. Thank you.

The khanhhoa.edu.vn domain is for whole all School in my Province but I just want to Submit only my school's Domain.

@MinhTXGENZ Thank you for the clarification. Is there any instruction that you have from your school that confirms that your school uses domain c3lqdon-khanhhoa.edu.vn? Do I understand you right that all students in your school have email addresses with a pattern<EMAIL_ADDRESS>I appreciate it very much if you upload a proof, which shows that the school recognizes the domain c3lqdon-khanhhoa.edu.vn as an official email domain for the students.
You can provide us with any of the following:

A copy of instruction (a hard-copy or electronic one) given to you by the school that tells you to use an email address in this email domain
An URL of a page at the official school website that says that students use this email domain
A reference to a recognized journal where an article was published by someone from the school, with explicit affiliation to the school, and e-mail address from the email domain
A WHOIS data that link the email domain to the school somehow
A copy of official letter from the school representative saying that the school provides e-mail addresses in this domain to the students
Anything else that can prove this fact in similar way, i.e. can be verified independently.

Hmmmmm, I just have a announce from my school that the student will use the c3lqdon-khanhhoa.edu.vn domain.
Here is the link: http://lqdon.khanhhoa.edu.vn/tin-tuc/tin-tuc-truong/thong-bao-hoc-truc-tuyen.html
You can see in the Excel Files that stored all the Account (Microsoft Office) for student to Learning with the Microsoft Teams.
You can also see my account in that files (My name is Bùi Quang Minh Tâm) in the "1a-Taikhoan K10.xlsx". And I promise all Users in that file are the Student in the grade 10 with me.

@MinhTXGENZ Thank you very much for your patience and the clarification!
Pull request merged. Thank you!

@MinhTXGENZ Thank you very much for your patience and the clarification!
Pull request merged. Thank you!

Thank you to merged our Domain.


Add outbound telnet support

installer_telnet can now be set to listen (the previous mode), connect, or none. When connect is set, the installer will make an outbound connection to a specified host and port to deliver console output during the installation process.

@kpfleming
Could you rebase to current devel branch?
This will fix the CI-Job.

@kpfleming
Could you rebase to current devel branch?
This will fix the CI-Job.

Done.

Done.

Clearly I need to start running shellcheck locally before submitting PRs :-) will fix.

Clearly I need to start running shellcheck locally before submitting PRs :-) will fix.

np! Code is patient and repos allow force-pushes.
Thanks for your efforts!

np! Code is patient and repos allow force-pushes.
Thanks for your efforts!

Nice idea and implementation!

Nice idea and implementation!

This is a very nice idea. Makes me wonder if i would also be possible to push the logs to a syslog-ng server?

This is a very nice idea. Makes me wonder if i would also be possible to push the logs to a syslog-ng server?


add a news item for 250,000 annotation

We should have a news item for this. It was a bit late because adding Tay's data  zoomed us past it before christmas.

On the main site now.


Set string as sort order

Adds method for setting string as sort order to support other sorting orders like CONTACT_LAST_UPDATED_TIMESTAMP etc.

Thank you, uploaded to bintray, should be available already

@blainepwnz
Getting this error on project build

What went wrong:
Execution failed for task ':contacts:dataBindingMergeDependencyArtifactsStagingDebug'.
Could not resolve all files for configuration ':contacts:stagingDebugCompileClasspath'.
Could not find com.tomash:androidcontacts:1.14.2.

Could you please check on this?


useAllFormFields() => weird behavior for blocks field

Bug Report
The output of useAllFormFields() is... weird for the blocks field (named content in this screenshot):

My expectation would be for it to be an array, and not split up into many different entries. useAllFormFields() is used in the SEO plugin in the custom react components to get access to the document's fields. If this is expected behavior (why?), is there an alternative hook I can use there which works better?
Steps to Reproduce
Can use the seo plugin and have a blocks field in your collection: https://github.com/payloadcms/plugin-seo/blob/1ce76df409723e13c12af5871ee5776edafe667d/src/fields/MetaTitle.tsx#L39
Other Details
Payload version: 1.5.9

Hey @AlessioGr — this is indeed intended behavior. Forms in payload use dot notation to nest their values, because each field has more than a value stored in its state. For example, in addition to field values, we need to store valid, passesCondition, etc.
What you're looking for is form data. You can convert form state back and forth between the shape of the data and the shape of the form state itself.
Check out the following:
import { reduceFieldsToValues } from 'payload/components/forms'

This is what you should use. But I'll close this for now because it's working as intended.
How's that? 👍

Hey @AlessioGr — this is indeed intended behavior. Forms in payload use dot notation to nest their values, because each field has more than a value stored in its state. For example, in addition to field values, we need to store valid, passesCondition, etc.
What you're looking for is form data. You can convert form state back and forth between the shape of the data and the shape of the form state itself.
Check out the following:
import { reduceFieldsToValues } from 'payload/components/forms'

This is what you should use. But I'll close this for now because it's working as intended.
How's that? 👍

Hey, thank you! reduceFieldsToValues works perfectly for me!

@AlessioGr did you ever find yourself requiring the total number of, in your image, the expanded node content? I've noticed reduceFieldsToValue doesn't include these important array length nodes


Prevent updates to Course Connection

Critical Changes
Changes
Update to Ensure Data Integrity
We've added a trigger handler (CCON_PreventUpdate_TDTM) on Course Connection to prevent changes to Contact and Course Offering fields if there are any Term Grades or Attendance Events associated with the record.
Issues Closed
Closes #867
New Metadata
CCON_PreventUpdate_TDTM
CCON_PreventUpdate_TEST
Deleted Metadata
Testing Notes

@skosgi1 - moved PR text from Critical Changes to Changes

@robertbwatson Addressed the feedback, can you please give it another pass?

@robertbwatson Updated the code based on the feedback. Can you give it another shot? Thank you.

@robertbwatson Removed the Course Offering TDTM and its files.

Closing this for now until we reach a decision on a EDA Settings option for prevent deletion logic.

@skosgi1 I think the "Issue Closed" is incorrect here. Should it be this one? https://github.com/SalesforceFoundation/EDA/issues/904

@skosgi1 I think the "Issue Closed" is incorrect here. Should it be this one? #904

Thanks for catching this @dgamboni . Update it to 867.


[firebase_messaging] onResume fires when notification arrive not on click

Hello everyone, I installed firebase_messaging on my flutter app following the official guide.
Everything Is working as expected but when notification arrives on iOS they fire the onResume function, instead I would like to fire onResume when user click notification.
This is the code where I initialize the plugin

code
Future<void> init(User loggedUser) async {
    _loggedUser = loggedUser;

    if (Platform.isIOS) { await askIOSPermissions(); }

    _firebaseMessaging.configure(
      onMessage: _handleNotificationReceived,
      onLaunch: _handleNotificationOpened,
      onResume: _handleNotificationOpened
    );

    _tokenSubscription = _firebaseMessaging.onTokenRefresh.listen((token){
      if (token != null) _storeToken(token);
    });
  }

Nothing special here I followed the official guide.
in the onMessage callback I'm updating app badge accordingly

code
Future<void> _handleNotificationReceived(Map<String, dynamic> message) async {

    final data = message['data'] ?? message;

    if(data != null) {
      if(data['type'] == 'message'){
        _messageCount = _messageCount + 1;
        notifyListeners();
      }
      else {
        _notificationCount = _notificationCount + 1;
        notifyListeners();
      }
    }
  }

in the onLaunch and in onResume callback I'm navigating user to the correct screen

code
Future<void> _handleNotificationOpened(Map<String, dynamic> message) {

    final dynamic navigationBar = bottomNavigationKey.currentWidget;

    final data = message['data'] ?? message;
    if (data != null) {
      switch (data['type']) {
        case 'message':
          navigationBar.onTap(TabsPage.PROFILE_PAGE_INDEX);
          navigatorKey.currentState.pushNamed(ConversationsPage.route);
          break;
        case 'post':
          final int postId = int.parse(data['id']);
          if (postId != null) {
            navigatorKey.currentState.pushNamed(PostPage.route, arguments: PostPageArguments(postId: postId, pageTitle: 'Big Art Wall'));
          }
          break;
        case 'user':
          final int userId = int.parse(data['id']);
          if (userId != null) {
            navigatorKey.currentState.pushNamed(ProfilePage.route, arguments: ProfilePageArguments(userId: userId));
          }
          break;
        default: navigationBar.onTap(TabsPage.NOTIFICATION_PAGE_INDEX);
      }
    }
    else {
      navigationBar.onTap(TabsPage.NOTIFICATION_PAGE_INDEX);
    }
  }

The problem is that the onResume is called every time a notification arrive, so when I open the app again I need to pop a lot of screen.
I could call popToRoot before push again in the onResume callback but in the official guide it is written that onResume is fired only when the notification is currently clicked.
Thank you,
Fabrizio
flutter doctor -v
[✓] Flutter (Channel beta, v1.12.13+hotfix.6, on Mac OS X 10.15.1 19B88, locale
    it-IT)
    • Flutter version 1.12.13+hotfix.6 at
      /Users/fabriziotognetto/Library/flutter
    • Framework revision 18cd7a3601 (3 weeks ago), 2019-12-11 06:35:39 -0800
    • Engine revision 2994f7e1e6
    • Dart version 2.7.0

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/fabriziotognetto/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling
      support)
    • Platform android-28, build-tools 28.0.3
    • ANDROID_HOME = /Users/fabriziotognetto/Library/Android/sdk
    • ANDROID_SDK_ROOT = /Users/fabriziotognetto/Library/Android/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.3, Build version 11C29
    • CocoaPods version 1.8.4

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 40.0.2
    • Dart plugin version 191.8423
    • Java version OpenJDK Runtime Environment (build
      1.8.0_202-release-1483-b49-5587405)

[✓] IntelliJ IDEA Ultimate Edition (version 2018.1.4)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 31.3.1
    • Dart plugin version 181.4892.1

[✓] VS Code (version 1.41.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.7.1

[✓] Connected device (2 available)
    • iPhone   • 279cd1e557ee696c72364c8b7a37b7a4a1be0098 • ios • iOS 13.2.2
    • iPhone 8 • DDBEA521-590C-463B-800D-33023EE7DB18     • ios •
      com.apple.CoreSimulator.SimRuntime.iOS-13-3 (simulator)

• No issues found!

This is happening only on iOS, on Android it works as expected

I noticed that removing
 if #available(iOS 10.0, *) {
      UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
 }

in ios/Runner/AppDelegate.swift it starts to fire onLaunch / onResume callback when I click notification.
Anyway the problem persist because the callback is fired also when the notification arrives (without clicking)

UPDATE
i was sending notification with content-available: 1
Removing that everything works as expected. Notification arrives (no callback) and when I click notification callback fires.
I confirm that this is working because I removed
 if #available(iOS 10.0, *) {
      UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
 }

from ios/Runner/AppDelegate.swift
I leave this issue opened because this is written in the official guide here

@quantosapplications so are you saying that the code above is unnecessary or are there any implications/side effects when removing it?

In my case adding it the onResume and onLaunch callback does not fire, removing it the callbacks works as expected

So there are no side effects when removing the block?

@jbxbergdev i’ve tested with flutter beta on iOS 13 and I didn’t found side effects. Everything working as expected..

possibly related to https://github.com/FirebaseExtended/flutterfire/issues/1677

@quantosapplications Thanks for sharing.
Could you share your notification push data structure?
https://github.com/FirebaseExtended/flutterfire/issues/1644
here many people suffering from bug, callback such as onMessage, onResume, onLaunch
not been called properly.
I've tried like you remove the lines. but not work in real devices.
Thanks in advance 😄

Hello @BansookNam, yes this is a typical notification structure I'm using
{
    tokens: [ 'USER_TOKEN_1', 'USER_TOKEN_2', ... ],
    notification: {
        body: 'BODY_OF_NOTIFICATION',
        title: 'TITLE_OF_NOTIFICATION'
    },
    data: {
        notificationId: '123',
        ...OTHER_CUSTOM_DATA
    },
    android: {
        notification: {
            sound: 'default',
            clickAction: 'FLUTTER_NOTIFICATION_CLICK',
            notificationCount: 1,
            imageUrl: 'https://url_of_image'
        },
        priority: 'high'
    },
    apns: {
        payload: {
            aps: {
                badge: NUMBER_OF_BADGE,
                mutableContent: true,
                sound: 'default'
            }
        },
        fcmOptions: {
            imageUrl: 'https://url_of_image'
        }
    }
}

I'm using a cloud function in node to send fcm push with firebase-admin.
Supposing to call message the object above:
const response = await admin.messaging().sendMulticast(message);

@quantosapplications Thanks for sharing!
My real problem was a conflict with plugin "flutter_local_notifications".
I had to remove it when Platform is IOS.

hey @quantosapplications or anyone, is it possible to somehow receive the background notification in onMessage so I can update the badge count even in background?

Hey all 👋
As part of our roadmap (#2582) we've just shipped a complete rework of the firebase_messaging plugin that aims to solve this and many other issues.
If you can, please try out the dev release (see the migration guide for upgrading and for changes) and if you have any feedback then join in the discussion here.
Given the scope of the rework I'm going to go ahead and close this issue in favor of trying out the latest plugin.
Thanks everyone.


Make find_func use rom_table_lookup_fn

My thoughts were that macros make code more extensible and while it’s true that the macro itself is not very friendly adding definitions become much easier
At the beginning I actually wanted to make a macro called rom_function!
That works like that:
‘’’
rom_function(map_page, page: ptr, page_mode: *const u16,..., MP)
‘’’
But rust is too young for that... are you sure it’s so bad to read? I think it actually makes it more readable as an abstraction but indeed that macro implementation is not friendly

My thoughts were that macros make code more extensible and while it’s true that the macro itself is not very friendly adding definitions become much easier
At the beginning I actually wanted to make a macro called rom_function!
That works like that:
‘’’
rom_function(map_page, page: ptr, page_mode: *const u16,..., MP)
‘’’
But rust is too young for that... are you sure it’s so bad to read? I think it actually makes it more readable as an abstraction but indeed that macro implementation is not friendly

Beautiful:

Beautiful:

I think I am going to close it since its not going to get in anytime soon and I already implemented it in the HAL project.


[Snyk] Security upgrade YamlDotNet from 3.0.0 to 5.0.0

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to fix one or more vulnerable packages in the `nuget` dependencies of this project.
Changes included in this PR

Changes to the following files to upgrade the vulnerable dependencies to a fixed version:

src/CodeGeneration/CodeGeneration.YamlTestsRunner/packages.config

Vulnerabilities that will be fixed
With an upgrade:

Severity
Priority Score (*)
Issue
Breaking Change
Exploit Maturity

604/1000  Why? Has a fix available, CVSS 7.8
Arbitrary Code Execution SNYK-DOTNET-YAMLDOTNET-60255
Yes
No Known Exploit

(*) Note that the real score may have changed since the PR was raised.
Check the changes in this PR to ensure they won't cause issues with your project.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open fix PRs.
For more information:
🧐 View latest project report
🛠 Adjust project settings
📚 Read more about Snyk's upgrade and patch logic

Learn how to fix vulnerabilities with free interactive lessons:
🦉 Arbitrary Code Execution

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Do you mind if I publish this to nuget?

Hi. Great plugin.
NUGET is a package manager for MS Visual Studio. Do you mind if I publish and maintain this editor there through my dev account? I will keep all the (c) info, links to your website and everything. Thanks.
PS. I'm actually already in the process of publishing it, but if you mind, I'll abort/take it down. https://github.com/jitbit/TrumbowygNuget/
PPS. http://nuget.org just in case

Hi!
It's OK, don't worry :)


Predicting singletons

Hi,
Is it possible to predict singletons with this model?
I trained a model with my own data which contained singletons, but when I predict some text with my model it will only return clusters with at least two mentions.
Thank you!

Singletons aren't coreferential, so that would just be entity recoginition, wouldn't it? The idea of the coreference resolution is to determine which clusters of words refer to the same real-world entity.


PinEvent

Try to check EA calls, a new call they added (when browser from Trade Pile to Market Search or Watchlist) to pin-river.data.ea.com called pinevent there is some information about client and page.
Maybe they want kill all bots that don't use it? banwave incomming ...

did you checked if the PIN event changes if you have a temp BAN?

I don't think so, cause sometime i got temp ban from web ui (fast bid) XD

As I can see it's always the same call right?

it change when you browse from different area: transfert list > search items (each page search) > watchlist
s value is autoincrement for each call.
http://nopaste.inside-irc.net/paste/RgPlXdpUW/

It is only affected to watchlist/tradepile/transfermarket?

evey call from web menu: watchlist/tradepile/transfermarket/search/unassigned ...

Ok - Then we can just implement it into every Task in FutClient.cs

Can you help me how to setup fiddler to see these requests - I just these the "tunnel" packets and my HTTPS decryption is enabled.

There are a lot of tuttorial on google, anyway you need also to add certificate to your machine or fidder can't see encrypted traffic

Surely, but I don't think the problem are the settings of my Fiddler, because it decrypts the whole EA traffic.

Can you close the issue or provide a fiddler trace? There is no traffic flow to pin-river.data.ea.com:

On the companion app there is a flow to pin-river.data.ea.com and I plan to implement it:

You can easily see pin events in firebug http://prntscr.com/ae4o4j
I have a very clumsy implantation of it, but not on the toolkit level, and I feel that it helped with bans and other flagging issues.

I cannot find FireBug for Google Chrome :( - If I click on the installation link on their webpage, nothing happens - If you will just send me your Request/Response I can easily add it to the toolkit.

In Chrome you can see under Network http://prntscr.com/ae9bjz, how can I send it to you? Also I'm just coding as a hobby, I don't think my hackish - code is public-worthy but OK.

Thanks! I can see the request now - I don't get why I can't see them with Fiddler. Anyways - How did you implement these requests? Do you have a list of these ids:
fromid: "Transfer List"
toid: "Transfer Targets"
I would bet all but trydis are just hobby developers.

Basically I did a request that takes fromid, toid, menu, status, etc, and then when I call the toolkit, get trade pile for example, after I do a pin request too.  Also there is a mobile too, parameter, if you'll have that, I could just send you the code.

Request implementation I can easily by my own, but how to call is demanding. It should be done automatically after each request.

I could not do automatically, I don't know the toolkit enough, I did 2 auto request
but then I give up. I'm just manually calling it after I call LoginAsync for example.

I will to try to implement this tonight and send a pull request.

The request itself is not complicated, quite simple, I just format a string as json by string.format, I'm not even sure I'm sending the right pin requests, in my spaghetti code, but it did helped, I had bans before and I don't remember having any bans since i implemented it but is been only 2-3 weeks.

Yes, but you need to set your sid, nucleus id, the toid and fromid each request. Then you need to know which request you made before.

Do you know for which requests we have PinRequests so far I seen:

GetWatchlist
GetTradepile
PlayerSearch

What else?

Yes, I set those manually as parameters, here are the headers I'm using maybe it helps.
I'm sending a pin request after each call, after listing a card, removing a card, login, unassigned, etc. As far as I know each call has a pin request.
`
protected void AddPinHeaders()
{
HttpClient.AddConnectionKeepAliveHeader();
HttpClient.AddRequestHeader("Origin", "https://www.easports.com");
HttpClient.AddRequestHeader("x-ea-taxv", "1.1");
HttpClient.AddRequestHeader("x-ea-game-type", "sku");
AddUserAgent();
HttpClient.AddRequestHeader(HttpHeaders.ContentType, "application/json");
HttpClient.AddRequestHeader("X-Requested-With", "ShockwaveFlash/<IP_ADDRESS>6");
HttpClient.AddRequestHeader("x-ea-game-id", "fifa16");
AddAcceptHeader("/");
AddReferrerHeader("https://www.easports.com/iframe/fut16/bundles/futweb/web/flash/FifaUltimateTeam.swf?cl=155438");
AddAcceptEncodingHeader();
AddAcceptLanguageHeader();
}
    protected void AddPinHeadersMobile()
    {
        HttpClient.AddConnectionKeepAliveHeader();
        HttpClient.AddRequestHeader("Origin", "file://");
        HttpClient.AddRequestHeader("x-ea-taxv", "1");
        HttpClient.AddRequestHeader("CSP", "active");
        AddMobileUserAgent();
        HttpClient.AddRequestHeader(HttpHeaders.ContentType, "application/json");
        AddAcceptHeader("text/plain, */*; q=0.01");
        HttpClient.AddRequestHeader("x-ea-game-id-type", "sellid");
        HttpClient.AddRequestHeader("x-ea-game-id", "859051");
        AddAcceptEncodingHeader();
        AddAcceptLanguageHeader();
    }`

`using System.Net.Http;
using System.Threading.Tasks;
using UltimateTeam.Toolkit.Constants;
using UltimateTeam.Toolkit.Models;
namespace UltimateTeam.Toolkit.Requests
{
internal class PinEventRequest : FutRequestBase, IFutRequest
{
    bool mobile = false;
    int s = 0;
    string fromid = "";
    string toid = "";
    string menu = "";
    string en = "";
    bool status = false;

    public PinEventRequest(bool _mobile, int _s, string _fromid, string _toid, string _menu, string _en, bool _status)
    {
        mobile = _mobile;
        s = _s;
        en = _en;
        fromid = _fromid;
        toid = _toid;
        menu = _menu;
        status = _status;
    }

    public async Task<byte> PerformRequestAsync()
    {
        string content = status ? string.Format(@"{{""v"":""{12}"",""taxv"":1.1,""tidt"":""sku"",""tid"":""{0}"",""rel"":""prod"",""et"":""client"",""sid"":""{1}"",""plat"":""{2}"",""custom"":{{{11}}},""loc"":""en_GB"",""events"":[{{""core"":{{""pidm"":{{""nucleus"":""{3}""}},""s"":{4},""pid"":""{5}"",""en"":""{13}"",""pidt"":""persona"",""ts_event"":""{6}""}},""{7}"":""{8}"",""type"":""{9}"",""custom"":{{}}}}],""ts_post"":""{10}""}}",
            mobile ? "859051" : "FUT16WEB", SessionId, mobile ? "android" : "win", NucleusId, s.ToString(), PersonaId, GetTimeSpecial(), toid, fromid, menu, GetTimeSpecial(), mobile ? "\"networkAccess\":\"W\"" : "", mobile ? "<IP_ADDRESS>106" : "v16.0.155438", en) : string.Format(@"{{""v"":""{12}"",""taxv"":1.1,""tidt"":""sku"",""tid"":""{0}"",""rel"":""prod"",""et"":""client"",""sid"":""{1}"",""plat"":""{2}"",""custom"":{{{11}}},""loc"":""en_GB"",""events"":[{{""core"":{{""pidm"":{{""nucleus"":""{3}""}},""s"":{4},""pid"":""{5}"",""en"":""{13}"",""pidt"":""persona"",""ts_event"":""{6}""}},""toid"":""{7}"",""fromid"":""{8}"",""type"":""{9}"",""custom"":{{}}}}],""ts_post"":""{10}""}}",
                mobile ? "859051" : "FUT16WEB", SessionId, mobile ? "android" : "win", NucleusId, s.ToString(), PersonaId, GetTimeSpecial(), toid, fromid, menu, GetTimeSpecial(), mobile ? "\"networkAccess\":\"W\"" : "", mobile ? "<IP_ADDRESS>106" : "v16.0.155438", en);
        if (mobile) { AddPinHeadersMobile(); } else { AddPinHeaders(); }
        var tradePileResponseMessage = await HttpClient.PostAsync(string.Format("https://pin-river.data.ea.com/pinEvents"),
            new StringContent( content, System.Text.Encoding.UTF8, "application/json"
                )
            )
            .ConfigureAwait(false);

        return 0;
    }

    private static string GetTimeSpecial()
    {
        return System.DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ");
    }
}

}`
this is the request

Can you send me the Ids you identified - I would create a Model for the request, because it's better to debug.

I don't have that my parameters looks something like
await utClient.SendPinEventDataAsync(mobileActive, sessionRequests, currentLocation, "Transfer Market Search Results", "menu", "page_view", false);

Yes looking exactly for the IDs like "Transfer Market Search Results", which is set in the variables toid and fromid - The variable menu is always "menu"?

await utClient.SendPinEventDataAsync(mobileActive, pinRequests, "status", "success", "nucleus", "login", true);
await utClient.SendPinEventDataAsync(mobileActive, sessionRequests, currentLocation, "Transfer Market Search", "menu", "page_view", false);
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer List", "menu", "page_view", false);
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Unassigned Items", "menu", "page_view", false);
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer Targets", "menu", "page_view", false);
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer List", "menu", "page_view", false);
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer Market Search", "menu", "page_view", false);
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer Market Search Results", "menu", "page_view", false);
I think tha's all I have the current locations names are the same as the 4th parameter

Nice! Thanks! A few additional questions:

There is no Pin Request if I Bid or BIN? Or I send an item to tradepile? It looks like PinRequests are sent if I click on a new menu item right?

When we call await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer Market Search", "menu", "page_view", false) and when we call await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer Market Search Results", "menu", "page_view", false); ?

No, no pin for place bid/send to trade-pile, Transfer Market Search before SearchAsync Transfer Market Search Results after

So you would do it like this:
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer Market Search", "menu", "page_view", false);

var searchParameters = new PlayerSearchParameters
{
    Page = 1,
    Level = Level.Gold,
    ChemistryStyle = ChemistryStyle.Sniper,
    League = League.BarclaysPremierLeague,
    Nation = Nation.Norway,
    Position = Position.Striker,
    Team = Team.ManchesterUnited
};

var searchResponse = await client.SearchAsync(searchParameters);
foreach (var auctionInfo in searchResponse.AuctionInfo)
{
    // Handle auction data
}

await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer Market Search Results", "menu", "page_view", false);

await utClient.SendPinEventDataAsync(mobileActive, sessionRequests, currentLocation, "Transfer Market Search", "menu", "page_view", false);
currentLocation = "Transfer Market Search";
results = await utClient.SearchAsync(Parameters);
await utClient.SendPinEventDataAsync(mobileActive, sessionRequests, currentLocation, "Transfer Market Search Results", "menu", "page_view", false);
currentLocation = "Transfer Market Search Results";

Ok :+1:
Plus we have:
var purchasedItemsResponse = await client.GetPurchasedItemsAsync();
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Unassigned Items", "menu", "page_view", false);
var watchlistResponse = await client.GetWatchlistAsync();
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer Targets", "menu", "page_view", false);
var tradePileResponse = await client.GetTradePileAsync();
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer List", "menu", "page_view", false);
Right?

await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Unassigned Items", "menu", "page_view", false);
currentLocation = "Unassigned Items";
pinRequests++;
var unassignedList = await utClient.GetPurchasedItemsAsync();
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer Targets", "menu", "page_view", false);
currentLocation = "Transfer Targets";
pinRequests++;
var watchList = await utClient.GetWatchlistAsync();
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer List", "menu", "page_view", false);
currentLocation = "Transfer List";
pinRequests++;
tradePileList = await utClient.GetTradePileAsync();
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Unassigned Items", "menu", "page_view", false);
currentLocation = "Unassigned Items";
pinRequests++;
var unassignedList = await utClient.GetPurchasedItemsAsync();

Ok - We need to count the requests. I don't get it:
Here we send it before:
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Unassigned Items", "menu", "page_view", false);
currentLocation = "Unassigned Items";
pinRequests++;

var unassignedList = await utClient.GetPurchasedItemsAsync();

await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer Targets", "menu", "page_view", false);
currentLocation = "Transfer Targets";
pinRequests++;

var watchList = await utClient.GetWatchlistAsync();

await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer List", "menu", "page_view", false);
currentLocation = "Transfer List";
pinRequests++;

tradePileList = await utClient.GetTradePileAsync();

await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Unassigned Items", "menu", "page_view", false);
currentLocation = "Unassigned Items";
pinRequests++;

var unassignedList = await utClient.GetPurchasedItemsAsync();

Here we send it afterwards:
await utClient.SendPinEventDataAsync(mobileActive, sessionRequests, currentLocation, "Transfer Market Search", "menu", "page_view", false);
currentLocation = "Transfer Market Search";

results = await utClient.SearchAsync(Parameters);

await utClient.SendPinEventDataAsync(mobileActive, sessionRequests, currentLocation, "Transfer Market Search Results", "menu", "page_view", false);
currentLocation = "Transfer Market Search Results";

foreach (var auctionInfo in searchResponse.AuctionInfo)
{
// Handle auction data
}

S is the requests number and yes we need to count here are the parameters
Task SendPinEventDataAsync(bool Mobile, int S, string FromID, string ToID, string Menu, string En, bool Status)

Yes - Clear, but how about the other question - PinRequests for Watchlist, TradePile and Unassigned Items coming BEFORE the calls and for Transfer Market Search/Transfer Market Search Results they are coming AFTER the calls? Really?

I don't know the internalls, I just folowered the calls, Transfer Market Search is the search page http://prntscr.com/aeunp6 I suppose search async goes to that first, and then goes to the results pages.
and then it moves back
if (currentLocation == "Transfer Market Search Results")
{
//pin data event info
await utClient.SendPinEventDataAsync(mobileActive, pinRequests, currentLocation, "Transfer Market Search", "menu", "page_view", false);
currentLocation = "Transfer Market Search";
pinRequests++;
}

I just tested it - You're right:
For Tradepile, Watchlist and Unassigned Items the PinRequest is called before the i.e. GetWatchlist.
For Transfermarket:
PinRequest (Transfer Market Search)
Search Player
PinRequest (Transfer Market Search Results)

Thanks for sharing your work - I will implement it into a pull request

You welcome, I did the mobile login too some time ago, if you have any questions on that.

Then have a look to my pull request - Maybe you have some comments on it. Would be nice if you know us next time such things, because we did double-work the mobile login :-/

Do you have also the page Ids for mobile pin requests like:
pgid=Hub - Home

nop, sorry.

You are sending the WebApp strings into the companion app right?

pretty much, it didn't occur to me that are different, since all other requests all the same.

By the way - There are a lot of various pin requests I traced:
`
using System;
using System.IO;
using System.Runtime.Serialization;
namespace UltimateTeam.Toolkit.Models
{
///
/// Enumerating Pin Event Ids
///
public enum PinEventId
{
[EnumMember(Value = "Home")]
WebApp_Home,
[EnumMember(Value = "Login")]
WebApp_Login,
[EnumMember(Value = "TOTW")]
TOTW,
[EnumMember(Value = "Generations")]
Generations,
[EnumMember(Value = "Unassigned Items")]
WebApp_UnassignedItems,
[EnumMember(Value = "Transfer Targets")]
WebApp_TransferTargets,
[EnumMember(Value = "Transfer List")]
WebApp_TransferList,
[EnumMember(Value = "Transfer Market Search")]
WebApp_TransferMarketSearch,
[EnumMember(Value = "Transfer Market Search Results")]
WebApp_TransferMarketSearchResults,
[EnumMember(Value = "Squad List - My Squads")]
WebApp_SquadList,
[EnumMember(Value = "Squad List - Concept Squads")]
WebApp_ConceptSquadList,
[EnumMember(Value = "Active Squad")]
WebApp_ActiveSquad,
[EnumMember(Value = "Club - Players")]
WebApp_Players,
[EnumMember(Value = "Club - Staff")]
WebApp_Staff,
[EnumMember(Value = "Club - Items")]
WebApp_Items,
[EnumMember(Value = "Club - Consumables")]
WebApp_Consumables,
[EnumMember(Value = "Leaderboards - Main")]
WebApp_Leaderboards,
[EnumMember(Value = "Leaderboards - Match Earnings")]
WebApp_LeaderboardsEarnings,
[EnumMember(Value = "Leaderboards - Transfer Profit")]
WebApp_LeaderboardsTransferProfit,
[EnumMember(Value = "Leaderboards - Club Value")]
WebApp_LeaderboardsClubValue,
[EnumMember(Value = "Leaderboards - Top Squad")]
WebApp_LeaderboardsTopSquad,
[EnumMember(Value = "Store - Main")]
WebApp_MainStore,
[EnumMember(Value = "Store - Gold")]
WebApp_GoldStore,
[EnumMember(Value = "Store - Silver")]
WebApp_SilverStore,
[EnumMember(Value = "Store - Bronze")]
WebApp_BronzeStore,
    WebApp_AppOpened,
    WebApp_Connect,
    WebApp_Connected,
    [EnumMember(Value = "Hub - Home")]
    CompanionApp_Home,
    [EnumMember(Value = "Hub - Squads")]
    CompanionApp_HubSquads,
    [EnumMember(Value = "Hub - Draft")]
    CompanionApp_HubDraft,
    [EnumMember(Value = "Hub - Transfers")]
    CompanionApp_HubTransfers,
    [EnumMember(Value = "Hub - Store")]
    CompanionApp_HubStore,
    [EnumMember(Value = "Hub - Unassigned")]
    CompanionApp_HubUnassigned,
    [EnumMember(Value = "Unassigned Items - List View")]
    CompanionApp_UnassignedItems,
    [EnumMember(Value = "Transfer Targets - List View")]
    CompanionApp_TransferTargets,
    [EnumMember(Value = "Transfer List - List View")]
    CompanionApp_TransferList,
    [EnumMember(Value = "Store - Pack Category")]
    WebApp_PackCategory,
    [EnumMember(Value = "Store - Pack Details")]
    WebApp_PackDetails,
    [EnumMember(Value = "Club - Players - List View")]
    CompanionApp_Players,
    [EnumMember(Value = "Club - Players - Detail View")]
    CompanionApp_Players_Detailed,
    [EnumMember(Value = "Club - Staff - List View")]
    CompanionApp_Staff,
    [EnumMember(Value = "Club - Staff - Detail View")]
    CompanionApp_Staff_Detailed,
    [EnumMember(Value = "Club - Club Items - List View")]
    CompanionApp_Club,
    [EnumMember(Value = "Club - Club - Detail View")]
    CompanionApp_Club_Detailed,
    [EnumMember(Value = "Club - Club Consumables - List View")]
    CompanionApp_Consumables,
    [EnumMember(Value = "Club - Club - Detail View")]
    CompanionApp_Consumables_Detailed,
    [EnumMember(Value = "EASFC - News")]
    CompanionApp_EASFC_News,
    [EnumMember(Value = "EASFC - News - Preview Squad")]
    CompanionApp_EASFC_PreviewSquad,
}

}
`

@trydis : Could you help me how to call a webrequest within a webrequest:
This is my PinEventRequest:
    internal class PinEventRequest : FutRequestBase, IFutRequest<PinResponse>
    {
        private readonly AppVersion _appVersion;
        private readonly string _nucleusId;
        private readonly string _personaId;
        private readonly string _sessionId;
        private readonly string _currentPinEventId;
        private readonly string _previousPinEventId;

        public PinEventRequest(AppVersion appVersion, string SessionId, string NucleusId, string PersonaId, PinEventId currentPinId, PinEventId previousPinId)
        {
            _appVersion = appVersion;
            _sessionId = SessionId;
            _nucleusId = NucleusId;
            _personaId = PersonaId;
            _currentPinEventId = currentPinId.ToString();
            _previousPinEventId = previousPinId.ToString();
        }

        public async Task<PinResponse> PerformRequestAsync()
        {
            if (_appVersion == AppVersion.CompanionApp)
            {
                AddPinHeadersMobile();
            }
            else if (_appVersion == AppVersion.WebApp)
            {
                AddPinHeaders();
            }
            else
            {
                AddPinHeaders();
            }
            var pinResponseMessage = await HttpClient.PostAsync(string.Format(Resources.PinRiver), new StringContent(Serialize<Pin>(GeneratePinData())))
                .ConfigureAwait(false);

            return await Deserialize<PinResponse>(pinResponseMessage);
        }

I need to call it in example within this request:
    internal class SearchRequest : FutRequestBase, IFutRequest<AuctionResponse>
    {
        private readonly SearchParameters _searchParameters;

        public SearchRequest(SearchParameters searchParameters)
        {
            searchParameters.ThrowIfNullArgument();
            _searchParameters = searchParameters;
        }

        public async Task<AuctionResponse> PerformRequestAsync()
        {
            var uriString = string.Format(Resources.FutHome + Resources.TransferMarket + "?start={0}&num={1}",
                (_searchParameters.Page - 1) * _searchParameters.PageSize, _searchParameters.PageSize + 1);
            _searchParameters.BuildUriString(ref uriString);
            AddMethodOverrideHeader(HttpMethod.Get);
            AddCommonHeaders();
            var searchResponseMessage = await HttpClient
                .PostAsync(uriString, new StringContent(" "))
                .ConfigureAwait(false);

            return await Deserialize<AuctionResponse>(searchResponseMessage);
        }
    }
}

How can I do this without breaking your concept? Thanks!

@tringler: I've just skimmed though the posts, so forgive me if i've missed some details. Will the PinResponse be used for anything inside the SearchRequest?

@trydis No, we just to send the request to fulfil the pin requests like:
    public async Task<AuctionResponse> PerformRequestAsync()
    {
        var uriString = string.Format(Resources.FutHome + Resources.TransferMarket + "?start={0}&num={1}",
            (_searchParameters.Page - 1) * _searchParameters.PageSize, _searchParameters.PageSize + 1);
        _searchParameters.BuildUriString(ref uriString);
        AddMethodOverrideHeader(HttpMethod.Get);
        AddCommonHeaders();

		//SEND PIN REQUEST HERE

		var searchResponseMessage = await HttpClient
            .PostAsync(uriString, new StringContent(" "))
            .ConfigureAwait(false);

		//SEND ANOTHER PIN Request HERE

        return await Deserialize<AuctionResponse>(searchResponseMessage);
    }

It would be nice to check if the 'PinResponse' is OK, but ir's not needed to fulfil. Mostly we need to execute the main request followed by the pin request but sometimes in i,e, in case of Searchrequest or Login it's more special. In example of Mobile Login:
Send PIN Request (WebApp_AppOpened)
MobileLogin until the part of /connect/token
Send PIN Request (App_Connect)
MobileLogin after got Session ID
Send PIN Request (WebApp_Connected)
Send PIN Request (CompanionApp_Home)

Just some brainstorming...
One possibility is adding them in the FutClient class, i.e.:
public Task<AuctionResponse> SearchAsync(SearchParameters searchParameters)
{
    searchParameters.ThrowIfNullArgument();

    // AWAIT PIN REQUEST HERE
    var response = await _requestFactories.SearchRequestFactory(searchParameters).PerformRequestAsync();
    // AWAIT ANOTHER PIN REQUEST HERE
    return response;
}

Another solution could be subclassing the different requests and adding the pin requests where applicable.
I guess it depends whether they're always needed or not. This would force everyone who's using the toolkit to perform those requests, even though we're not sure they're needed?

Hello trydis,
Yes, my first thought was also if this should work out-of-the-box from the toolkit or it should just be another request and the corresponding frontend needs to implement the pin requests. At the end I think sooner or later it's needed / recommended for each session.
I think we should implement it out-of-the-box, but also have the option to add pin as  standard transaction with string as a parameter to call them whatever/wherever we want - Just in case they add a new pin request, we have a have a workaround until the toolkit is fixed.
Maybe we should just add a switch to LoginDetails to enable/disable pin requests?
We can decide then if we want to implement the pin requests by ourself or give the toolkit the job. To be honest I don't know any usecase for this.
Yes, the FutClient.cs was also my first approach, but due to my limited C# experience I was stuck how to send a pin request after the return - Pretty easy :)
I like the FutClient.cs solution, because it's easy to handle in case of pin request changes and nice to maintain.
Then our approach will just like this:
        public async Task<AuctionResponse> SearchAsync(SearchParameters searchParameters)
        {
            searchParameters.ThrowIfNullArgument();
            _requestFactories.AppVersion.ThrowIfNullArgument();

            if (_requestFactories.AppVersion == AppVersion.WebApp)
            {
                var pinResponseMarketSearch = await _requestFactories.SendPinRequestFactory(PinEventId.WebApp_TransferMarketSearch).PerformRequestAsync();
                var searchResponse = await _requestFactories.SearchRequestFactory(searchParameters).PerformRequestAsync();
                var pinResponseMarketSearchResults = await _requestFactories.SendPinRequestFactory(PinEventId.WebApp_TransferMarketSearchResults).PerformRequestAsync();
                return searchResponse;
            }
            else if (_requestFactories.AppVersion == AppVersion.CompanionApp)
            {
                var pinResponseMHubTransfers = await _requestFactories.SendPinRequestFactory(PinEventId.CompanionApp_HubTransfers).PerformRequestAsync();
                var pinResponseTransferlist = await _requestFactories.SendPinRequestFactory(PinEventId.CompanionApp_TransferList).PerformRequestAsync();
                var searchResponse = await _requestFactories.SearchRequestFactory(searchParameters).PerformRequestAsync();
                return searchResponse;
            }
            else
            {
                return null;
            }
        }

As described for LoginMobile we need to divide in PreLoginMobile and PostLoginMobile - Just like:
        public async Task<LoginResponse> LoginAsync(LoginDetails loginDetails, ITwoFactorCodeProvider twoFactorCodeProvider)
        {
            loginDetails.ThrowIfNullArgument();
            _requestFactories.AppVersion.ThrowIfNullArgument();

            if (_requestFactories.AppVersion == AppVersion.WebApp)
            {
                var loginRequest = _requestFactories.LoginRequestFactory(loginDetails, twoFactorCodeProvider);
                var loginResponse = await loginRequest.PerformRequestAsync();
                RequestFactories.PhishingToken = loginResponse.PhishingToken;
                RequestFactories.SessionId = loginResponse.SessionId;
                RequestFactories.NucleusId = loginResponse.NucleusId;
                RequestFactories.PersonaId = loginResponse.PersonaId;

                var pinResponseHome = await _requestFactories.SendPinRequestFactory(PinEventId.WebApp_Home).PerformRequestAsync();

                return loginResponse;
            }
            else if (_requestFactories.AppVersion == AppVersion.CompanionApp)
            {
                var pinResponseMAppOpened = await _requestFactories.SendPinRequestFactory(PinEventId.CompanionApp_AppOpened).PerformRequestAsync();
                var mobilePreloginRequest = _requestFactories.MobilePreLoginRequestFactory(loginDetails, twoFactorCodeProvider);
                var mobilePreloginResponse = await mobilePreloginRequest.PerformRequestAsync();
                var pinResponseConnect = await _requestFactories.SendPinRequestFactory(PinEventId.CompanionApp_Connect).PerformRequestAsync();
                var mobilePostloginRequest = _requestFactories.MobilePostLoginRequestFactory(loginDetails, twoFactorCodeProvider);
                var mobilePostloginResponse = await mobilePostloginRequest.PerformRequestAsync();
                var pinResponseConnected = await _requestFactories.SendPinRequestFactory(PinEventId.CompanionApp_Connected).PerformRequestAsync();
                RequestFactories.PhishingToken = mobilePostloginResponse.PhishingToken;
                RequestFactories.SessionId = mobilePostloginResponse.SessionId;
                RequestFactories.NucleusId = mobilePostloginResponse.NucleusId;
                RequestFactories.PersonaId = mobilePostloginResponse.PersonaId;

                return mobilePostloginResponse;
            }
            else
            {
                return null;
            }
        }

Right? :)

I would just do everything fine, low RPMs, new IPs etc. and still get bans, but since I added pin requests no bans.

Basically I think it's working with any pin requests, but I would like to implement exactly like it's sent by framework.

Thanks for the info @mtdx. It would be great if you could give it a shot @tringler and open a pull request. We can all discuss it there and find a nice solution together :smile:

Ok - I just wanted to be sure I'm not implementing in the complete wrong direction and wasting a lot of hours.

Two additonal GIT questions:
a) I have 3 pull requests open and with that PinRequests pull request I need to change files again, which I already changed with other pull requests.
b) For the last commit to https://github.com/trydis/FIFA-Ultimate-Team-Toolkit/pull/238 I will push that evening I need to change sth in the pull request https://github.com/trydis/FIFA-Ultimate-Team-Toolkit/pull/241
How can I prevent a merge chaos?

As long as the browser makes the calls as an automatic echo the toolkit should do as well by default, but of course with an explicit off flag.

@mtdx
OK - I will implement it like this:
    public class LoginDetails
    {
        public string Username { get; private set; }

        public string Password { get; private set; }

        public string SecretAnswer { get; private set; }

        public Platform Platform { get; set; }

        public AppVersion AppVersion { get; set; }

        public bool SendPinRequests { get; set; }

        public LoginDetails(string username, string password, string secretAnswer, Platform platform, AppVersion appVersion)
        {
            username.ThrowIfInvalidArgument();
            password.ThrowIfInvalidArgument();
            secretAnswer.ThrowIfInvalidArgument();
            Username = username;
            Password = password;
            SecretAnswer = secretAnswer;
            Platform = platform;
            AppVersion = appVersion;
        }

        public LoginDetails(string username, string password, string secretAnswer, Platform platform, AppVersion appVersion, bool sendPinRequests)
        {
            username.ThrowIfInvalidArgument();
            password.ThrowIfInvalidArgument();
            secretAnswer.ThrowIfInvalidArgument();
            Username = username;
            Password = password;
            SecretAnswer = secretAnswer;
            Platform = platform;
            AppVersion = appVersion;
            SendPinRequests = sendPinRequests;
        }
    }

looks good, looking forward to test it since my implementation is so hackish and spaghetti code.

@tringler: The best would probably be to wait until i've merged the 3 existing PRs. Unfortunately it looks like i won't have time until Friday evening.

a) I have 3 pull requests open and with that PinRequests pull request I need to change files again, which I already changed with other pull requests.

Once i've merged the changes you can:

Pull the latest changes from my master branch into your master branch
Create a branch, i.e. "PinEvent" based on the updated master branch

b) For the last commit to #238 I will push that evening I need to change sth in the pull request #241

If i understand correctly, you need to push some changes to #241, because of some changes done in #238? If so, push the needed commit(s) to the branch #241 is based on (tringler:RemoveSoldItems), they will be added to the PR.

How can I prevent a merge chaos?

Let me take a look at it 1st.

@trydis
OK - I will wait for the other PRs - I think I also need a few days to complete the PIN requests branch.
Allright - I will push the last commit to https://github.com/trydis/FIFA-Ultimate-Team-Toolkit/pull/238 AND push an additional commit to https://github.com/trydis/FIFA-Ultimate-Team-Toolkit/pull/241, that is actual with https://github.com/trydis/FIFA-Ultimate-Team-Toolkit/pull/238 - You need to merge the PRs like this: 238-->240-->241

All PRs are ready to merge - I'm waiting for merge now to send the pin request PR then.

Great @tringler, will do it tonight.

@tringler: Like i mentioned in the PRs i've merged them into the vnext branch.
I see that there's some opportunities to refactor the code, so please hold your horses until i've pushed some more commits to the vnext branch. I'll let you know when it's done :smile:
Thanks for the effort so far :+1:

Thanks a lot for your work - By the way I tested all FutClient calls and seen var imageBytes = await client.GetPlayerImageAsync(auctionInfo);
doesn't work anymore, because it generates URIs like:
GET /fifa/fltOnlineAssets/B488919F-23B5-497F-9FC0-CACFB38863D0/2016/fut/items/images/players/web/-2063409001.png
Can you change _auctionInfo.CalculateBaseId() to _auctionInfo.ItemData.AssetId in PlayerImageRequest.cs:
        public async Task<byte[]> PerformRequestAsync(AppVersion appVersion)
        {
            _appVersion = appVersion;

            if (_appVersion == AppVersion.WebApp)
            {
                AddAnonymousHeader();
                return await HttpClient
                    .GetByteArrayAsync(string.Format(Resources.PlayerImage, _auctionInfo.CalculateBaseId()))
                    .ConfigureAwait(false);
            }
            else if (_appVersion == AppVersion.CompanionApp)
            {
                AddAnonymousMobileHeader();
                return await HttpClient
                    .GetByteArrayAsync(string.Format(Resources.PlayerImage, _auctionInfo.CalculateBaseId()))
                    .ConfigureAwait(false);
            }
            else
            {
                return null;
            }

@trydis :
I basically completed my implementation, but I'm struggling with the login pin requests for the companion app. Need I really split up the LoginRequest or do you see a possibility to send the request inside the Loginrequest? It's like:
                // SEND PIN REQUEST

                var mainPageResponseMessage = await GetMainPageAsync().ConfigureAwait(false);
                await LoginAsync(_loginDetails, mainPageResponseMessage);
                var authToken = await GetAuthTokenAsync(_code);
                var pid = await GetMobilePidAsync(authToken.Access_Token);
                _nucUserId = pid.Pid.ExternalRefValue;

               // SEND PIN REQUEST

                var sessionCode = await GetMobileAuthCodeAsync(authToken.Access_Token);
                var authCode = await GetMobileAuthCodeAsync(authToken.Access_Token);
                var powSessionId = await AuthPOWAsync(sessionCode.Code);
                _powSessionId = powSessionId.Sid;

                var nucleusId = await GetMobileNucleusIdAsync();
                _nucPersonaId = nucleusId.UserData.Data.Where(n => n.Sku == GetGameSku(_loginDetails.Platform)).LastOrDefault().NucPersId;
                var shards = await GetMobileShardsAsync();
                var userAccounts = await GetMobileUserAccountsAsync(_loginDetails.Platform);
                var sessionId = await AuthAsync(authCode.Code, nucleusId.UserData.Data.Where(n => n.Sku == GetGameSku(_loginDetails.Platform)).LastOrDefault().NucPersId, GetGameSku(_loginDetails.Platform));
                _sessionId = sessionId.Sid;

                var phishingToken = await ValidateAsync(_loginDetails);

// SEND PIN REQUEST

Ok, but like i mentioned i really want to refactor some of the code before adding more. There is quite a lot of duplicated/unnecessary code, i've started to refactor this as we speak and will push to the vnext branch as i go along. If you want to avoid having to deal with merge conflicts i suggest you wait until i've completed at least the biggest changes.

Yes for sure - I really appreciate that! You should definitely refactor my amateur work into professional code design. I just asked how you would implement that pin requests inside the login process to prevent a completely wrong implementation and prevent more refactoring work for you.

Well, i can at least try to improve it somewhat :smile: I really should have unit tests for everything, but i don't have the json requests/responses for everything.
You could pass the pin request func to the login request in the FutRequestFactoriesclass. Then you can invoke it whenever you need to create a PinEventRequest in the login request.

How can I help you with:

"I really should have unit tests for everything, but i don't have the json requests/responses for everything." ?

To be honest I never got how the unit tests help us in this toolkit.

In cases where EA changes the requests/responses. Then we could add the changed JSON requests/responses to the tests and make sure we handle them correctly, without making actual HTTP requests all the time. That's the whole reason for all the funcstuff as well, to be able simulate requests/responses to the EA servers in the tests. Normally i would just use an IoC container (like Autofac) to wire all the components togehter, but i thought that not many of the consumers of the toolkit would be used to using those. But that's another story :smile:
It also helps with preventing people breaking the toolkit code, when they make changes , but not so much when they're not updated...

Yes, it's just to see how the code would actually handle a response from EA, but at the end of the day you need to test your code with the EA production servers - I mean the unit tests cannot replace a test script against the EA servers.

Sure, they can't replace actual requests. It just makes it easier once you know there's a change. Also it makes it easier to see if changing the code in one place breaks something elsewhere in the code. But they're not very useful as-is, since i'm not playing UT anymore, and not keeping them up-to-date.

Ok - You meant you should have unit tests for everything, because you don't have a FUT account anymore and you are not able to see how a change would affect the code?

No, i have an account, just not using it.
Let's say a JSON response used to be
{"ageInHours":1}

For some reason EA decides to change it to:
{"ageInSeconds":3600}

Someone notices that they toolkit isn't working and grabs the new JSON response.
Without tests i guess the flow would be (for a more complex change): write some code, test it with an actual request, write some more code, test with an actual request, change the code some more, another request etc.
With a unit test we could update the JSON in the test and change the code to handle it correctly, without making any actual requests to the server while coding the solution.

Ok - Got you! I doubt a bit if it's working in the "real world", because often you are struggling with missing headers, sometimes it's needed to call another request before your actual call, etc. - 95% of all requests are pretty simple - Just get the JSON, write the class around it, deserialize it, cross the fingers and send it to EA servers. The unit tests would just help us to ensure if we have a typo or similar in our class.

struggling with missing headers
call another request before your actual call

Yup and it's possible to create a test that verifies this, without sending an actual request to EA. You grab the request/response with a web proxy, now you know what it's supposed to look like until they change it. It's a huge time saver when implementing stuff and safety net when changing the code. After i've changed some of the code now, i have no idea if i've broken something that was working until i actually run requests against the EA servers.
Integration tests are another type of tests, which does actual requests. They are slower to run and harder to implement, since you need to login, sometimes you need certain preconditions for things to work etc. Makes them more brittle.
But enough keystrokes about this, i'd rather spend them writing code :smile:

Update credits on every request
https://github.com/oczkers/fut/pull/173
It would be great to implement same thing

You can do that on the upper layer…
De : A-VORONKIN<EMAIL_ADDRESS>Envoyé : Monday, March 21, 2016 3:53 PM
À : trydis/FIFA-Ultimate-Team-Toolkit<EMAIL_ADDRESS>Objet : Re: [FIFA-Ultimate-Team-Toolkit] PinEvent (#201)
Update credits on every request
oczkers/fut#173 https://github.com/oczkers/fut/pull/173
It would be great to implement same thing
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub https://github.com/trydis/FIFA-Ultimate-Team-Toolkit/issues/201#issuecomment-199324238 https://github.com/notifications/beacon/ACr0iUj8vNe0zmDPgI556Utps3kepAgOks5pvrDggaJpZM4GvnkL.gif

@A-VORONKIN, you already get the updated value in the search response: https://github.com/trydis/FIFA-Ultimate-Team-Toolkit/blob/master/UltimateTeam.Toolkit/Models/AuctionResponse.cs#L11

@trydis
Can you give me a hint how to do this? I just don't get ot how you meant it

You could pass the pin request func to the login request in the FutRequestFactoriesclass. Then you can invoke it whenever you need to create a PinEventRequest in the login request.

@tringler:
// For example purposes, not implementing the actual interface etc.
class PinEventRequest
{
	private string _someParam;

	public PinEventRequest(string someParam)
	{
		_someParam = someParam;
	}

	public async Task<byte> PerformRequestAsync()
	{
               // Fake some actual work
		await Task.Delay(1);
		return 0;
	}
}

// Your login class
class SomeClassUsingPinEventRequest
{
	private Func<PinEventRequest> _pinEventRequestFactory;

	public SomeClassUsingPinEventRequest(Func<PinEventRequest> pinEventRequestFactory)
	{
		_pinEventRequestFactory = pinEventRequestFactory;
	}

	public async Task DoStuff()
	{
		// Do some stuff

		// Create and use pin event request
		await _pinEventRequestFactory().PerformRequestAsync();

		// Do some more stuff

		// Create and use another pin event request
		await _pinEventRequestFactory().PerformRequestAsync();

		// etc...
	}
}

Used like this:
Func<PinEventRequest> pinEventRequestFactory = () => new PinEventRequest("random param value");
var yourLoginClass = new SomeClassUsingPinEventRequest(pinEventRequestFactory);
await yourLoginClass.DoStuff();

Let me know if it doesn't make sense :smile:

Thanks! Working like a charm!
In my implementation:
        public async Task<LoginResponse> PerformRequestAsync(AppVersion appVersion)
        {
            _appVersion = appVersion;

            try
            {
                var pinResponseCompanionAppAppOpened = await _pinEventRequestFactory(PinEventId.CompanionApp_AppOpened).PerformRequestAsync(AppVersion.CompanionApp);

                var mainPageResponseMessage = await GetMainPageAsync().ConfigureAwait(false);
                await LoginAsync(_loginDetails, mainPageResponseMessage);
                var authToken = await GetAuthTokenAsync(_code);
                var pid = await GetMobilePidAsync(authToken.Access_Token);
                _nucUserId = pid.Pid.ExternalRefValue;

                var pinResponseCompanionAppConnect = await _pinEventRequestFactory(PinEventId.CompanionApp_Connect).PerformRequestAsync(AppVersion.CompanionApp);

                var sessionCode = await GetMobileAuthCodeAsync(authToken.Access_Token);
                var authCode = await GetMobileAuthCodeAsync(authToken.Access_Token);
                var powSessionId = await AuthPOWAsync(sessionCode.Code);
                _powSessionId = powSessionId.Sid;

                var nucleusId = await GetMobileNucleusIdAsync();
                _nucPersonaId = nucleusId.UserData.Data.Where(n => n.Sku == GetGameSku(_loginDetails.Platform)).LastOrDefault().NucPersId;
                var shards = await GetMobileShardsAsync();
                var userAccounts = await GetMobileUserAccountsAsync(_loginDetails.Platform);
                var sessionId = await AuthAsync(authCode.Code, nucleusId.UserData.Data.Where(n => n.Sku == GetGameSku(_loginDetails.Platform)).LastOrDefault().NucPersId, GetGameSku(_loginDetails.Platform));
                _sessionId = sessionId.Sid;

                var phishingToken = await ValidateAsync(_loginDetails);

                var pinResponseCompanionAppConnected = await _pinEventRequestFactory(PinEventId.CompanionApp_Connected).PerformRequestAsync(AppVersion.CompanionApp);

                return new LoginResponse(_nucUserId, shards, userAccounts, _sessionId, phishingToken, _nucPersonaId);
            }
            catch (Exception e)
            {
                throw new FutException(string.Format("Unable to login to {0}", appVersion.ToString()), e);
            }

                    if (details.AppVersion == AppVersion.WebApp)
                    {
                        var loginRequest = new LoginRequest(details, twoFactorCodeProvider) { HttpClient = HttpClient, Resources = _webResources };
                        _resources = _webResources;
                        loginRequest.SetCookieContainer(_cookieContainer);
                        return loginRequest;
                    }
                    else if (details.AppVersion == AppVersion.CompanionApp)
                    {
                        var loginRequest = new LoginRequestMobile(details, twoFactorCodeProvider, SendPinRequestFactory) { HttpClient = HttpClient, Resources = _mobileResources };
                        _resources = _mobileResources;
                        loginRequest.SetCookieContainer(_cookieContainer);
                        return loginRequest;
                    }

PinRequest implementation is done. I'm justing waiting that the vnext branch will be merged to master after some people reported that the vnext branch has no errors.

Ok, great. Yeah, i'm depending on others to test the prerelease, since i don't have an app that uses the toolkit to test with at the moment.

is this feature merged to vnext branch?

@a7medit - Nope, I'm waiting until vnext branch is merged to master, to have a clean code base.

Is it possible to share your code so i can test it?

Not really, because I need to refactor the code if vnext is merged into master. So you can fasten it up if you just test the current vnext branch. Once it's completed I will refactor my PinRequest code, send a pr request and then you can test the new vnext branch.

Implemented in https://github.com/trydis/FIFA-Ultimate-Team-Toolkit/pull/260

@trydis  Pls close this issue, because it's implemented in my pull request. Feedback should be made directly in PR thread.


Authorize system index permissions in SecurityIndexAccessEvaluator

Description
SecurityIndexAccessEvaluator was modified  to check  if an accounting trying to access a system index specifically has the "system:admin/system_index" permission for the index, and block the access if it doesn't.
A Permission needs to be set explicitly and a "*" permission will not allow access to the sistem indices.

Category: Enhancement

Why these changes are required?
Extensions do not have the ability to elevate privileges, which means they cannot access system indexes. To overcome this limitation, extensions will require a way to access and store protected metadata.

What is the old behavior before changes and new behavior after changes?

Before: Plugins would elevate privileges to access system indices
After: An account needs to have the additional index permission "system:admin/system_index"  in order to modify indices defined as "System Indices".

Issues Resolved
#2553
Testing
Unit Testing - Added tests to SystemIndexTests.java
Draft PR - Existing tests still need to be updated to account for new beahaviour
Check List

[x] New functionality includes testing
[ ] New functionality has been documented
[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

@samuelcostae where do we stand with this? I just noticed it has not been updated for a few weeks now... was something blocking this work?

@samuelcostae you need to sign-off your commits, otherwise the DCO check will continue blocking this PR.

@samuelcostae Can you please sign-off commits to fix the DCO checks?

I thought I had fixed all, spent a good amount of time today merging after signing the old ones xD, i will double check

@samuelcostae Is this the same as https://github.com/opensearch-project/security/pull/2887 ?  If so can we close this PR out?


Focusable events not being raised with rididbody objects.

Overview
When rigidbody is attached to parent or child gameobject , cursor gaze is not detected where I used  OnFocusEnter() , OnFocusExit(), eventhough IsKinematic selected or not.
Expected Behavior
Gaze should work with rigidbody attached to model.
Actual Behavior
Gaze not working with rigidbody attached to model. parent or child
Steps to reproduce

Added cursor and input manager.
UI attached mesh collider or  box collider .
with collider gaze working fine and able to use methods like OnFocusEnter() or Exit().
When rigidbody attached to the same model gaze not working.
If rigidbody removed , gaze will work again.

Unity Editor Version
2017.2f1
Mixed Reality Toolkit Release Version
2017.2.0

Repro steps?

1.Added cursor and input manager.
2.imported model with mesh collider or  box collider.
3.with collider gaze working fine and able to use methods like OnFocusEnter or Exit.
4.When rigidbody attached to the same model gaze not working.
5.If rigidbody removed means gaze will work again.
*rigidbody used to move the gameobject and check collision.

Duplicate of #1331.  I'll close the other one because it didn't have good repro steps.

Closing issues older than 180 days. If this is still an issue, please reactivate with recent information.


release: jenkins job for bumping VERSION fails

Description of problem
Jenkins job that creates the PRs for bumping VERSION's in repos is failing:
Job:
http://jenkins.katacontainers.io/job/release/build
Jenkinsfile that is used in the job:
https://github.com/kata-containers/packaging/blob/master/Jenkinsfiles/release_pieline/Jenkinsfile
Failure:
<EMAIL_ADDRESS>2<EMAIL_ADDRESS>./git_credential_cache.sh: not found

Taking a look at the history of the Jenkinsfile, I see a change that might have affected the behavior of the job:
https://github.com/kata-containers/packaging/commit/3418d401589d44c1dc6f0de4bad3fd6a40ed29a7

@chavafg
As of to-day, that build job link navigates to a successful build dated May 6,2020 and the job url points to, http://jenkins.katacontainers.io/job/release/121/
It seems the build retention config is set to retain just one job and the older builds have been purged.
And, the blob URL to Jenkinsfile has been renamed since this issue was created.
Just wondering if this issue is valid, still?

hi @mramanathan

Just wondering if this issue is valid, still?

Thanks for remind me closing this. No longer valid, @jcvenegas fixed it.


Add libffi package, needed by Ruby 2.2

I added the libffi package, because is needed by Ruby 2.2. More about in: https://www.ruby-forum.com/topic/6654701
Cheers.

+1

+1

+1

thanks!


MLB support reshape for uneven shards

depends #5599
allow reshapes for uneven split in cases where no data needs to be moved around

Why do you want uneven shards?

good question. there are essentially two new things I want to be able to do. i'm not happy with my approach but i posted because i was feeling stuck.
when sharing wq/wk/wv in attention, we want to shard the projection weights evenly over 6 devices, but then shard along the head dim when doing attention. both of these are uneven shards, but they have a different uneven distribution, and there needs to be a little redistribution in between.
the other is support arbitrary shrinks on MLB access in order to: MLB([8 shards from huggingface weights], axis=hfaxis).shard(six devices, axis=whatever), and have this do the minimal amount of weight movement. my idea is to just have from_sharded shrink the input MLB to the desired weight ranges, and do copy_to_device on that.
both of these cases can also be handled somewhat by having Tensor.cat([lb.copy_to_device(dev) for lb in self.lbs]).shrink(some range) not copy the lbs that are completely shrunk away. i gave this some thought today but it needs more exploration. maybe this stuff is not necessary with that, but involves some messing with the scheduler, especially if we want to avoid copying unnecessary bytes between devices.

can write this better!


Box-shadow and CSS transforms skew not supported? Fiddle provided

Greetings,
http://jsfiddle.net/fuggfuggfugg/q572g6q0/4/ - This is my working example.
Tried searching but was unable to find anything with regards to skewed lines.

updated: http://jsfiddle.net/fuggfuggfugg/q572g6q0/5/

partly working code: http://codepen.io/fuggfuggfugg/pen/QwvvVq

Follow #221 for box shadow.

Thanks.
Another update, this code works for skew. http://codepen.io/fuggfuggfugg/pen/ZYyBRv
My first example used :before & :after which probably isn't supported.

@samsonkhisty What browser(s) are you testing in? IE, for example, apparently doesn't support pseudoelements in its implementation of .getComputedStyle until IE11... Though I see the same issue you're having on Chrome, so you're probably right that it's something not completely implemented in html2canvas..

My very first codepen (http://jsfiddle.net/fuggfuggfugg/q572g6q0/4/) does not work in any browser

transform:skew specified in :before/:after is not applied
Although gradients specified applied in the generated canvas

The latest codepen (http://codepen.io/fuggfuggfugg/pen/ZYyBRv) works perfectly in Chrome, Safari and FF.

IE9: The HTML/CSS is perfect but canvas output on IE9 shows square boxes.
I haven't had the opportunity to test in any latest IE or Opera yet.

I'm also experiencing this issue with css transform.
I'm using a css similar to http://codepen.io/AtomicNoggin/pen/fEish
After digging a little in the code, I have the feeling that it has something to do with the clip definition of the rotated element, but not sure to get the whole.picture.
If the main dev could give me a hint on how to solve this problem, I could give it a try.

@samsonkhisty I just got a chance to check out your codepen example, and it looks fine in IE11 in both "Edge" and IE10 modes. IE9 mode throws some JS errors, though they seem to be coming from codepen itself, not html2canvas. According to their documentation page, they only support IE10+. Can you try with jsFiddle or jsbin?

Duplicate of #221


LDAP Bind: cannot put multiple attr for user filter

Gitea version (or commit ref): 1.3.2+3-g88c363f
Git version:
Operating system: docker container in host Ubuntu 16.04
Database (use [x]):

[ ] PostgreSQL
[ ] MySQL
[ ] MSSQL
[x] SQLite

Can you reproduce the bug at https://try.gitea.io:

[ ] Yes (provide example URL)
[ ] No
[x] Not relevant

Log gist:

Description
We can only use 1 %s in the LDAP user filter. If we try to match both the uid and the mail, the LDAP won't execute the query and will do nothing but show that it couldn't find the user, if you input both the username or the email.
Hence, a filter like this will work
(&(memberOf=cn=gitea,ou=apps,dc=mydomain,dc=com)(uid=%s))

But not this one
(&(memberOf=cn=gitea,ou=apps,dc=mydomain,dc=com)(|(uid=%s)(mail=%s)))

Use %[1]s instead of %s than it should work

!!!
Thank you! I forgot about that!